稷然如此

  • 首页
  • 文章分类
    • AI
    • Android
    • Java
    • Shell
    • Vue
    • C#
    • Python
    • 数据库
    • 组件
    • 其他
    • Game
  • 常用命令
    • Docker
    • Git
    • Linux
  • 操作系统
    • CentOS
    • Ubuntu
    • Windows
    • Kylin
  • 工具
    • IntelliJ IDEA
    • Visual Studio Code
稷然如此
不积跬步,无以至千里
  1. 首页
  2. 操作系统
  3. CentOS
  4. 正文

如何实现“仅限中国大陆访问”之 iptables + ipset + apnic 版

2025年11月28日 14点热度 0人点赞
有条件就上行业专业版...另外一种方式:如何实现“仅限中国大陆访问”之 nginx + apnic 版

1.安装 ipset

为什么用 ipset ?普通防火墙添加1000条规则就会卡顿,而ipset可以轻松处理10万+条规则,性能提升100倍!
ipset的详细的使用方法:https://www.xlsys.cn/2664.html
# Debian/Ubuntu系统
sudo apt-get update && sudo apt-get install ipset -y

# CentOS/RHEL系统
sudo yum install ipset -y

2.创建中国 IP 防火墙

#IPV6 这里没有写需要的自行修改。
sudo ipset create china hash:net
curl https://ftp.apnic.net/stats/apnic/delegated-apnic-latest | 
grep "CN|ipv4" | 
awk -F'|' '{print $4 "/" (32 - log($5)/log(2))}' | 
while read ip; do sudo ipset add china $ip; done
等待1-2分钟,系统会自动下载并处理约中国IP段,完成后输入:
ipsetdsyff
list china | wc -l
8699  # 这就是中国IP段的数量!

3.定时自动更新

中国IP段会变化,建议每周自动更新一次:
# 编辑定时任务
sudo crontab -e
添加这一行(每周日凌晨2点自动更新):
# 有 IPV6 需求的自行调整
0 2 * * 0 /usr/bin/ipset flush china && /usr/bin/curl https://ftp.apnic.net/stats/apnic/delegated-apnic-latest | grep "CN|ipv4" | awk -F'|' '{print $4 "/" (32 - log($5)/log(2))}' | while read ip; do /usr/bin/ipset add china $ip; done

4.配置防火墙规则

让防火墙只允许中国IP访问关键服务
# 允许中国IP访问SSH(22端口)
sudo iptables -A INPUT -p tcp --dport 22 -m set --match-set china src -j ACCEPT
# 拒绝其他国家的SSH访问
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
# 同样设置网站端口(80/443)
sudo iptables -A INPUT -p tcp --dport 80 -m set --match-set china src -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -m set --match-set china src -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP

5.注意事项

1.防止"自我锁定"
执行前务必确认:您当前的IP是否在中国范围内?可以通过这个命令检查:
curl ifconfig.me
如果不在(比如您在海外出差),先添加您的IP到白名单:
sudo iptables -I INPUT -s 您的IP地址 -j ACCEPT
2.CDN/云服务用户注意
如果您使用Cloudflare、阿里云CDN、腾讯云CDN等服务,需要额外允许它们的IP:
# 以Cloudflare为例
curl https://www.cloudflare.com/ips-v4 -o cf-ips.txt
while read ip; do sudo ipset add china $ip; done < cf-ips.txt
3.一键恢复方案(小白)
创建一个紧急恢复脚本,保存在安全位置
echo "iptables -F" > /root/firewall-restore.sh
chmod +x /root/firewall-restore.sh
当你被锁在服务器外时,通过控制台执行这个脚本即可恢复访问。
标签: 暂无
最后更新:2025年11月28日

Akim

犇 骉 Java、C#、Python、Go、Android、MiniProgram、Bootstrap、Vue2

点赞
< 上一篇
下一篇 >
文章目录
  • 1.安装 ipset
  • 2.创建中国 IP 防火墙
  • 3.定时自动更新
  • 4.配置防火墙规则
  • 5.注意事项

Copyright © 2025 aianran.com All Rights Reserved.

免责申明 | 隐私政策 | 服务条款 | 关于我们

黔ICP备2023008200号-1

贵公网安备 52010202003594号