登入伺服器後,我使用 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