4種查詢Linux監聽埠的方法


Linux是一個流行的作業系統,被系統管理員、開發者和其他技術愛好者廣泛使用。管理Linux系統的一個重要任務是識別哪些埠正在使用,哪些埠可用。在本文中,我們將討論4種查詢Linux監聽埠的方法。

使用netstat命令

netstat命令是一個強大的工具,它提供有關網路連線、路由表和其他相關統計資訊的詳細資訊。要檢查哪些埠正在監聽,可以使用以下命令:

$ netstat -ltn

此命令將顯示系統上當前正在監聽的所有埠的列表。“-l”選項告訴netstat僅顯示監聽套接字,“-t”指定TCP連線,“-n”顯示埠號而不是將其解析為名稱。

這是一個示例輸出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     

輸出顯示SSH守護程序正在監聽22埠,CUPS列印服務正在監聽631埠。

使用lsof命令

lsof命令(“list open files”的縮寫)是一個強大的工具,可用於列出Linux系統上所有開啟的檔案和網路連線。要查詢哪些埠正在監聽,可以使用以下命令:

$ sudo lsof -i -P -n | grep LISTEN

此命令將顯示系統上所有處於監聽狀態的開啟網路連線的列表。“-i”選項指定我們感興趣的是網路連線,“-P”告訴lsof使用埠號而不是服務名稱,“-n”停用主機名解析。

這是一個示例輸出:

sshd      2269     root    3u  IPv4  11758      0t0  TCP *:22 (LISTEN)
cupsd     2889     root    7u  IPv4  16314      0t0  TCP 127.0.0.1:631 (LISTEN)

輸出顯示SSH守護程序正在監聽22埠,CUPS列印服務正在監聽631埠。

使用ss命令

ss命令是netstat命令的現代替代品,並提供類似的功能。要檢查哪些埠正在監聽,可以使用以下命令:

$ sudo ss -ltn

此命令將顯示系統上當前正在監聽的所有TCP埠的列表。“-l”選項告訴ss僅顯示監聽套接字,“-t”指定TCP連線,“-n”顯示埠號而不是將其解析為名稱。

這是一個示例輸出:

State      Recv-Q Send-Q          Local Address:Port            Peer Address:Port
LISTEN     0      128                       *:22                     *:*
LISTEN     0      5                     127.0.0.1:631                    *:*

輸出顯示SSH守護程序正在監聽22埠,CUPS列印服務正在監聽631埠。

使用nmap命令

nmap命令是一個強大的工具,可用於網路探測、安全掃描和埠掃描。要檢查遠端系統上哪些埠正在監聽,可以使用以下命令:

$ sudo nmap -sS -p- <remote_ip>

此命令將對遠端系統上的所有埠執行TCP SYN掃描,並報告哪些埠已開啟並正在監聽。“-sS”選項告訴nmap使用SYN掃描,這是一種隱蔽的掃描技術,可以躲避一些網路入侵檢測系統。“-p-”選項告訴nmap掃描系統上的所有65535個埠。

這是一個示例輸出:

Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-23 10:00 PDT
Nmap scan report for <remote_ip>
Host is up (0.035s latency).
Not shown: 65534 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   open   http
443/tcp  open   https

輸出顯示遠端系統已開啟並正在監聽22、80和443埠。

使用fuser命令

fuser命令是一個簡單的實用程式,它識別使用特定檔案、目錄或套接字的程序。要使用fuser命令檢查哪些埠正在監聽,請使用以下命令:

$ sudo fuser -n tcp -v 1-65535

此命令將顯示使用TCP埠1到65535的所有程序。讓我們分解命令中使用的選項:

-n tcp 告訴fuser僅顯示TCP連線

-v 告訴fuser顯示更詳細的輸出

fuser命令的輸出將顯示使用TCP埠的程序列表及其相應的PID。

使用lshw命令

lshw命令是一個硬體資訊實用程式,也可用於顯示網路資訊,包括開啟的埠。要使用lshw命令檢查哪些埠正在監聽,請使用以下命令:

$ sudo lshw -class network -short

此命令將顯示系統上網路裝置的列表,以及它們各自的驅動程式和開啟的埠。

使用iptables命令

iptables命令是一個強大的防火牆實用程式,可用於顯示和操作防火牆規則,包括開啟的埠。要使用iptables命令檢查哪些埠正在監聽,請使用以下命令:

$ sudo iptables -L -n

此命令將顯示系統上的當前防火牆規則,包括任何允許透過防火牆的開啟埠。

結論

識別Linux系統上哪些埠正在監聽對於系統管理員、開發人員和安全專業人員來說是一項重要的任務。在本文中,我們討論了四種查詢Linux監聽埠的方法:使用netstat命令、使用lsof命令、使用ss命令和使用nmap命令。每種方法都有其自身的優缺點,您應該選擇最適合您需求的一種。有了這些工具,您可以更好地管理您的Linux系統並確保其安全。

更新於:2023年3月31日

4K+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.