由于提供的共享frp服务端有被人利用转发酸酸乳导致被墙,因此有必要对frp服务端设置只允许国内ip连接,这里以此为例
1、先安装ipset
apt-get install ipset
或
yum install ipset
2、创建ipset的 chinaip IP集
ipset create chinaip hash:net maxelem 65536
3、添加国内ip到ipset的chinaip IP集(获取国内ip)
ipset flush chinaip
for ip in $(cat './chinaip.txt'); do
ipset add chinaip $ip
done
4、显示chinaip列表
ipset list chinaip
5、iptables限制,只允许ipset的 chinaip IP集内IP连接到7000端口(7000端口为frps的通讯端口,限制以后则frpc无法连接frps),以下命令最好手动加到/etc/sysconfig/iptables(去掉命令前的iptables后直接复制进去即可),因为博主执行后iptables文件里面并没有
iptables -A INPUT -m set --match-set chinaip src -p tcp --dport 7000 -j ACCEPT
iptables -A INPUT -m set --match-set chinaip src -p udp --dport 7000 -j ACCEPT
iptables -A INPUT -p tcp --dport 7000 -j REJECT
iptables -A INPUT -p udp --dport 7000 -j REJECT
6、重启iptables
service iptables restart
6、自动化
利用宝塔的计划任务每天下载并更新中国ip,并添加进防火墙规则
脚本内容
rm -rf ./chinaip.txt
wget -c http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
cat delegated-apnic-latest | awk -F '|' '/CN/&&/ipv4/ {print $4 "/" 32-log($5)/log(2)}' | tee chinaip.txt
ipset flush chinaip
for ip in $(cat './chinaip.txt'); do
ipset add chinaip $ip
done
如图:
存在问题(不知道是不是系统问题,可能其他人没问题):
重启以后内核无法加载ipset模块,但是ipset的确还在,不需要重新安装,只需要重新创建ip集,如下
ipset create chinaip hash:net maxelem 65536
ipset flush chinaip
for ip in $(cat './chinaip.txt'); do
ipset add chinaip $ip
done
service iptables restart
具体问题如下:重启系统以后发现防火墙规则全部不起作用(应该是防火墙没启动),然后service iptables restart重启防火墙提示: Applying firewall rules: iptables-restore v1.4.7: Kernel module ip_set is not loaded in.可能是内核问题
站点名称:Sword's Blog 杂货屋
本文链接:https://sword.studio/45.html
本博客所有文章除特别声明外,均采用知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的
鼠标点击学习核心价值观哈哈~
博主好人一生平安~刚学会用FRP连到家里的NAS~