Linux 端口及防火墙操作

查看端口操作

一. netstat命令

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

1. netstat -anp | grep <端口号>

例如查看 8080 端口:

[root@vm-test ~]# netstat -anp |grep 8080
tcp        0      0 0.0.0.0:8080              0.0.0.0:*               LISTEN      37573/nginx: master 
unix  2      [ ACC ]     STREAM     LISTENING     41803    5447/dbus-daemon     @/tmp/dbus-fkHBmL2aV7
unix  2      [ ACC ]     STREAM     LISTENING     33380    4601/master          private/tlsmgr
unix  3      [ ]         STREAM     CONNECTED     44271    5802/gsd-screensave  
unix  3      [ ]         STREAM     CONNECTED     44277    5802/gsd-screensave  

2. netstat -tunlp

查看所有已经使用的端口情况“State”状态为“LISTEN”

[root@vm-test ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      37573/nginx: master 
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      4988/X              
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      4849/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      4336/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      4329/cupsd          

二. lsof命令

lsof -i:8080         查看8080端口占用
lsof abc.txt         显示开启文件abc.txt的进程
lsof -c abc          显示abc进程现在打开的文件
lsof -c -p 1234      列出进程号为1234的进程所打开的文件
lsof -g gid          显示归属gid的进程情况
lsof +d /usr/local/  显示目录下被进程开启的文件
lsof +D /usr/local/  同上,但是会搜索目录下的目录,时间较长
lsof -d 4            显示使用fd为4的进程
lsof -i -U           显示所有打开的端口和UNIX domain文件

1. lsof -i : <端口号>

[root@vm-test ~]# lsof -i:8080
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx   37573   root    6u  IPv4 2282898      0t0  TCP *:http (LISTEN)
nginx   37574 nobody    6u  IPv4 2282898      0t0  TCP *:http (LISTEN)

防火墙操作

1. 查看防火墙状态

命令 说明
systemctl status firewalld 查看防火墙状态
systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
service firewalld start 开启防火墙

若遇到无法开启
先用:systemctl unmask firewalld.service
然后:systemctl start firewalld.service

2. 查询指定端口是否已开

yes表示开启,no表示未开启

[root@vm-test ~]# firewall-cmd --query-port=8080/tcp
no

3. 开放指定端口

添加指定需要开放的端口

[root@vm-test ~]# firewall-cmd --add-port=8080/tcp --permanent

重载入添加的端口

[root@vm-test ~]# firewall-cmd --reload

查询指定端口是否开启成功

[root@vm-test ~]# firewall-cmd --query-port=8080/tcp

4. 移除指定端口

移除指定端口

[root@vm-test ~]# firewall-cmd --permanent --remove-port=8080/tcp