netstat

  1. $ netstat -tulpn

netstat命令各个参数说明如下:

  • -t (tcp) 仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化为数字
  • -l 仅列出在Listen(监听)的服务状态
  • -p 显示建立相关链接的程序名

即可显示当前服务器上所有端口及进程服务,与grep结合可查看某个具体端口及服务情况。

  1. $ netstat -nlp | grep LISTEN //查看当前所有监听端口
  2. $ netstat -nlp | grep 80 //查看所有80端口使用情况
  3. $ netstat -an | grep 3306 //查看所有3306端口使用情况

如果有些进程看不见,如只显示”-”,可以尝试用root用户执行该命令或加sudo。

ss

在有些Linux系统上(比如Ubuntu 20.04)netstat命令已经被废除了,取而代之的是ss命令,参数与netstat基本一致。

  1. sudo ss -tulpn

lsof

如果想看某个端口的信息,使用lsof命令。lsof(list open files)是一个列出当前系统打开文件的工具。
lsof 查看端口占用语法格式:
lsof -i:端口号
如查看端口22,可以看到是sshd命令在使用。

  1. $ sudo lsof -i:22
  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3. sshd 2198 root 3u IPv4 13495112 0t0 TCP *:ssh (LISTEN)
  4. sshd 2198 root 4u IPv6 13495114 0t0 TCP *:ssh (LISTEN)

nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。

监听TCP端口

nc可以作为server端启动一个tcp的监听。
在A机器上启动一个端口监听,比如 9999端口(注意:下面的-l 是小写的L,不是数字1)

  1. $ nc -l 9999

然后测试B机器是否可以访问A机器启动的端口。

  1. # telnet 192.168.1.120 9999
  2. Trying 192.168.1.120...
  3. Connected to 192.168.1.120.
  4. Escape character is '^]'.

此时在B机器上敲的内容会显示在A机器上,如果要退出,按Ctrl+]退出连接到telnet命令行,然后输入quit回车退出。

监听UDP端口

如果要监听udp端口,可以用下面的命令:

  1. $ nc -ul 9998

由于udp的端口无法在客户端使用telnet去测试,我们可以使用nc命令去扫描(telnet是运行于tcp协议的)。u表示udp端口,v表示可视化输出,z表示扫描时不发送数据。

  1. $ nc -vuz 192.168.1.120 9998
  2. Connection to 192.168.1.120 9998 port [udp/*] succeeded!

上面在B机器扫描此端口的时候,看到A机器下面出现一串XXXXX字符串。

  1. $ nc -ul 9998
  2. XXXXX