解决问题

使用iptables设置只允许中国的IP访问本机的53端口,并在需要时删除相关规则。

解决方案步骤

  1. 获取中国的IP段

    • 下载中国的IP段数据文件:
      1
      wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone
  2. **安装并配置ipset**:

    • 安装ipset
      1
      2
      sudo apt-get install ipset  # 对于Debian/Ubuntu系统
      sudo yum install ipset # 对于CentOS系统
    • 创建一个名为cnip的规则:
      1
      sudo ipset -N cnip hash:net
    • 将中国的IP段添加到cnip规则中:
      1
      2
      3
      for i in $(cat /root/cn.zone); do
      sudo ipset -A cnip $i
      done
  3. 配置iptables规则

    • 允许中国的IP访问53端口:
      1
      sudo iptables -A INPUT -p udp -m set --match-set cnip src -m udp --dport 53 -j ACCEPT
    • 关闭其他国家的IP访问53端口:
      1
      sudo iptables -A INPUT -p udp --dport 53 -j DROP
  4. 删除iptablesipset规则

    • 删除iptables规则:
      1
      2
      sudo iptables -D INPUT -p udp -m set --match-set cnip src -m udp --dport 53 -j ACCEPT
      sudo iptables -D INPUT -p udp --dport 53 -j DROP
    • 删除ipset规则:
      1
      sudo ipset destroy cnip

备注

按省份分类IP库地址
https://github.com/metowolf/iplist