
一、精准定位:判断防火墙是否为中断根源
(一)快速验证防火墙关联性
- 临时关闭防火墙测试
先通过关闭防火墙确认是否为规则问题(操作前备份规则!):
# 1. iptables/ip6tables(通用)
iptables-save > /etc/iptables-backup.rules # 备份IPv4规则
ip6tables-save > /etc/ip6tables-backup.rules # 备份IPv6规则
iptables -F && iptables -X # 清空IPv4规则
ip6tables -F && ip6tables -X # 清空IPv6规则
# 2. firewalld(CentOS/RHEL)
systemctl stop firewalld
# 3. ufw(Ubuntu/Debian)
ufw disable
关闭后测试网络(如ping 网关IP、ping6 网关IPv6、ssh 服务器):
- 网络恢复:确认是防火墙规则问题;
- 仍中断:排查网卡、路由或网关配置(参考前文 IPv6 基础配置)。
- 查看防火墙状态与日志
若关闭后恢复,通过日志定位具体拦截规则:
# 1. 查看防火墙运行状态
iptables -L -n -v # 查看IPv4规则(-v显示流量统计)
ip6tables -L -n -v # 查看IPv6规则
firewall-cmd --list-all # firewalld规则
ufw status verbose # ufw规则(含IPv6)
# 2. 查看拦截日志(关键!)
# iptables/ip6tables开启日志(临时生效)
iptables -A INPUT -j LOG --log-prefix "IPv4-DROP: " --log-level 4
ip6tables -A INPUT -j LOG --log-prefix "IPv6-DROP: " --log-level 4
# 查看日志(CentOS/RHEL)
tail -f /var/log/messages | grep -E "IPv4-DROP|IPv6-DROP"
# 查看日志(Ubuntu/Debian)
tail -f /var/log/syslog | grep -E "IPv4-DROP|IPv6-DROP"
重点关注被拦截的 “源 IP / 端口”“目标 IP / 端口”,如SSH(22)、HTTP(80)端口被拦截会直接导致对应服务不可用。
二、分场景修复:主流防火墙配置方案
(一)iptables/ip6tables(通用型,手动规则)
- 基础双栈规则配置(开放必要服务)
执行以下命令添加允许规则(按需求调整端口):
# ---------------- IPv4 规则 ----------------
# 允许回环接口(本地通信必需)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立连接的流量(避免中断现有会话)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 开放常用端口(SSH/HTTP/HTTPS,按需添加)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 默认策略:未匹配规则拒绝(最后设置,避免中途断连)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT # 允许所有出站流量(可按需收紧)
# ---------------- IPv6 规则(与IPv4同步) ----------------
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许IPv6 ICMP(ping6必需,部分网络依赖)
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -P INPUT DROP
ip6tables -P OUTPUT ACCEPT
- 保存规则(避免重启失效)
# CentOS/RHEL
service iptables save
service ip6tables save
# Ubuntu/Debian(需安装iptables-persistent)
apt install -y iptables-persistent
netfilter-persistent save
(二)firewalld(CentOS/RHEL,服务化管理)
- 修复双栈规则不一致问题
# 1. 查看当前双栈服务开放状态
firewall-cmd --list-services # IPv4开放的服务
firewall-cmd --list-ip6services # IPv6开放的服务(常被忽略!)
# 2. 同步双栈服务(以SSH/HTTP/HTTPS为例)
firewall-cmd --add-service=ssh --permanent # IPv4开放
SSHfirewall-cmd --add-ip6service=ssh --permanent # IPv6开放SSH
firewall-cmd --add-service=http --permanent
firewall-cmd --add-ip6service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-ip6service=https --permanent
# 3. 允许IPv6 ICMP(关键,否则ping6失败)
firewall-cmd --add-icmp-block-inversion --permanent
firewall-cmd --add-icmp6-type=echo-request --permanent
# 4. 重新加载规则
firewall-cmd --reload
(三)ufw(Ubuntu/Debian,轻量级)
- 启用并配置双栈规则
# 1. 启用ufw并允许IPv6(编辑配置文件)
nano /etc/default/ufw
# 确保以下配置:
IPV6=yes # 启用IPv6支持(默认可能关闭!)
DEFAULT_INPUT_POLICY="DROP" # 默认拒绝入站
# 2. 添加双栈允许规则
ufw allow 22/tcp # 同时开放IPv4/IPv6的SSH
ufw allow 80/tcp # 同时开放IPv4/IPv6的HTTP
ufw allow 443/tcp # 同时开放IPv4/IPv6的HTTPS
ufw allow out 53 # 允许DNS查询(避免域名解析失败)
# 3. 启用ufw并验证
ufw enableufw status
# 查看规则(显示v6即生效)
三、进阶修复:解决复杂防火墙问题
(一)规则优先级冲突修复
若存在 “后定义的拒绝规则覆盖允许规则”(如先允许 22 端口,后拒绝所有 tcp),需调整规则顺序:
# iptables示例:删除错误规则,重新按“允许→拒绝”顺序添加
iptables -D INPUT -p tcp --dport 22 -j ACCEPT # 删除旧允许规则
iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT # 插入到第3条(在拒绝规则前)
iptables -L --line-numbers # 查看规则行号(辅助调整)
(二)跨网段访问中断修复
若服务器需被跨网段访问(如公网访问),需确保防火墙允许 “非本地网段” 流量:
# firewalld示例:允许特定IPv4/IPv6网段访问
firewall-cmd --add-source=192.168.1.0/24 --permanent # 允许内网IPv4网段
firewall-cmd --add-ip6source=2001:db8::/64 --permanent # 允许公网IPv6网段
firewall-cmd --reload
四、推荐:360CDN 强化双栈防火墙防护与性能
配置好双栈防火墙后,搭配 360CDN 可实现 “源站隐藏 + 攻击拦截 + 双栈加速” 三重价值:
- 核心互补优势
- 减轻防火墙压力:360CDN 节点先拦截 DDoS/CC 攻击,仅转发合法流量到源站,避免防火墙因攻击流量过载导致规则失效;
- 双栈智能适配:全国 200 + 双栈节点自动识别用户网络(IPv4/IPv6),无需在服务器防火墙额外配置跨协议转发规则;
- 源站 IP 隐藏:用户通过 CDN 域名访问,服务器真实 IPv4/IPv6 地址不暴露,降低防火墙被定向攻击风险。
- 适配防火墙的 CDN 配置步骤
- 登录 360CDN 控制台,添加源站时填写服务器真实 IPv4/IPv6 地址(如 192.168.1.100、2001:db8::100);
- 开启 “安全防护” 模块(如 DDoS 基础防护、CC 防护),设置 “仅允许 CDN 节点 IP 访问源站”(360CDN 会提供节点 IP 段,可添加到服务器防火墙白名单);
- 验证效果:通过ping 加速域名(IPv4)、ping6 加速域名(IPv6)测试连通性,查看 CDN 日志确认流量均来自 CDN 节点。
