排查云主机端口不通(防火墙)

文章描述了一位用户在云主机上遇到HTML页面无法访问的问题,通过排查安全组设置、Apache服务、端口状态、防火墙规则等,最终发现是iptables防火墙配置未保存导致的。用户执行了添加规则并保存到配置文件中,然后重启服务使得80端口开放,成功解决了问题。

1.背景

在云主机上写了一个很简单的html页面,预期能通过IP+端口查看下页面的样子,但是发现访问异常,(该主机效期足够,绑过域名,曾经http\s都正常)。

2.排查步骤

2.1.安全组已开放端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WSyKCMky-1688229893229)(https://cdn.yyxyy.top/img/20230701210406.png?yaong)]

2.2.查看apache进程

ps aux | grep apache

2.3.查看主机端口使用情况

2.4.查看httpd服务

systemctl status httpd

2.5.查看防火墙状态

systemctl status firewalld

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9gBrxzfZ-1688229893312)(http://cdn.yyxyy.top/img/img/20230615212044-1752d8f7c8a2a6e9c39835b82e33c415-20230615212044-12915a.png?yaong)]

2.6.访问主机80端口

无法访问此网站114.*.*.206 的响应时间过长。
请试试以下办法:
检查网络连接
检查代理服务器和防火墙
ERR_CONNECTION_TIMED_OUT

2.7.从另外一台主机查看端口

yum install -y nmap
[root@yaong sysconfig]# nmap -p 80 114.*.*.206
Starting Nmap 6.40 ( http://nmap.org ) at 2023-06-15 21:10 CST
Nmap scan report for yaung (114.*.*.206)
Host is up (0.0061s latency).
PORT   STATE    SERVICE
80/tcp filtered http

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CX4OtTb9-1688229893314)(http://cdn.yyxyy.top/img/img/20230615211213-91b694634c5e344c687bf4d438ce862e-20230615211212-d365b3.png?yaong)]

2.8.查看iptables

cat /etc/sysconfig/iptables

2.9.查看防护墙过滤规则

iptables -nvL

2.10.增加规则

2.10.1.准许接受80端口的访问请求

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

2.10.2.再次访问主站


首页正常显示,访问通了

2.10.3.再次查看防火墙配置

cat /etc/sysconfig/iptables

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jL8RLd2w-1688229893318)(http://cdn.yyxyy.top/img/img/20230615213017-7925b3ede95c6d6e5654a2e312db7172-20230615213017-9997f6.png?yaong)]
没有新增规则

2.10.4.另一台主机查询端口状态

nmap -p 80 114.*.*.206

Host is up (0.0055s latency).
PORT   STATE SERVICE
80/tcp open  http

2.11.保存防火墙规则

2.11.1.对防火墙服务进行保存,再查看防火墙配置

service iptables save
cat /etc/sysconfig/iptables

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1gEQ5iR0-1688229893320)(http://cdn.yyxyy.top/img/img/20230615213915-3eb21aac3f245a852049d551464c6a09-20230615213914-3df8c4.png?yaong)]

2.11.2.发现多了一行配置

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

*** 说明: ***
*** 1.终端执行放行80请求的命令只是针对当前运行环境(临时)生效,并没有记录到配置文件;假如服务器重启,问题端口将依然受限。 ***
*** 2.在防火墙规则改变后,save命令将保存环境中的过滤规则到防火墙配置表,规则将永久生效。***

2.11.3.附带两种服务重启的方式

service iptables restart
/etc/init.d/iptables restart 

3.结论

问题很简单,就是想不到,好在有大家,问题解决掉。

### 如何在阿里云服务器上开启防火墙端口 要在阿里云服务器上成功开启防火墙端口,需完成两个主要部分的操作:一是配置阿里云的安全组规则;二是调整操作系统层面的防火墙设置。 #### 1. 配置阿里云安全组规则 阿里云的安全组是一个虚拟防火墙,用于控制进出实例的流量。要允许特定端口(如8889)被外部访问,需要在安全组中添加相应的入方向规则[^3]: - 登录阿里云管理控制台。 - 进入 **ECS 实例管理页面**,找到目标实例所属的安全组。 - 编辑安全组规则,在入方向新增一条规则: - 协议类型:TCP - 端口范围:8889/8889 - 授权对象:0.0.0.0/0 (表示允许所有 IP 访问) 此操作完成后,安全组已允许外部通过该端口访问实例[^2]。 #### 2. 调整操作系统防火墙设置 即使完成了安全组配置,仍可能因本地防火墙开放对应端口而导致无法正常通信。以下是针对 CentOS 7 的具体步骤[^4]: - 使用 SSH 工具登录到您的阿里云服务器。 - 检查当前防火墙状态: ```bash systemctl status firewalld ``` - 如果防火墙处于运行状态,则执行以下命令以永久开放所需端口(例如 8889): ```bash firewall-cmd --add-port=8889/tcp --permanent ``` - 刷新防火墙配置使其生效: ```bash firewall-cmd --reload ``` 对于其他 Linux 发行版或 Windows Server,其防火墙配置方式有所不同,但原理一致——即确保所使用的端口已被显式开放[^5]。 经过上述两项设置之后,理论上即可实现对外提供基于自定义端口的服务支持。如果仍然存在问题,请进一步排查网络环境是否存在额外限制因素。 ```python import socket def test_port(host, port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) result = sock.connect_ex((host, port)) if result == 0: print(f"Port {port} is open.") else: print(f"Port {port} is closed.") test_port('your_server_ip', 8889) ``` 以上脚本可用于测试指定主机上的某个端口是否真正可用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值