作者:布丁可爱_997 | 来源:互联网 | 2023-07-21 18:56
【Linux】常用操作-网络判断端口是否开启监听最常用的操作,常用于判断我们的程序是否成功监听端口,或者判断端口是否被占用。ss命令(aptinstallnetcat)
网络
判断端口是否开启监听
最常用的操作,常用于判断我们的程序是否成功监听端口,或者判断端口是否被占用。
ss
命令(apt install netcat
)
ss -antlup | grep 80
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:8081 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:8082 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:8083 0.0.0.0:*
netstat
命令
netstat -na | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 10.0.4.2:35916 52.184.217.56:443 TIME_WAIT
tcp 0 0 10.0.4.2:39226 204.79.197.219:443 ESTABLISHED
tcp 0 0 10.0.4.2:44606 52.184.216.174:443 ESTABLISHED
判断远程端口能否连接
有时可能我们的服务程序已经监听端口了,但是客户端仍无法访问,此时可能是防火墙禁止访问,此时我们可以在客户端测试端口是否能够建立连接。
nc -v hostname port
nc -v www.baidu.com 443
DNS fwd/rev mismatch: www.a.shifen.com != www.baidu.com
Warning: inverse host lookup failed for 110.242.68.3: Unknown host
www.a.shifen.com [110.242.68.4] 443 (https) open
nc -nvw 3 ip port
nc -nvw 3 110.242.68.4 80
(UNKNOWN) [110.242.68.4] 80 (https) open
注:-v
表示详细信息。-n
表示不进行 DNS 解析,相当于直接输入 ip 作为主机名。-w
表示设置超时时间。
测试防火墙是否开启
有时候我们设置防火墙规则希望屏蔽某些端口,但是我们要部署的服务并未运行,此时我们希望知道防火墙是否成功屏蔽或放行某些端口。
假设我们要屏蔽 server 的 8080 端口。我们可以借助 nc
工具对 8080 端口进行监听。
worker@server $ nc -lvp 8080
listening on [any] 8080 ...
注:-l
表示监听模式。-p
表示设置监听端口。
此时在 client 上同样使用 nc
工具对 server 的 8080 端口进行测试连接。
worker@client $ nc -v server-host 8080
(server-host) [110.110.110.110] 8080 (?) open
worker@client $ nc -v server-host 8080
(server-host) [110.110.110.110] 8080 (?) : Connection refused
如果显示 open 则表示端口未被屏蔽,此时再次进行 nc 测试,会发现 Connection refused
,因为 nc 的监听模式默认只会监听一次,如果希望持续监听,可以使用 -k
参数。
worker@client $ nc -v server-host 8080
(server-host) [110.110.110.110] 8080 (?) : Connection timed out
如果是 Connection timed out
则表示端口屏蔽成功。
系统信息
查看发行版信息
文件 /etc/os-release
与 /usr/lib/os-release
通过键值对的方式记录了操作系统的版本信息,二者内容一摸一样,前者是后者的软链接。它们的内容可以直接嵌入 shell 文件中。
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"