Linux防火墙放行443 80跨境端口
跨境服务器搭建网站或应用时,443和80端口是必须打开的。
很多新手在配置Linux防火墙时容易卡住——要么命令执行后没生效,要么重启后规则丢失。
今天我就把Linux防火墙放行443 80跨境端口的完整流程拆开来讲,火墙工具用哪种、命令怎么写、怎么验证,一步一步带你看懂。
动手前先确认两件事
- 你用的是哪种防火墙工具?
- 新版CentOS/RHEL 7+、Ubuntu 16.04+默认用
firewalld - 老系统或云厂商预装镜像可能用
iptables,可以执行systemctl status firewalld或iptables -L -n看一下
- 先检查端口当前是否已被占用或已被其他规则拦截
- 执行
netstat -tulnp | grep -E ':443|:80',如果看到LISTEN说明服务已启动 - 执行
curl -I https://你的IP或http://你的IP,如果连接失败再走防火墙步骤
两条常用命令打开443和80端口
这里分两种主流工具给出命令,请你根据自己的系统选一种执行,别混着来。
方法一:使用firewalld(推荐)
# 永久开放443和80端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重载防火墙使规则生效
firewall-cmd --reload
# 验证规则是否添加成功
firewall-cmd --list-ports
输出应该包含443/tcp 80/tcp。
注意--permanent参数不能省略,否则重启后会丢失。
方法二:使用iptables(老系统或特殊环境)
# 先确认当前规则链,避免误删
iptables -L INPUT -n --line-numbers
# 放行443和80端口(注意插入的位置,默认append到末尾)
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# 保存规则让重启后依然生效(centos用service iptables save,debian/ubuntu用iptables-save)
service iptables save
# 或 /sbin/iptables-save > /etc/iptables/rules.v4
强烈建议: 如果你同时用云服务器,记得也去云控制台的安全组/防火墙里放行443和80端口,否则服务器内部放行了但网络层仍会被拦截。
跨境场景下还要注意安全组入方向不要写错IP范围(建议写0.0.0.0/0)。
踩过这些坑才能顺畅放行
- 端口放行了但外面访问不了? 先检查服务器自身是否有另一个防火墙(比如ufw、firewalld和iptables并存),只保留一个。
- firewalld重载后端口丢了? 八成是忘记加
--permanent,或者不小心加了--remove-port,可以重新执行上面的添加命令。 - iptables save后重启规则没了? 确认是否正确调用了保存命令,centos 7以上默认没有
service iptables save,需要先安装iptables-services包。 - 跨境延迟高或丢包? 防火墙只负责放行,网络质量问题要查路由或带宽,不要归咎于防火墙配置。
三步验证端口是否真正开放
- 本机验证:
telnet 127.0.0.1 443或ss -tlnp | grep 443,确认LISTEN状态。 - 局域网/其他机器验证: 在另一台机器上执行
nc -zv 你的服务器IP 443,返回Connected即成功。 - 公网验证: 用在线端口检测工具(如portchecker.co)或手机4G网络访问
http://你的IP(先确认80端口有服务)。如果都通,说明防火墙放行生效。
高频问题快答
Q:我用的是宝塔面板,还需要手动执行这些命令吗?
A:宝塔面板内置了安全组管理,可以在面板的“安全”或“防火墙”标签页直接放行端口,后端的规则也是通过firewalld或iptables实现的,效果一样。但如果你同时操作了面板和命令行,以先执行的为准。
Q:放行443后https还是打不开,但80可以?
A:检查Nginx或Apache的SSL证书配置是否正确,防火墙只负责网络层,不负责证书验证。可以curl -k https://你的IP忽略证书错误测试连通性。
Q:我按照firewalld方法操作了,但list-ports里只有80没有443?
A:重新执行firewall-cmd --add-port=443/tcp --permanent,注意端口数字不要写错,然后--reload。如果还没出来,检查是否有其他规则(如rich-rule)同时禁止了443。
如果你在操作过程中遇到FirewallD is not running的提示,先执行systemctl start firewalld和systemctl enable firewalld启动并设置开机自启,然后再放行端口。
跨境服务器尤其要注意云服务商安全组和服务器内部防火墙必须都开放,缺一不可。