2024-03-17
学习资料
00

目录

介绍
一、创建cnipok.sh
二、添加开机启动项
三、第二种开机启动方式

介绍

之前用GPT撸的那个UFW脚本,虽然说可用,但是导入大量规则系统占用过多,中国IP范围太大,导致几十个小时都无法完整导入规则。经过搜索,发现可以使用ipset这个工具来创建iptables列表。实现快速导入规则的效果。

一、创建cnipok.sh

shell
#!/bin/bash # 下载中国 IP 列表 wget -O /tmp/chnroute.txt https://raw.githubusercontent.com/mayaxcn/china-ip-list/master/chnroute.txt # 创建一个名为 china_ips 的 IPSet,用于存储中国 IP 地址 ipset create china_ips hash:net # 将中国 IP 列表中的 IP 地址添加到 china_ips 中 while IFS= read -r line; do ipset add china_ips "$line" || true done < /tmp/chnroute.txt # 清除现有的 iptables 规则 iptables -F iptables -X # 设置默认策略为 DROP iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环连接 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT #允许SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT #放行DNS查询 iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT #解决无法访问外网 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 允许来自中国 IP 地址的访问到 443 端口 iptables -A INPUT -m set --match-set china_ips src -p tcp --dport 443 -j ACCEPT iptables -A INPUT -m set --match-set china_ips src -p tcp --dport 80 -j ACCEPT # 保存 iptables 规则 #iptables-save > /etc/iptables/rules.v4 # 清理临时文件 rm /tmp/chnroute.txt exit 0

二、添加开机启动项

将上面的脚本保存到/etc/init.d/目录中,取名cnipok,并chmod +x cnipok添加运行权限 将rc.local设为开机运行

  • systemctl enable rc.local
  • systemctl start rc.local

三、第二种开机启动方式

设置启动项 update-rc.d cnip.sh defaults 删除启动项 update-rc.d -f cnip.sh remove

shell
#!/bin/sh ### BEGIN INIT INFO # Provides: cnip # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $network # Should-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: cnip # Description: cnip ### END INIT INFO # 下载中国 IP 列表 wget -O /tmp/chnroute.txt https://raw.githubusercontent.com/mayaxcn/china-ip-list/master/chnroute.txt # 创建一个名为 china_ips 的 IPSet,用于存储中国 IP 地址 ipset create china_ips hash:net # 将中国 IP 列表中的 IP 地址添加到 china_ips 中 while IFS= read -r line; do ipset add china_ips "$line" || true done < /tmp/chnroute.txt # 清除现有的 iptables 规则 iptables -F iptables -X # 设置默认策略为 DROP iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环连接 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT #允许SSH iptables -A INPUT -p tcp --dport 22985 -j ACCEPT #放行DNS查询 iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT #解决无法访问外网 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 允许来自中国 IP 地址的访问到 443 端口 iptables -A INPUT -m set --match-set china_ips src -p tcp --dport 443 -j ACCEPT iptables -A INPUT -m set --match-set china_ips src -p tcp --dport 80 -j ACCEPT # 保存 iptables 规则 #iptables-save > /etc/iptables/rules.v4 # 清理临时文件 rm /tmp/chnroute.txt exit 0