V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
n
V2EX  ›  问与答

请教一个软路由上的 iptables 问题

  •  
  •   n · 2022-01-04 12:32:13 +08:00 · 1668 次点击
    这是一个创建于 1083 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教各位老师一个问题,我在自己的软路由上加了这么个 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
    

    如果有老师知道问题出在哪,还望不吝赐教!🙏

    3 条回复    2022-01-04 22:39:08 +08:00
    blackeeper
        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 链了?
    neroxps
        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
    n
        3
    n  
    OP
       2022-01-04 22:39:08 +08:00
    回复楼上两位老师一声,首先说,我确实是不清楚发生了什么:

    一楼 @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 之类的(我乱猜的)?

    总之问题看起来解决了,但又应该没彻底解决,接下来几日有可能会再次出现,到时候我按着后面的猜测测试下。

    总之,非常感谢两位的指点。万分感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2965 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:13 · PVG 21:13 · LAX 05:13 · JFK 08:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.