请教各位老师一个问题,我在自己的软路由上加了这么个 iptables 规则,主要是为了把 3 个端口的 tcp 流量给 clash 。然后我发现了一个问题,就是这样做会使同花顺客户端( mac 版本)无法登陆(另外空调也无法联网了),如果去掉最后两个 PREROUTING 规则,就没问题,我实在是不知道自己哪里做错了。
另外,最后的 iptables -t nat -A PREROUTING -j ACCEPT
是我上周加的,当时加完问题就全解决了,昨晚发现又不行了。奇怪。
iptables -t nat -N CLASH
iptables -t nat -A CLASH -d 10.0.0.0/8 -j RETURN
iptables -t nat -A CLASH -d 127.0.0.0/8 -j RETURN
iptables -t nat -A CLASH -d 169.254.0.0/16 -j RETURN
iptables -t nat -A CLASH -d 172.16.0.0/12 -j RETURN
iptables -t nat -A CLASH -d 192.168.0.0/16 -j RETURN
iptables -t nat -A CLASH -d 224.0.0.0/4 -j RETURN
iptables -t nat -A CLASH -d 240.0.0.0/4 -j RETURN
# Commonly used ports.
iptables -t nat -A CLASH -p tcp -j REDIRECT --to-port 9999
# For fake-ip.
iptables -t nat -A OUTPUT -p tcp -d 198.18.0.0/16 -j CLASH
# For DNS request.
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 5353
# For all tcp connection.
iptables -t nat -A PREROUTING -p tcp -m multiport --dports 22,80,443 -s 10.10.1.1/16 -j CLASH
iptables -t nat -A PREROUTING -j ACCEPT
如果有老师知道问题出在哪,还望不吝赐教!🙏
1
blackeeper 2022-01-04 15:02:39 +08:00 1
倒数第二这个配置有问题,如果你是想整个网段那么写 10.10.0.0/16 ,如果只是单个主机:10.10.1.1/32 。
然后就是把这个 tcp 流量给 clash ,clash 的流量是不是又走到软路由的 clash 链了? |
2
neroxps 2022-01-04 15:42:47 +08:00 1
如果 clash 是用 fake-ip 模式,那就必须把全部流量导向它,否则拿到的 IP 全是 fake-ip 当然不可以联网。
但是听你说去掉 -j CLASH 就好了,那么应该不是 fake-ip 模式。 那就得排查 clash 日志为何 tcp 流量转发给它之后,它没正确的发出去。 假设源地址是 10.10.1.3 电脑 目的地址是 123.222.1.1 (假设是同花顺) 端口 443 按照上面规则,会跑到 CLASH 最终转发给 9999 clash 收到后会比对 ip 库,发现是 CN 区域,就会把数据包直接发出去。综上所述删掉 PREROUTING 的规则就正常,那么问题肯定是在 clash 上。op 应该没有做 snat |
3
n OP 回复楼上两位老师一声,首先说,我确实是不清楚发生了什么:
一楼 @blackeeper 指出的 10.10.0.0/16 肯定是没错的,我给改了。然后同花顺还是登陆不了,于是我把所有的规则都给删了,同花顺可以登录了。然后我一条条的往回加,加到倒数第二条(刚改的那条)时,同花顺依然能登陆,此时我就真的不明白到底发生了什么了。另外,我还试了把 10.10.0.0/16 改回错误的 10.10.1.1/16 ,同花顺依然能登陆。太奇怪了。 所以我猜测,是不是我删除 iptables 的操作导致某个和 ip 有关的记录被重置了?比如 clash 的 fake-ip 的 store-fake-ip 或者 dns cache 之类的(我乱猜的)? 总之问题看起来解决了,但又应该没彻底解决,接下来几日有可能会再次出现,到时候我按着后面的猜测测试下。 总之,非常感谢两位的指点。万分感谢! |