请注意,本文编写于 97 天前,最后修改于 97 天前,其中某些信息可能已经过时。
目录
中国大陆IP访问控制脚本
介绍
功能特点
安装说明
前提条件
安装步骤
基本用法
可用选项
使用示例
开启IP访问限制
关闭IP访问限制
查看状态
验证访问
工作原理
IP段获取
规则设置
持久化
注意事项
故障排除
无法获取IP段列表
规则不生效
重启后规则丢失
中国大陆IP访问控制脚本
介绍
这是一个用于Ubuntu系统的Shell脚本,用于限制您的机器只能被中国大陆IP地址访问,或者说禁止国外IP访问。脚本使用iptables实现IP访问控制,并提供了方便的开启、关闭、状态查看和验证功能。脚本全部由AI工具生成
功能特点
- 方便的开关控制:通过简单的命令即可开启或关闭IP访问限制功能
- 状态查看:可以随时查看当前IP限制的状态和规则数量
- 重启后生效:通过systemd服务确保重启后规则仍然有效
- 验证功能:可以验证当前公网IP是否在中国IP段内
- 自动获取IP段:从可靠源自动获取最新的中国大陆IP段列表
安装说明
前提条件
- Ubuntu或其他基于Debian的Linux系统
- 已安装iptables(系统一般默认已安装)
- 具有root权限
安装步骤
- 将脚本复制到您的Ubuntu系统中
- 给脚本添加执行权限:
sudo chmod +x china_ip_access.sh
使用方法
基本用法
sudo ./china_ip_access.sh [选项]
可用选项
start:开启IP访问限制功能
stop:关闭IP访问限制功能
status:查看当前IP访问限制状态
check:验证当前IP是否被允许访问
help:显示帮助信息
使用示例
开启IP访问限制
sudo ./china_ip_access.sh start
运行此命令后,脚本会:
- 从互联网获取最新的中国大陆IP段列表
- 设置iptables规则,仅允许中国大陆IP访问
- 创建并启用systemd服务,确保重启后规则仍然生效
关闭IP访问限制
sudo ./china_ip_access.sh stop
运行此命令后,脚本会:
- 移除之前设置的iptables规则
- 保存更改,确保重启后也不会应用这些规则
查看状态
sudo ./china_ip_access.sh status
此命令将显示:
- IP限制功能的当前状态(开启/关闭)
- 设置的规则数量
- 最近更新时间
- systemd服务的状态
验证访问
sudo ./china_ip_access.sh check
此命令将:
- 检查是否有有效的IP限制规则
- 获取您的公网IP地址
- 验证您的IP是否在中国IP段列表中
工作原理
IP段获取
脚本从以下可靠源获取中国大陆IP段列表(按优先级):
- https://ispip.clang.cn/all_cn_cidr.txt
- https://raw.githubusercontent.com/gaoyifan/china-operator-ip/master/china.txt
规则设置
脚本通过iptables设置以下规则:
- 创建一个名为
CHINA_IP_ACCESS的自定义链
- 允许本地回环(lo)访问
- 允许已建立的连接
- 添加所有中国大陆IP段到允许列表
- 默认拒绝所有其他IP访问
- 将自定义链插入到INPUT链的最前面
持久化
脚本通过两种方式确保重启后规则仍然生效:
- 使用
iptables-save保存规则到/etc/iptables/rules.v4
- 创建systemd服务
china-ip-access.service,在系统启动时自动加载规则
注意事项
- 权限要求:脚本必须以root权限运行
- 网络连接:首次运行需要互联网连接以获取中国大陆IP段列表
- 兼容性:脚本适用于Ubuntu和其他基于Debian的Linux系统
- 备份规则:在运行脚本前,建议备份当前的iptables规则:
iptables-save > ~/iptables_backup.rules
需要恢复时可以使用:
iptables-restore < ~/iptables_backup.rules
- 更新IP段:如果需要更新中国大陆IP段列表,只需重新运行
start命令
故障排除
无法获取IP段列表
- 检查您的网络连接是否正常
- 确保您可以访问脚本中指定的IP段列表源
规则不生效
- 检查iptables服务是否正在运行
- 运行
status命令查看规则是否正确设置
- 确认没有其他iptables规则优先于我们设置的规则
重启后规则丢失
脚本下载地址:蓝奏云密码:8hsw
本文作者:口水
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!