Github上能找到很多ip段的txt文件,下面用Python脚本将它转换成IPSET

  1. 首先下载好需要转换的ip文件
    sample-ips.txt
    1.0.1.0/24
    1.0.2.0/23
    1.0.8.0/21
    1.0.32.0/19
    192.168.1.0/24
    
  2. 保存以下代码为create-ipset.py
    create-ipset.py
    #open里面的文件名根据实际情况修改
    with open('sample-ips.txt') as f: 
     lines = f.readlines()
    commands = ['ipset create myipset hash:net']
    for l in lines:
     commands.append("ipset add myipset %s"%l.strip())
    with open('create-ipset.sh', 'w') as my_list_file: 
     for element in commands:
       my_list_file.write('%s\n' % element)
    
  3. 运行python脚本获取shell脚本
    python3 create-ipset.py
    

    命令成功执行后,应该能见到一个新生成的create-ipset.sh文件

  4. 将生成的shell脚本create-ipset.sh上传到Linux系统主机执行
    bash create-ipset.sh
    

    视乎主机性能和ip列表长度,这一步需要等待一定时间

  5. 测试IPSET是否正常工作
    root@OpenWrt:~# ipset test myipset 192.168.100.1
    192.168.100.1 is NOT in set myipset.
    

    到这一步IPSET就已经创建成功了,如果想将IPSET中的IP进行重定向,可以继续看下去

  6. 重定向IPSET流量
    iptables -A PREROUTING -t mangle -i eth0 -m set --match-set myipset dst -j MARK --set-mark 123
    ip route add table 123 default via 192.168.1.254 dev eth0
    ip rule add fwmark 123 table 123
    

    上面命令的作用是将目的地址为myipset的流量重定向到192.168.1.254网关,命令里面的网络接口eth0以及网关、ipset名称等要按实际情况修改

留下评论