了解系統中哪些IP地址和端口號正在使用,對于排查網絡故障、確保系統安全以及優化網絡性能至關重要
本文將詳細介紹幾種常用的Linux命令,幫助你高效地查看和管理IP端口號
一、引言 在Linux系統中,端口號用于區分不同的網絡服務
每個正在運行的網絡服務都會綁定到一個或多個端口上,這些端口號在TCP/IP協議棧中用于區分不同的通信通道
了解哪些端口正在被使用,以及它們對應的IP地址,是確保系統安全、排查網絡問題的基礎
二、常用命令介紹 1.netstat netstat(network statistics)是一個強大的網絡工具,用于顯示網絡連接、路由表、接口統計信息、偽裝連接以及多播成員資格等信息
要查看系統中正在使用的端口和對應的IP地址,可以使用以下命令: bash netstat -tuln -`-t`:顯示TCP端口
-`-u`:顯示UDP端口
-`-l`:僅顯示監聽狀態的端口
-`-n`:以數字形式顯示地址和端口號,避免DNS解析延遲
例如,運行上述命令后,你可能會看到類似以下的輸出: plaintext Active Internet connections(onlyservers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN udp 0 0 0.0.0.0:123 0.0.0.0: tcp6 0 0 :::80 ::: LISTEN 這里顯示了系統中正在監聽的TCP和UDP端口,以及它們對應的本地地址和狀態
2.ss ss(socket statistics)是`netstat`的現代替代品,提供了更詳細、更快速的輸出
`ss`命令能夠顯示關于套接字(sockets)的詳細信息,包括TCP、UDP、RAW和UNIX域套接字
要查看系統中正在使用的端口和對應的IP地址,可以使用以下命令: bash ss -tuln 參數含義與`netstat`類似: -`-t`:顯示TCP端口
-`-u`:顯示UDP端口
-`-l`:僅顯示監聽狀態的端口
-`-n`:以數字形式顯示地址和端口號
`ss`命令的輸出格式與`netstat`相似,但通常更快,因為它直接訪問內核中的套接字信息,而不是通過`/proc/net`文件
3.lsoft lsof(list open files)是一個列出當前系統打開文件的工具
由于在網絡編程中,套接字也被視為文件,因此`lsof`也可以用于查看網絡端口的使用情況
要查看系統中正在使用的端口和對應的IP地址,可以使用以下命令: bash lsof -i -P -n -`-i`:顯示與網絡相關的文件(即套接字)
-`-P`:顯示端口號而不是服務名
-`-n`:顯示IP地址而不是主機名
例如,運行上述命令后,你可能會看到類似以下的輸出: plaintext COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1234 root 3u IPv4 12345 0t0 TCP:22 (LISTEN) nginx 5678 www-data 6u IPv4 67890 0t0 TCP:80 (LISTEN) 這里顯示了正在監聽特定端口的進程信息,包括進程ID、用戶、文件描述符、套接字類型、設備號、節點號以及具體的網絡地址和端口號
4.nmap nmap(network mapper)是一個網絡掃描工具,用于發現網絡上的主機和服務
雖然`nmap`主要用于掃描遠程主機,但它也可以用于掃描本地主機上的開放端口
要掃描本地主機上的開放端口,可以使用以下命令: bash nmap -sT -O localhost -`-sT`:執行TCP連接掃描
-`-O`:嘗試檢測操作系統類型(對于本地掃描可能不是必需的)
`nmap`的輸出將包括每個開放端口的詳細信息,以及可能的操作系統和服務標識
5.fuser fuser命令用于顯示哪些進程正在使用指定的文件或套接字
要查看特定端口上正在運行的進程,可以使用以下命令: bash fuser -n tcp 22 -`-n`:指定協議類型(如tcp或udp)
-`22`:要檢查的端口號
例如,運行上述命令后,你可能會看到類似以下的輸出: plaintext 22/tcp: 1234 這里顯示了正在使用TCP端口22的進程ID(PID)
三、實際應用場景 1.排查網絡故障 當網絡服務出現問題時,使用上述命令可以快速定位哪些端口和IP地址正在使用,以及它們對應