登录到服务器后,我使用 netstat 检查该服务器的端口,并想找到哪个端口正在与我通信
我的IP是143.248.143.198,我的搜索结果如下:
[kwagjj@James5 ~]$ netstat | grep 143.248.143.198
tcp 0 52 James5:smakynet 143.248.143.198:49690 ESTABLISHED
[kwagjj@James5 ~]$ netstat | smakynet
smakynet: Command not found.
[kwagjj@James5 ~]$ netstat | grep smakynet
tcp 0 0 James5:smakynet 143.248.143.199:49573 ESTABLISHED
tcp 0 0 James5:smakynet 143.248.143.198:49690 ESTABLISHED
tcp 0 0 James5:smakynet 143.248.143.212:51070 ESTABLISHED
tcp 0 0 James5:smakynet 143.248.143.210:9693 ESTABLISHED
tcp 0 0 James5:smakynet 143.248.143.217:azeti ESTABLISHED
tcp 0 0 James5:smakynet 143.248.143.216:51892 ESTABLISHED
tcp 0 0 James5:smakynet 143.248.143.210:10599 ESTABLISHED
我尝试查看 James5:smakynet 是否通向其他端口,但看起来我这边的端口仅与“James5:smakynet”通信。
有谁知道这个“smakynet”是什么?这是做什么的?我用谷歌搜索了它,但它没有给我任何正确的信息。
答案1
每当您无法按名称识别端口时,您可以查看grep
该/etc/services
名称是否在那里定义。在我的 Linux 系统上,smakynet 是 TCP/UDP 122。
grep smakynet /etc/services
用于man netstat
了解哪些开关可用于揭示更多信息。在这种情况下,使用有助于查找有关进程 ID 的更多信息的开关。
netstat -tulpn | grep smakynet
现在您可以看到哪个进程使用该端口。您将得到如下例所示的输出。
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1565/cupsd
上面,cupsd
是用PID 1565打开的;它使用 TCP 端口 631。
这应该有助于识别哪个程序正在使用该端口。我不知道为什么 smakynet 被列在/etc/services
;不过,大胆猜测一下,它可能是一个古老的协议,或者可能是在互联网号码分配机构并且从未发展起来。
那么,您发现哪个程序在哪个操作系统上使用 smakynet 端口?
答案2
netstat
通常使用-n
和开关运行更有用,-p
这样您就可以在输出中看到哪个进程正在侦听或使用给定端口netstat
。
例子
$ sudo netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1406/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13203/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1628/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1506/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1712/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 13203/nginx
tcp 0 0 0.0.0.0:35171 0.0.0.0:* LISTEN 1424/rpc.statd
tcp 0 0 192.168.1.228:80 209.190.113.82:36019 ESTABLISHED 13307/nginx
tcp 0 0 192.168.1.228:80 192.168.1.1:58845 TIME_WAIT -
tcp 0 0 192.168.1.228:22 192.168.1.7:52418 ESTABLISHED 2382/sshd
tcp 0 0 192.168.1.228:443 209.190.113.82:46600 TIME_WAIT -
tcp 0 0 :::111 :::* LISTEN 1406/rpcbind
tcp 0 0 :::22 :::* LISTEN 1628/sshd
tcp 0 0 ::1:631 :::* LISTEN 1506/cupsd
tcp 0 0 ::1:25 :::* LISTEN 1712/master
tcp 0 0 :::37115 :::* LISTEN 1424/rpc.statd
nginx
在这里我们可以看到端口 80 和 443 被一个进程在 2 个接口上使用,0.0.0.0
并且192.168.1.228
.第二个 IP 是与该系统上的以太网端口关联的 IP,该 IP0.0.0.0
很特殊,表示服务器守护程序nginx
将会绑定到该设备上存在的任何和所有接口。
网络接口
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 54:52:00:ff:ff:f1 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.228/24 brd 192.168.1.255 scope global eth0
inet6 fe80::5652:ff:feff:fff1/64 scope link
valid_lft forever preferred_lft forever