Linux服务器端口放行问题 ,最近在用Docker装一个应用过程中遇到服务器端口无法访问的问题,防火墙关闭了安全组也放行了,但是站长工具端口依然显示未开启,虽然最终解决了问题,但是过程真的是很曲折,百度都快百度烂了,最后发现自己坑自己,主要还是理解不够(就是太菜了 Ծ‸Ծ )下面专门记录一下,方便以后回来爬坑。
1.问题描述及解决
1.1 问题复现
我们以1234端口为例,先去阿里云后台自带的防火墙进行放行
然后在终端关闭防火墙,并确认关闭了
这时候我们使用站长之家的端口检测工具进行端口检测
这是我的一台测试服务器,所以ip直接放出来了,可以看到显示关闭
那我们再去终端开启防火墙并开放1234端口,命令依次如下
systemctl start firewalld
firewall-cmd --zone=public --add-port=1234/tcp --permanent
添加之后重启一下防火墙,使刚刚的添加生效
firewall-cmd --reload
查看所有开放的端口,确认1234添加成功
firewall-cmd --permanent --zone=public --list-ports
我们再去站长工具那边检测一下
仍然是关闭状态
1.2 解决办法
我这个时候用我另一台服务器,使用telnet命令经行端口检测,telnet安装命名
yum install telnet
telnet命令使用格式
telnet ip port
我们先来测试一个正常端口 8848
telnet 39.105.173.178 8848
站长工具也去测试一下
确认都是正常的,那么我们接着分析 1234 端口
[root@Yremp ~]# telnet 39.105.173.178 1234
Trying 39.105.173.178...
telnet: connect to address 39.105.173.178: Connection refused
Connection refused 其实就是这个端口没有被监听,再说的简单点这个端口其实已经可以访问了只不过你的服务器没有应用运行在这个端口(没有监听这个端口)
如果我们去防火墙删除对这个端口的放行
firewall-cmd --zone=public --remove-port=1234/tcp --permanent
重启防火墙使上面的删除端口生效
firewall-cmd --reload
此时在我另一台服务器继续使用telnet命令检测1234端口
[root@Yremp ~]# telnet 39.105.173.178 1234
Trying 39.105.173.178...
telnet: connect to address 39.105.173.178: No route to host
No route to host 这个才是真正被防火墙拦截,出现这种情况就需要检查服务器后台的防火墙或者服务器本身的防火墙是否放行了目标端口,下面我们先开启这个端口的访问
此时我去docker运行一个容器监听1234端口(过程省略),完成之后再次测试
这个时候端口已经正常访问了,用站长工具进行测试
1.3 爬坑总结
尽量不要用站长工具检测端口,因为无论是防火墙拦截还是端口为被监听都是会显示端口未开启,容易误以为端口是被防火墙拦截
可以使用telnet命令检测,具体的使用上面已经演示过了,下面再贴两个图说明一下
- 重要的事情说三遍,不要用站长工具的端口检测!!!
- 重要的事情说三遍,不要用站长工具的端口检测!!!
- 重要的事情说三遍,不要用站长工具的端口检测!!!
2.CentOS 防火墙常用命令
CentOS7常用的防火墙命令,为什么是CentOS7是因为CentOS6和之前都是iptables,到了CentOS7变成了firewall。
2.1 查看防火墙状态:
firewall-cmd --state
2.2 启动防火墙
systemctl start firewalld
2.3 关闭防火墙
systemctl stop firewalld
2.4 检查防火墙开放的端口
firewall-cmd --permanent --zone=public --list-ports
2.5 开放一个新的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
2.6 重启防火墙
firewall-cmd --reload
2.7验证新增加端口是否生效
firewall-cmd --zone=public --query-port=8080/tcp
2.8 防火墙开机自启动
systemctl enable firewalld.service
2.9 禁用防火墙开机自启动
systemctl disable firewalld.service
2.10 防火墙取消某一开放端口
firewall-cmd --zone=public --remove-port=9200/tcp --permanent
标签云
ajax AOP Bootstrap cdn Chevereto CSS Docker Editormd GC Github Hexo IDEA JavaScript jsDeliver JS樱花特效 JVM Linux Live2D markdown Maven MyBatis MyBatis-plus MySQL Navicat Oracle Pictures QQ Sakura SEO Spring Boot Spring Cloud Spring Cloud Alibaba SpringMVC Thymeleaf Vue Web WebSocket Wechat Social WordPress Yoast SEO 代理 分页 图床 小幸运 通信原理
Comments | 2 条评论
博客作者 bugb
淘宝空包、京东空包、拼多多空包购买就认准88快递单号网www.88danhaowang.com
博客作者 thbd
免费提供拼多多空包、京东单号网www.uudanhaowang.com