了解系统中哪些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地址正在使用,以及它们对应