如何查看linux服务器端口号有没有被开启?
程序员文章站
2022-04-30 23:06:38
...
如何查看linux服务器端口号有没有被开启?
端口号的开启:
firewall-cmd --zone=public --add-port=8090/tcp --permanent
端口号的关闭:
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
可以替换端口号, --permanent 参数是永久生效,不随重启服务器而失效,
修改端口后需要
firewall-cmd --reload
重新加载防火墙配置来生效。
重点来了:
firewall-cmd --query-port=8090/tcp
这一条命令可以查看防火墙有没有开放当前端口,返回yes是开启,no是未开启,若是返回FirewallD is not running则说明防火墙是关闭状态。
接下来我们做一个实验,根据网上的搜索结果,大多数都是用
lsof -i:端口号 或者netstat -anp |grep 端口号来查看,
这两个命令只能查看端口号当前有没有被占用,并不能看到有没有开放,比如你本地运行了一个mysql,3306被mysql占用,但是3306为开启,所以你用第三方连接工具还是连接不上mysql,因为端口并没有被开启。
[[email protected] ~]# systemctl start firewalld
[[email protected] ~]# lsof -i:8090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23815 root 14u IPv6 1193483 0t0 TCP *:8090 (LISTEN)
[[email protected] ~]# netstat -anp |grep 8090
tcp6 0 0 :::8090 :::* LISTEN 23815/java
[[email protected] ~]# firewall-cmd --query-port=8090/tcp
yes
[[email protected] ~]#
上面的语句可以看到,我们打开了防火墙,分别用三条命令查看了端口的开放情况。
[[email protected] ~]# firewall-cmd --zone=public --remove-port=8090/tcp --permanent
success
[[email protected] ~]# firewall-cmd --reload
success
[[email protected] ~]# lsof -i:8090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23815 root 14u IPv6 1193483 0t0 TCP *:8090 (LISTEN)
[[email protected] ~]# netstat -anp |grep 8090
tcp6 0 0 :::8090 :::* LISTEN 23815/java
[[email protected] ~]# firewall-cmd --query-port=8090/tcp
no
我关闭了8090端口,重新加载防火墙设置,发现用lsof 和netstat 仍旧可以查看当前端口号占用情况,但是不能查看是否开放,需要用第三条命令。
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# firewall-cmd --query-port=8090/tcp
FirewallD is not running
[[email protected] ~]# netstat -anp |grep 8090
tcp6 0 0 :::8090 :::* LISTEN 23815/java
[[email protected] ~]# lsof -i:8090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23815 root 14u IPv6 1193483 0t0 TCP *:8090 (LISTEN)