求一个 openwrt 的 iptables 规则 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
simplove
V2EX    宽带症候群

求一个 openwrt 的 iptables 规则

  •  
  •   simplove 2022-04-04 19:59:07 +08:00 4147 次点击
    这是一个创建于 1285 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有多台网络设备想通过 zerotier 组网,要求能够过 upd 的广播包。 试了以下两种方案。

    方案一是直接在两台电脑上面安装 zerotier 客户端,一台电脑发包,另外一台电脑抓包,实测可以收到 udp 包。

    方案二是直接在 openwrt 上用插件组网,电脑删除客户端,测试收不到 udp 包。 测试的 upd 抓包如下: 方案一可行那说明 zerotier.com 上面的设置是 OK 的。

    方案二过了 oepwnrt 路由器,那说明应该是 openwrt 导致的问题,在网上找了很多转发广播包的贴子,试了很多次发现都不行。

    有没有大佬给解个惑,谢谢

    第 1 条附言    2022-04-04 21:21:12 +08:00

    内网发包过去是没问题的。过了zerotier就不行了。

    openwrt的防火墙也关闭了

    zerotier上面的路由也做了,桥接是开的,关了也试过都不行。

    22 条回复    2022-05-11 15:31:41 +08:00
    Tyanboot
        1
    Tyanboot  
    PRO
       2022-04-04 20:05:35 +08:00
    方案二需要 zt 开启桥接功能吧。
    Aixiaoa
        2
    Aixiaoa  
       2022-04-04 20:08:24 +08:00 via iPhone
    看看 op 的防火墙设置
    simplove
        3
    simplove  
    OP
       2022-04-04 20:15:43 +08:00
    @Aixiaoa #iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
    iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
    [ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
    [ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
    只有默认的,试过了很多规则发现都不行。
    simplove
        4
    simplove  
    OP
       2022-04-04 20:16:33 +08:00
    @Tyanboot 桥接那个勾很早就打上了,就是不行。
    PC1 直接 ping PC2 是没问题的。
    cinhoo
        5
    cinhoo  
       2022-04-04 20:33:23 +08:00
    iptables -I FORWARD -i ztxxxxxxxx -j ACCEPT
    iptables -I FORWARD -o ztxxxxxxxx -j ACCEPT
    iptables -t nat -I POSTROUTING -o ztxxxxxxxx -j MASQUERADE
    Aixiaoa
        6
    Aixiaoa  
       2022-04-04 20:47:42 +08:00
    @simplove 你有试过关闭 firewall 么 或者更改过接口的 multicast_snooping 配置么
    hbytw1
        7
    hbytw1  
       2022-04-04 20:52:34 +08:00
    需要在 zerotier 控制端做路由。
    10.10.10.0/24 192.168.99.3
    192.168.1.0/24 192.168.99.1
    0.0.0.0/0 192.168.99.1
    192.168.3.0/24 192.168.99.3
    192.168.8.0/24 192.168.99.3
    指定访问那个 ip 段扔给那个 openwrt
    simplove
        8
    simplove  
    OP
       2022-04-04 21:13:16 +08:00
    @Aixiaoa ![]( https://s3.bmp.ovh/imgs/2022/04/04/1178fa9a412c6607.png)
    防火墙关闭了还是不行。
    在 openwrt 的实时连接里面可以看到能收到包,就是怎么样能把它转发给电脑是个问题
    simplove
        9
    simplove  
    OP
       2022-04-04 21:14:47 +08:00
    @yuantianwei 路由是有做的,不然 PC1 也不能 ping 通 PC2 了
    Aixiaoa
        10
    Aixiaoa  
       2022-04-04 21:16:34 +08:00
    @simplove 嗯 我知道你的 op 肯定可以收到广播包
    现在的问题实际上就在于 op 似乎默认把你的广播包给丢了 没有传给你 op 下面的设备
    如果你可以在 op 上抓包的话 我希望你能看下这个包在哪里被丢弃的 我需要更多的信息
    JohnSmith
        11
    JohnSmith  
       2022-04-04 21:54:35 +08:00 via iPhone
    抓包看看是不是 mss 的问题 我之前也才过坑
    Aixiaoa
        12
    Aixiaoa  
       2022-04-04 22:17:57 +08:00
    @simplove 正常来讲 广播包跨域默认丢弃的 所以你内网直接发和在 pc 上直接跑 zerotier 都是正常的 但是过了 op 就是不同的广播域 你现在应该看下是在 op 的哪里丢掉的 不过希望应该不大
    是否可以把你的 broadcast 转换成 multicast 呢?
    Aixiaoa
        13
    Aixiaoa  
       2022-04-05 00:11:05 +08:00
    simplove
        14
    simplove  
    OP
       2022-04-05 00:12:29 +08:00
    @Aixiaoa 用 Wireshark 抓了下 openwrt 上的包。
    plink.exe -batch -ssh -pw password [email protected] "tcpdump -ni br-lan -s 0 -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
    发现并没有抓到目的地址是 255.255.255.255 的包,实时链接里面有,看来应该是 openwrt 把包给丢了。
    上面的这种环境实用算是方案三,一边是 pc 端安装 zerotier 客户端,一边是 openwrt 插件。
    在这种环境下,openwrt 实时链接里面还能看到有 udp 包过来。
    而在方案二里,openwrt 收不到 udp 包,应该是包直接被丢了。
    目前在网上找到的最靠谱的是这个贴子: https://www.haiyun.me/archives/1443.html
    可惜由于版本过高安装不了 iptables-mod-tee 。
    q403809607
        15
    q403809607  
       2022-04-05 00:14:47 +08:00 via Android
    你把 zerotier 上的路由表发上来看看
    simplove
        16
    simplove  
    OP
       2022-04-05 00:22:24 +08:00
    @Aixiaoa 这个我之前看到了。
    整理之后应该是这个样子的
    iptables -t mangle -A INPUT -i br-lan -d 255.255.255.255 -m ttl --ttl-gt 0 -j TTL --ttl-set 1
    iptables -t mangle -A INPUT -i ztrtatf7n4 -d 255.255.255.255 -m ttl --ttl-gt 0 -j TTL --ttl-set 1
    iptables -t mangle -A INPUT -i br-lan -d 255.255.255.255 -m ttl --ttl-gt 0 -j TEE --gateway 192.168.1.255
    iptables -t mangle -A INPUT -i ztrtatf7n4 -d 255.255.255.255 -m ttl --ttl-gt 0 -j TEE --gateway 192.168.192.255

    192.168.192.255 是 zerotire 的广播地址
    192.168.1.255 是本地的广播地址。
    这么写应该没错,不过仍然不行
    simplove
        17
    simplove  
    OP
       2022-04-05 00:26:36 +08:00
    @q403809607 ![]( https://www.png8.com/imgs/2022/04/05/8a1877e285b6c870.png)
    两台 pc 都可以直接 ping 通了,路由是可达的。
    Aixiaoa
        18
    Aixiaoa  
       2022-04-05 00:38:25 +08:00 via iPhone
    @simplove 这个规则和你说的 tee 装不了。其实都是同样的啊。 这个规则也需要 tee 支持。 不过你可以看下这个 https://github.com/nomeata/udp-broadcast-relay 编译一个带这个的 op 试试
    haohaolee
        19
    haohaolee  
       2022-04-05 16:52:14 +08:00 via Android
    这是广播域的问题,iptables 主要还是三层的,(虽然也有 ebtables )
    建议还是规规矩矩来,跑一个 UDP proxy 监听你要的端口,然后转发到另外一个接口,比如 br-lan
    st05329602009
        20
    st05329602009  
       2022-04-05 20:54:10 +08:00 via Android
    @yuantianwei 大佬的 planet 怎么联系你
    hbytw1
        21
    hbytw1  
       2022-04-06 22:51:31 +08:00
    @st05329602009 自己做个就可以了啊
    hbytw1
        22
    hbytw1  
       2022-05-11 15:31:41 +08:00
    @st05329602009 加微信:MTUwMTA5MzA1MDI=
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3602 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:47 PVG 08:47 LAX 17:47 JFK 20:47
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86