勾选面板中“禁止国外”选项会导致所有 IP 无法访问?

  一个多月以前开始,站点有大量境外连号 IP 异常访问(规避了每 IP 并发限制),所以就想着在防火墙中启用【禁止国外】功能,但是发现“禁止国外”、“禁止港澳台”无论是单选还是复选,结果是整个站点都无法访问。取消勾选则站点访问恢复正常。

  刚开始以为可能 IP 属于“漏网之鱼”未被收录,不过尝试更换了几次 IP 后、包括使用国内其他 IP 均无法访问站点。不知道防火墙功能是什么时候“失效”的,只记得去年刚安装完 AMH 7.2 时还测试过防火墙功能,当时一切都正常。

  尝试过重装 amnetwork 、重装服务器操作系统、重装 AMH 面板(全量安装/手动安装组件都试过),还是问题依旧;检查过 ipset 列表,正常的有内容输出;

  后来没法子了,只能重新整备了台服务器先将站点迁移过去,新服务器上 AMH 面板功能一切正常。不知道是什么原因导致的面板防火墙功能异常。

=== 补充 ===
(未勾选“网站访问阻止:禁止国外”)防火墙配置如下:

# Generated by iptables-save v1.8.7 on Thu Mar 20 16:51:10 2025
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:40]
:CNI-ADMIN - [0:0]
:CNI-FORWARD - [0:0]
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -p tcp -m tcp --dport 10100:10180 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p udp -m udp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,*****,***** -j ACCEPT
-A FORWARD -m comment --comment "CNI firewall plugin rules" -j CNI-FORWARD
-A FORWARD -p tcp -m tcp --dport 3000 -j ACCEPT
-A CNI-FORWARD -m comment --comment "CNI firewall plugin admin overrides" -j CNI-ADMIN
-A CNI-FORWARD -d 10.88.0.2/32 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A CNI-FORWARD -s 10.88.0.2/32 -j ACCEPT
COMMIT
# Completed on Thu Mar 20 16:51:10 2025
# Generated by iptables-save v1.8.7 on Thu Mar 20 16:51:10 2025
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:CNI-4744e959ac67d212409880e7 - [0:0]
:CNI-DN-4744e959ac67d21240988 - [0:0]
:CNI-HOSTPORT-DNAT - [0:0]
:CNI-HOSTPORT-MASQ - [0:0]
:CNI-HOSTPORT-SETMARK - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j CNI-HOSTPORT-DNAT
-A OUTPUT -m addrtype --dst-type LOCAL -j CNI-HOSTPORT-DNAT
-A POSTROUTING -m comment --comment "CNI portfwd requiring masquerade" -j CNI-HOSTPORT-MASQ
-A POSTROUTING -s 10.88.0.2/32 -m comment --comment "name: \"podman\" id: \"28e2886d8cbb71bb03a931b90b2d1efd54334b8fc6501492cc06da9dff4eeb0f\"" -j CNI-4744e959ac67d212409880e7
-A CNI-4744e959ac67d212409880e7 -d 10.88.0.0/16 -m comment --comment "name: \"podman\" id: \"28e2886d8cbb71bb03a931b90b2d1efd54334b8fc6501492cc06da9dff4eeb0f\"" -j ACCEPT
-A CNI-4744e959ac67d212409880e7 ! -d 224.0.0.0/4 -m comment --comment "name: \"podman\" id: \"28e2886d8cbb71bb03a931b90b2d1efd54334b8fc6501492cc06da9dff4eeb0f\"" -j MASQUERADE
-A CNI-DN-4744e959ac67d21240988 -s 10.88.0.0/16 -p tcp -m tcp --dport 3000 -j CNI-HOSTPORT-SETMARK
-A CNI-DN-4744e959ac67d21240988 -s 127.0.0.1/32 -p tcp -m tcp --dport 3000 -j CNI-HOSTPORT-SETMARK
-A CNI-DN-4744e959ac67d21240988 -p tcp -m tcp --dport 3000 -j DNAT --to-destination 10.88.0.2:3000
-A CNI-HOSTPORT-DNAT -p tcp -m comment --comment "dnat name: \"podman\" id: \"28e2886d8cbb71bb03a931b90b2d1efd54334b8fc6501492cc06da9dff4eeb0f\"" -m multiport --dports 3000 -j CNI-DN-4744e959ac67d21240988
-A CNI-HOSTPORT-MASQ -m mark --mark 0x2000/0x2000 -j MASQUERADE
-A CNI-HOSTPORT-SETMARK -m comment --comment "CNI portfwd masquerade mark" -j MARK --set-xmark 0x2000/0x2000
COMMIT
# Completed on Thu Mar 20 16:51:10 2025
阅读 509
avatarAI BotBETA

根据问题描述,可能由以下原因导致防火墙功能异常,建议按顺序排查:

  1. IP数据库加载异常
  2. 检查/usr/local/amnetwork/GeoLite2目录下的Country.mmdb文件
  3. 使用mmdbinspect Country.mmdb验证数据库完整性
  4. 尝试手动更新数据库:

    wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
    tar zxvf GeoLite2-Country.tar.gz --strip-components=1
  5. 防火墙规则冲突
    检查当前生效的iptables规则:

    iptables -L -n --line-numbers
    ipset list

    特别注意INPUT链中是否存在异常DROP规则,可通过临时清空规则测试:

    iptables -F
    ipset flush
    service amnetwork restart
  6. 网络接口绑定错误
    检查网络接口绑定情况:

    amh amnetwork -v
    ifconfig

    确认外网流量实际通过的网卡名称(如eth0/ens3),在AMH网络设置中绑定正确的网卡

  7. 云平台安全组冲突
    检查服务器提供商的安全组规则:
  8. 阿里云/腾讯云等需在控制台同步放行端口
  9. 部分厂商需要关闭系统防火墙才能生效
  10. AMH组件版本问题
    对比新旧服务器的组件版本:

    amh module list
    amh amnetwork -v

    建议强制更新核心组件:

    amh update --force
    amh module install amnetwork
  11. 系统时间不同步问题
    检查时间同步状态:

    timedatectl
    ntpq -p

    异常的时间同步可能导致IP库验证失败

临时解决方案:
可通过手动添加白名单测试:

ipset add amh-whitelist 您的国内IP
iptables -I INPUT -m set --match-set amh-whitelist src -j ACCEPT

建议在测试时保持SSH连接的同时开启调试模式:

amh amnetwork debug on
tail -f /usr/local/amnetwork/Logs/error.log
1 个回答

最好全部列出面板防火墙的规则内容,看是哪方面拦截的了,也看服务器出入口还有没其它防火墙,
如果尝试重装过amnetwork与面板、操作系统都重装过,应该就不是面板上软件的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题