如何检查在Linux中打开的端口

时间:2019-11-20 08:53:43  来源:igfitidea点击:

在Linux中,如何查看系统打开了哪些端口?

什么是TCP和UDP端口?

端口是0到65535之间的16位数字。
例如,OpenSSH服务器使用TCP端口号22。
所以22端口号是识别sshd(OpenSSH服务器)进程的一种方法。

端口号

一般情况下

  • 常用服务的端口是从" 0"到" 1023"的端口。
  • 注册的端口是从" 1024"到" 49151"的端口。
  • 动态端口和专用端口是从" 49152"到" 65535"的端口。

注册端口是由互联网号码分配机构(IANA)分配并存储在/etc/services文件中的网络端口。

查看端口号和服务映射:

cat /etc/services
grep -w '80/tcp' /etc/services
grep -w '443/tcp' /etc/services
egrep -w '22/(tcp|udp)' /etc/services

使用netstat查看Linux中打开的端口

执行以下netstat命令

sudo netstat -tulpn | grep LISTEN

可以看到cupsd进程在地址127.0.0.1打开了TCP端口631
而sshd进程在所有IP地址上打开了TCP端口22:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name 
tcp   0      0      127.0.0.1:631           0.0.0.0:*               LISTEN      0          43385      1821/cupsd  
tcp   0      0      0.0.0.0:22              0.0.0.0:*               LISTEN      0          44064      1823/sshd

其中

  • -t:查看所有TCP端口
  • -u:查看所有UDP端口
  • -l:显示监听服务器套接字
  • -p:显示每个套接字所属的程序的PID和名称
  • -n:不解析名字

使用ss查看打开的端口

ss命令用于转储套接字统计信息。

语法为:

sudo ss -tulpn

使用lsof命令侦听端口和应用程序

使用lsof命令检查打开的TCP和UDP端口:

sudo lsof -i -P -n | grep LISTEN

其中

  • -i:寻找列表端口
  • -P:禁止将网络文件的端口号转换为端口名。
  • -n:不使用DNS名称

nmap命令

可以使用nmap命令查看Linux中打开的端口号:

$ sudo nmap -sT -O localhost
$ sudo nmap -sU -O 192.168.2.254 ##[ list open UDP ports ]##
$ sudo nmap -sT -O 127.0.0.1 ##[ list open TCP ports ]##
$ sudo nmap -sTU -O 192.168.2.24