需先确认Web服务已监听80端口,再用sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT插入规则至INPUT链首,避免被前置DROP拦截,随后按系统差异保存规则(如Ubuntu用netfilter-persistent save,CentOS用service iptables save),并同步检查云平台安全组策略。

直接加一条允许 TCP 流量进入 80 端口的规则,再保存生效即可。关键不是“加规则”,而是确保规则在 INPUT 链里、协议和端口写对、重启或重载后持久化——否则重启服务器就失效。
确认服务已监听 80 端口
iptables 只管放行流量,不负责启动服务。先验证 Web 服务(如 Nginx 或 Apache)确实在监听:
- 运行
sudo ss -tlnp | grep ':80'或sudo netstat -tuln | grep ':80' - 应看到类似
LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))的输出 - 如果没结果,说明 Web 服务没启动或没配监听 80 端口,需先解决服务本身问题
添加 iptables 允许 80 端口的规则
使用 -I INPUT(插入到最前)比 -A INPUT(追加到末尾)更稳妥,避免被前面的 DROP 规则拦截:
- 执行命令:
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT - 若还需 HTTPS,顺带加:
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT - 检查是否生效:
sudo iptables -L INPUT -n --line-numbers,确认第 1 行或靠前位置有对应规则
保存规则并确保开机生效
iptables 规则默认不持久,重启后丢失。保存方式因系统而异:
-
CentOS/RHEL 6 或旧版:运行
sudo service iptables save(自动写入/etc/sysconfig/iptables) -
Debian/Ubuntu:安装持久化工具:
sudo apt install iptables-persistent,然后执行sudo netfilter-persistent save -
通用手动保存法:
sudo iptables-save > /etc/iptables.rules,再配置开机加载(如通过 systemd service 或 rc.local)
验证端口是否真正开放
别只看 iptables 规则,要从外部实测:
- 本地测试:
curl -I http://127.0.0.1或telnet localhost 80 - 从另一台机器执行:
telnet your-server-ip 80(通则说明防火墙放行成功) - 注意:云服务器(如阿里云、腾讯云)还需检查安全组,iptables 生效但安全组没开 80,照样访问不了


















