如何查看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,因为端口并没有被开启。
[root@wangxin ~]# systemctl start firewalld
[root@wangxin ~]# lsof -i:8090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23815 root 14u IPv6 1193483 0t0 TCP *:8090 (LISTEN)
[root@wangxin ~]# netstat -anp |grep 8090
tcp6 0 0 :::8090 :::* LISTEN 23815/java
[root@wangxin ~]# firewall-cmd --query-port=8090/tcp
yes
[root@wangxin ~]#
上面的语句可以看到,我们打开了防火墙,分别用三条命令查看了端口的开放情况。
[root@wangxin ~]# firewall-cmd --zone=public --remove-port=8090/tcp --permanent
success
[root@wangxin ~]# firewall-cmd --reload
success
[root@wangxin ~]# lsof -i:8090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23815 root 14u IPv6 1193483 0t0 TCP *:8090 (LISTEN)
[root@wangxin ~]# netstat -anp |grep 8090
tcp6 0 0 :::8090 :::* LISTEN 23815/java
[root@wangxin ~]# firewall-cmd --query-port=8090/tcp
no
我关闭了8090端口,重新加载防火墙设置,发现用lsof 和netstat 仍旧可以查看当前端口号占用情况,但是不能查看是否开放,需要用第三条命令。
[root@wangxin ~]# systemctl stop firewalld
[root@wangxin ~]# firewall-cmd --query-port=8090/tcp
FirewallD is not running
[root@wangxin ~]# netstat -anp |grep 8090
tcp6 0 0 :::8090 :::* LISTEN 23815/java
[root@wangxin ~]# lsof -i:8090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23815 root 14u IPv6 1193483 0t0 TCP *:8090 (LISTEN)
本文详细介绍了如何在Linux服务器上查看并管理端口开放状态。通过`firewall-cmd`命令可以添加、移除端口并使其永久生效,使用`firewall-cmd --query-port`检查端口是否开放。同时,`lsof`和`netstat`命令虽然能显示端口占用情况,但不能确认端口是否真正开放。防火墙的状态对于远程服务的连接至关重要,关闭防火墙或未开启相应端口可能会导致服务无法访问。
665

被折叠的 条评论
为什么被折叠?



