diff --git a/README.md b/README.md index 8a8c5cc..fccebeb 100644 --- a/README.md +++ b/README.md @@ -283,3 +283,84 @@ sudo systemctl status clash.service ## 实时滚动状态 ## sudo journalctl -u clash.service -f ``` +## 六.配置防火墙转发规则(使用root用户登录) +*这个步骤是踩坑最深的地方,网上看了很多教程,然后反复尝试,一直失败,最后才成功,到现在我都不明白究竟怎么回事,还在学习中,反正用下面的方法能成功* +#### 1.创建转发规则 +创建sh文件 +``` +nano ip.sh +``` +输入以下内容(10.10.10.97:53为旁路由IP与Clash的DNS监听端口,7892为Clash的redir-port,根据实际情况修改) +``` +#!/bin/bash +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +iptables -t nat -N clash +iptables -t nat -N clash_dns + +iptables -t nat -A PREROUTING -p tcp --dport 53 -d 198.18.0.0/24 -j clash_dns +iptables -t nat -A PREROUTING -p udp --dport 53 -d 198.18.0.0/24 -j clash_dns +iptables -t nat -A PREROUTING -p tcp -j clash + +iptables -t nat -A clash_dns -p udp --dport 53 -d 198.18.0.0/24 -j DNAT --to-destination 10.10.10.97:53 +iptables -t nat -A clash_dns -p tcp --dport 53 -d 198.18.0.0/24 -j DNAT --to-destination 10.10.10.97:53 + +iptables -t nat -A clash -d 1.0.0.0/8 -j ACCEPT +iptables -t nat -A clash -d 10.0.0.0/8 -j ACCEPT +iptables -t nat -A clash -d 100.64.0.0/10 -j ACCEPT +iptables -t nat -A clash -d 127.0.0.0/8 -j ACCEPT +iptables -t nat -A clash -d 169.254.0.0/16 -j ACCEPT +iptables -t nat -A clash -d 172.16.0.0/12 -j ACCEPT +iptables -t nat -A clash -d 192.168.0.0/16 -j ACCEPT +iptables -t nat -A clash -d 224.0.0.0/4 -j ACCEPT +iptables -t nat -A clash -d 240.0.0.0/4 -j ACCEPT +iptables -t nat -A clash -d 192.168.1.2/32 -j ACCEPT + +iptables -t nat -A clash -p tcp --dport 22 -d 10.10.10.97/32 -j ACCEPT + +iptables -t nat -A clash -p tcp -j REDIRECT --to-ports 7892 +``` +赋予执行权限 +``` +chmod +x ip.sh +``` +执行(如没错误,应该没返回任何东西) +``` +bash ip.sh +``` +#### 2.利用ipupdown保存规则 +*此处感谢TG墙洞群的大佬 风蚀残叶 | 御伽話の夢 定めった夢 @wzw1997007 的耐心教导* +保存规则 +``` +udo iptables-save > /etc/iptables.rules +``` +创建ifup +``` +sudo nano /etc/network/if-pre-up.d/iptables +``` +填入以下内容并保存退出 +``` +#!/bin/bash +iptables-restore < /etc/iptables.rules +``` +赋予执行权限 +``` +sudo chmod a+x /etc/network/if-pre-up.d/iptables +``` +创建ifdown +``` +sudo nano /etc/network/if-post-down.d/iptables +``` +填入以下内容并保存退出 +``` +#!/bin/bash +iptables-save > /etc/iptables.rules +``` +赋予执行权限 +``` +sudo chmod a+x /etc/network/if-post-down.d/iptables +``` +``` +sudo systemctl start clash.service +```