屏蔽国外所有IP访问,指的是在服务器或网络边界上配置规则,使来源于本国以外地理区域的IP地址无法建立连接。这种做法常见于小型业务系统、内部管理平台或受监管行业站点,目的是缩小暴露面、减少自动化攻击和垃圾流量。实现方式不局限于某一种工具,既可以走系统层防火墙,也能依赖上游云厂商或CDN的地域限速能力。

从原理上看,IP本身并不携带国别信息,所谓国外IP是靠第三方维护的IP地理库来判定的。这些库把已分配的网段标注为国家或地区,例如某些开源项目会每周发布聚合后的国家路由表。系统管理员把目标国家之外的所有网段加进黑名单,或者在白名单模式下只放行本国网段,流量经过网卡时由内核模块比对集合并丢包。
为什么很多团队选择直接封掉境外来源?实战里境外爬虫和爆破工具占比极高,它们用廉价带宽全天候扫端口。若业务本来只服务国内用户,留着国外入口就等于白白给攻击者送探测面。我接触过的一个企业官网,没做地域限制前每天几千次SSH尝试,封禁海外段后日志瞬间清净,运维告警量下降七成。
利用ipset与iptables在Linux上封禁
在CentOS或Ubuntu这类Linux发行版里,最稳妥的组合是ipset加iptables。ipset能高效存储海量网段,比一条条写iptables规则更省内存也更快匹配。先安装ipset工具,新建一个名为cnip的集合用来装本国地址,再建一个叫foreign的集合放其他国家。实际操作时,我们往往只维护放中国地址的集合,然后让防火墙拒绝不在这个集合里的源。
具体步骤上,先下载国内网段聚合文件,比如从亚太互联网络信息中心或社区项目获取CIDR列表,用shell循环把每段add进cnip集合。接着写iptables规则:入站链首先允许已建立连接,然后匹配源地址属于cnip的放行,最后对非cnip的源地址执行DROP。这样即便有新的海外段出现,只要没被加白就自动挡掉。
规则写完必须保存,否则重启后丢失。CentOS可用service iptables save,Ubuntu装iptables-persistent后执行netfilter-persistent save。同时把ipset集合也存到磁盘,开机时restore加载。很多新手漏了这一步,机器重启后发现限制失效,业务又被扫。建议写个systemd单元或rc.local保证启动顺序在网卡之后。
云服务商与CDN的替代方案
不是所有人都能碰服务器底层,这时候上游控制更省力。阿里云、腾讯云的安全组支持按地域封禁,控制台勾选不允许境外IP入站即可,底层也是调用类似路由过滤的能力,但不用自己维护库。对于只用对象存储或函数的轻量业务,直接在云防火墙开地域黑名单最方便,而且能随平台库更新。
如果站点前面挂了CDN,例如Cloudflare或国内节点加速,可在边缘做国家限制。Cloudflare的防火墙规则里设if ip.geoip.country not in CN then block,海外访客根本不会回源。这样做的好处是源站IP藏起来,封禁逻辑在边缘生效,服务器零负担。不过免费版功能有限,大批量精准拦截可能要付费套餐。
选哪种方案看运维能力。自己有机器就iptables加ipset最透明;图省事用云厂商按钮;要抗大流量就CDN边缘拦。无论哪种,都建议配合日志统计,确认拦截比例和误杀情况。曾有个论坛误把港澳台算成国外,导致部分用户登不上,后来在地理库里单独放行才解决,说明地域划分也要结合业务实际。
注意事项与常见误区
第一个误区是以为封了国外IP就绝对安全。其实攻击者可用国内肉鸡或代理绕开,地理屏蔽只是缩小面不是终点。还应关掉无用端口、改默认口令、上fail2ban做暴力破解封禁。另一个误区是拿不准网段来源,胡乱DROP造成自有监控节点被拦,排障时连不上服务器。动手前先从小范围规则观察再全量。
维护方面,IP库会变动,比如IPv6分配扩张,如果只封了v4,海外v6用户仍能访问。现在不少云厂商默认给实例分配v6,规则里要同时建inet6家族集合。还有人把规则写进临时iptables却忘了save,前面已提过,这里再强调:变更后立刻持久化,并在测试机验证开机状态,避免生产事故。
最后聊性能。ipset基于哈希,十万条网段匹配也微秒级,比iptables逐条线性差很多。如果直接把几千个国家段写进filter表,高并发下CPU会飙。因此结构选对很关键。下表列出两种常见做法的差异:
| 方案 | 维护成本 | 性能表现 | 适用场景 |
|---|---|---|---|
| iptables逐条规则 | 高,需脚本生成 | 较差,规则多时慢 | 极少量网段 |
| ipset加iptables | 中,更新库即可 | 优,哈希匹配 | 全量国家屏蔽 |
| 云安全组地域拦 | 低,控制台操作 | 优,平台承载 | 云上业务 |
综合来看,屏蔽国外所有IP访问不是难事,难在持续维护和避免误伤。把本文说的集合管理、持久化、双栈覆盖做到位,服务器能安静许多。遇到复杂合规要求时,再叠加应用层鉴权,整体防护才算完整。
屏蔽国外IP服务器安全iptables配置修改时间:2026-08-14 17:33:37