在云主机上封禁境外IP,可以通过以下两种主要方法实现,推荐使用云服务商的安全组功能(操作简单,不消耗主机资源),也可以使用主机防火墙(如iptables或firewalld)进行精细控制。
方法1:使用云服务商的安全组(推荐)
安全组是云平台提供的虚拟防火墙,直接在网络层过滤流量,效率高且不占用主机资源。
操作步骤(以阿里云、腾讯云为例):
1、登录云平台控制台
- 阿里云:进入ECS实例 → 安全组
- 腾讯云:进入CVM实例 → 安全组
2、创建/修改安全组规则
放行中国大陆IP:添加一条入站规则,选择协议(如TCP/UDP/ICMP),端口范围(如80,443
或0/0
表示所有端口),源IP填写中国大陆IP段(需自行获取)。
拒绝所有其他IP:安全组默认拒绝未明确允许的流量(白名单机制),无需额外设置。
3、关联安全组到云主机
将新规则的安全组绑定到目标云主机。
方法2:使用主机防火墙(iptables/firewalld)
适合需要动态封禁或云平台安全组功能受限的场景。
步骤1:安装IP地理位置数据库(如ipset)
安装ipset和工具 sudo apt-get install ipset -y # Debian/Ubuntu sudo yum install ipset -y # CentOS
下载中国大陆IP列表(来源:APNIC或权威机构) wget -O cn.zone https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt 创建ipset集合 sudo ipset create china hash:net 将IP段导入集合 while read addr; do sudo ipset add china $addr; done < cn.zone
允许中国大陆IP访问所有端口 sudo iptables -A INPUT -m set --match-set china src -j ACCEPT 拒绝境外IP(非中国大陆IP) sudo iptables -A INPUT -j DROP 可选:放行SSH等管理端口(避免误封) sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT
Debian/Ubuntu sudo apt-get install iptables-persistent -y sudo netfilter-persistent save CentOS 7+ sudo yum install iptables-services -y sudo systemctl enable iptables sudo service iptables save
1、避免封禁自己
- 操作前确保放行你的IP和云平台管理IP(如AWS的169.254.0.0/16
)。
- 测试时通过控制台VNC登录,避免SSH被阻断。
2、IP列表更新
中国大陆IP段会动态变化,建议每月更新一次:
wget -O cn.zone https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt sudo ipset flush china # 清空旧集合 while read addr; do sudo ipset add china $addr; done < cn.zone
3、IPv6处理
若主机启用IPv6,需单独封禁境外IPv6(方法类似,使用ip6tables
)。
误封国内IP:检查IP列表是否完整(推荐使用[17mon/china_ip_list](https://github.com/17mon/china_ip_list)项目)。
性能问题:ipset基于哈希表,数千条规则对性能影响极小。
云平台差异:
- 阿里云:支持直接导入IP地址组,无需手动维护。
- AWS:使用Network ACLs或第三方工具(如AWS WAF)。
通过上述方法,可有效封禁境外IP访问,提升云主机安全性,优先使用云平台安全组,复杂场景配合主机防火墙实现精细控制。
文章摘自:https://idc.huochengrm.cn/zj/12466.html
评论