宝塔8 升级到 11导致 服务器无法访问外网dns失效了,无法访问bt.cn 解决方法 测试通过
找到根因了。你的服务器内部网络完全正常,没有断网。是两个独立问题叠加:
根因确认
| 问题 | 根因 | 证据 |
|---|---|---|
| DNS解析失败 | 宝塔11的 ANTI_DDOS 链拦截了阿里云DNS响应包 |
nftables显示 ip saddr 100.100.2.136/138 drop,这两个正是阿里云内网DNS |
| ping公网IP丢包 | 大概率只是ICMP被禁(如果网站还能访问);如果网站也挂了,是阿里云安全组出方向被限制 | 服务器TCP出站未测试,但内部路由/防火墙全部正常 |
直接执行修复命令
bash
# ===== 第一步:修复DNS(ANTI_DDOS拦截阿里云DNS)=====
# 配置systemd-resolved使用公共DNS,绕过被拦截的阿里云DNS
cat > /etc/systemd/resolved.conf <<'EOF'
[Resolve]
DNS=223.5.5.5 114.114.114.114
FallbackDNS=8.8.8.8
DNSStubListener=yes
EOF
systemctl restart systemd-resolved
# 重建resolv.conf软链接
rm -f /etc/resolv.conf
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# 测试DNS
echo "=== DNS测试 ==="
ping -c 4 www.bt.cn
# ===== 第二步:确认业务网络是否真断了 =====
echo "=== TCP出站测试 ==="
nc -vz 223.5.5.5 53
nc -vz 7.255.129.251 80
nc -vz www.bt.cn 443
执行后分两种情况处理
情况A:DNS通了,且 nc -vz www.bt.cn 443 显示 succeeded
结论:网络根本没断,只是ICMP ping被禁了。
- 你的网站一直能正常访问
- DNS修复后,SSL续签也能正常工作
ping不通是安全策略,不影响业务
无需进一步操作,直接测试SSL续签:
bash
/www/server/panel/pyenv/bin/python3 -u /www/server/panel/class/acme_v2.py --renew=1
情况B:DNS仍失败,且 nc 测试全部连接超时
结论:阿里云侧出方向被限制。
立刻去 阿里云ECS控制台:
- 实例详情 → 点击绑定的安全组ID
- 出方向规则 → 如果有任何规则,全部删除(默认无规则=全部允许)
- 返回实例页 → 重启实例(让VPC网关重新建立会话)
重启后再次执行上面的DNS和nc测试。
为什么升级宝塔会导致这个问题?
宝塔8→11升级过程中,重新安装并激活了ANTI_DDOS防火墙模块 。这个模块默认拦截了来自 100.100.2.136 和 100.100.2.138 的流量(阿里云内网DNS服务器的IP),导致:
- 服务器发出DNS查询 → 到达阿里云DNS
- DNS响应返回 → 被ANTI_DDOS在INPUT链拦截
- systemd-resolved超时 →
Temporary failure in name resolution
而ping不通公网IP,如果网站本身正常,则与宝塔升级无关,是原本就存在的ICMP限制。
把上面命令的执行结果贴给我,我确认是情况A还是情况B。