1. 准备与风险说明
步骤说明:1) 在任何变更前备份现有防火墙/iptables/ipset配置(iptables-save, ipset save);2) 在非高峰时段做试验;3) 准备回滚计划和远程控制(例如留一个管理IP白名单)。
2. 收集故障证据(日志与连接追踪)
小分段:1) 在服务器上查看实时连接:ss -tnp | grep :443 或 netstat -anp | grep 443;2) 查阅应用与Nginx/Apache日志(/var/log/nginx/access.log)按IP筛选;3) 用tcpdump抓包:tcpdump -n host <疑似IP> and port 443 -w /tmp/cap.pcap;4) Traceroute诊断:traceroute -T -p 443 <客户端IP> 或从境内跳板/云主机向客户端IP traceroute。
3. 确认问题来源:DNS、路由或被封
小分段:1) 从柬埔寨或模拟节点做dig/curl:dig @8.8.8.8 yourapp.com;curl -v --resolve yourapp.com:443:SERVER_IP https://yourapp.com/;2) 检查是否为DNS污染或解析到错误IP;3) 使用BGP/WHOIS查询客户端IP归属:whois
;4) 若是路由问题,联系ISP或上游运营商。
4. 获取柬埔寨IP段并建立IP集(ipset)
小分段:1) 从IP库获取柬埔寨CIDR(例如使用ipinfo.io/countries/kh 或 MaxMind/RIPE查询);2) 在Linux上安装ipset:apt-get install ipset(或yum);3) 创建集合并导入:ipset create kh_net hash:net; ipset add kh_net 103.7.0.0/16(示例);4) 批量导入可用脚本读取CIDR文件循环ipset add。
5. iptables规则实例(阻断或限速)
小分段:1) 永久阻断HTTP/HTTPS来自柬埔寨的流量(示例):iptables -I INPUT -m set --match-set kh_net src -p tcp -m multiport --dports 80,443 -j REJECT --reject-with tcp-reset;2) 若需记录先LOG再DROP:iptables -I INPUT -m set --match-set kh_net src -j LOG --log-prefix "KH_BLOCK: " --log-level 4; iptables -I INPUT -m set --match-set kh_net src -j DROP;3) 若只限速:tc + u32 filter 或用iptables recent 模块限频。
6. nftables 与现代系统的做法
小分段:1) 若使用nftables,先创建map或set:nft add table ip filter; nft add set ip filter kh_net { type ipv4_addr\; flags interval\; };2) 导入CIDR并添加规则:nft add rule ip filter input ip saddr @kh_net tcp dport {80,443} reject with tcp reset;3) 将配置保存并启用systemd服务。
7. 云平台与WAF层面调整
小分段:1) AWS:使用WAF GeoMatch来阻断国家为Cambodia的请求或在Security Group/NACL中阻断CIDR;2) 阿里云/腾讯云:使用地域访问控制或云防火墙,添加“拒绝来源国”为柬埔寨的规则;3) 注意CDN层(如Cloudflare)需在CDN控制台设置Geo blocking。
8. 应用层与反向代理策略(Nginx示例)
小分段:1) 使用ngx_http_geoip2_module加载MaxMind DB并在server段设置if ($geoip_country_code = "KH") { return 444; };2) 或在conf直接写deny 103.7.0.0/16; ;3) 修改后测试语法:nginx -t 并平滑重载:nginx -s reload。
9. 测试、监控与回滚
小分段:1) 在变更后用外部节点或线上同事验证访问:curl -I https://yourapp.com;2) 监控日志(/var/log/messages, nginx access/error)是否出现误杀白名单问题;3) 回滚命令示例:iptables -D INPUT <规则序号> 或 ipset destroy kh_net 并恢复备份配置。
10. 常见误区问:分国封禁是否会影响CDN或第三方服务?
答:会。若你通过CDN或第三方API提供服务,按国封禁可能会拦截CDN节点或合法第三方请求。建议在实施前梳理所有上游/第三方IP并白名单化,优先在WAF层限定来源再在边缘节点做封禁。
11. 问:如何准确获取并定期更新柬埔寨IP段?
答:可用MaxMind GeoIP2/GeoLite2数据库、ipinfo、RIPE/ARIN查询或BGPView API批量拉取国家CIDR。把CIDR周期化脚本化(cron每天或每周)更新ipset并逐步验证,更新前先做差异比对。
12. 问:若误封大量合法用户应如何快速恢复?
答:准备好回滚脚本与SSH二次管理员路径,优先撤销最近添加的ipset/iptables规则并重启防火墙服务;同时恢复前的配置备份(iptables-restore, ipset-restore),并通知运维与客服跟进受影响用户。
来源:柬埔寨连不上国内app服务器的安全策略检查及防火墙规则调整建议