编辑
2025-10-17
Linux备份教学
00
请注意,本文编写于 97 天前,最后修改于 97 天前,其中某些信息可能已经过时。

目录

中国大陆IP访问控制脚本
介绍
功能特点
安装说明
前提条件
安装步骤
基本用法
可用选项
使用示例
开启IP访问限制
关闭IP访问限制
查看状态
验证访问
工作原理
IP段获取
规则设置
持久化
注意事项
故障排除
无法获取IP段列表
规则不生效
重启后规则丢失

中国大陆IP访问控制脚本

介绍

这是一个用于Ubuntu系统的Shell脚本,用于限制您的机器只能被中国大陆IP地址访问,或者说禁止国外IP访问。脚本使用iptables实现IP访问控制,并提供了方便的开启、关闭、状态查看和验证功能。脚本全部由AI工具生成

功能特点

  1. 方便的开关控制:通过简单的命令即可开启或关闭IP访问限制功能
  2. 状态查看:可以随时查看当前IP限制的状态和规则数量
  3. 重启后生效:通过systemd服务确保重启后规则仍然有效
  4. 验证功能:可以验证当前公网IP是否在中国IP段内
  5. 自动获取IP段:从可靠源自动获取最新的中国大陆IP段列表

安装说明

前提条件

  • Ubuntu或其他基于Debian的Linux系统
  • 已安装iptables(系统一般默认已安装)
  • 具有root权限

安装步骤

  1. 将脚本复制到您的Ubuntu系统中
  2. 给脚本添加执行权限:
    bash
    sudo chmod +x china_ip_access.sh

使用方法

基本用法

bash
sudo ./china_ip_access.sh [选项]

可用选项

  • start:开启IP访问限制功能
  • stop:关闭IP访问限制功能
  • status:查看当前IP访问限制状态
  • check:验证当前IP是否被允许访问
  • help:显示帮助信息

使用示例

开启IP访问限制

bash
sudo ./china_ip_access.sh start

运行此命令后,脚本会:

  1. 从互联网获取最新的中国大陆IP段列表
  2. 设置iptables规则,仅允许中国大陆IP访问
  3. 创建并启用systemd服务,确保重启后规则仍然生效

关闭IP访问限制

bash
sudo ./china_ip_access.sh stop

运行此命令后,脚本会:

  1. 移除之前设置的iptables规则
  2. 保存更改,确保重启后也不会应用这些规则

查看状态

bash
sudo ./china_ip_access.sh status

此命令将显示:

  1. IP限制功能的当前状态(开启/关闭)
  2. 设置的规则数量
  3. 最近更新时间
  4. systemd服务的状态

验证访问

bash
sudo ./china_ip_access.sh check

此命令将:

  1. 检查是否有有效的IP限制规则
  2. 获取您的公网IP地址
  3. 验证您的IP是否在中国IP段列表中

工作原理

IP段获取

脚本从以下可靠源获取中国大陆IP段列表(按优先级):

  1. https://ispip.clang.cn/all_cn_cidr.txt
  2. https://raw.githubusercontent.com/gaoyifan/china-operator-ip/master/china.txt

规则设置

脚本通过iptables设置以下规则:

  1. 创建一个名为CHINA_IP_ACCESS的自定义链
  2. 允许本地回环(lo)访问
  3. 允许已建立的连接
  4. 添加所有中国大陆IP段到允许列表
  5. 默认拒绝所有其他IP访问
  6. 将自定义链插入到INPUT链的最前面

持久化

脚本通过两种方式确保重启后规则仍然生效:

  1. 使用iptables-save保存规则到/etc/iptables/rules.v4
  2. 创建systemd服务china-ip-access.service,在系统启动时自动加载规则

注意事项

  1. 权限要求:脚本必须以root权限运行
  2. 网络连接:首次运行需要互联网连接以获取中国大陆IP段列表
  3. 兼容性:脚本适用于Ubuntu和其他基于Debian的Linux系统
  4. 备份规则:在运行脚本前,建议备份当前的iptables规则:
    bash
    iptables-save > ~/iptables_backup.rules
    需要恢复时可以使用:
    bash
    iptables-restore < ~/iptables_backup.rules
  5. 更新IP段:如果需要更新中国大陆IP段列表,只需重新运行start命令

故障排除

无法获取IP段列表

  • 检查您的网络连接是否正常
  • 确保您可以访问脚本中指定的IP段列表源

规则不生效

  • 检查iptables服务是否正在运行
  • 运行status命令查看规则是否正确设置
  • 确认没有其他iptables规则优先于我们设置的规则

重启后规则丢失

  • 检查systemd服务是否已正确创建和启用:
    bash
    systemctl status china-ip-access.service
  • 如服务未启用,可手动启用:
    bash
    systemctl enable china-ip-access.service

脚本下载地址:蓝奏云密码:8hsw

本文作者:口水

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!