如果开启了硬件 IP 包转发,那么路由器的 iptables 规则是不生效的。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tool2d
V2EX    路由器

如果开启了硬件 IP 包转发,那么路由器的 iptables 规则是不生效的。

  •  
  •   tool2d 2024-04-02 10:45:39 +08:00 1455 次点击
    这是一个创建于 559 天前的主题,其中的信息可能已经有所发展或是发生改变。
    也不是完全不生效,有 90%流量不走 iptables DROP 规则,直接硬件 HNAT 转发出去了,完全拦截不下来。

    昨天百思不得其解,tcpdump 也拦截不下来,明明就是有数据通过的。今天发现只要把硬件 IP 包转发关闭,也就是( Hardware NAT 功能关闭),就恢复正常了。

    路由器毕竟不是传统的 LINUX ,吃了经验的亏。
    9 条回复    2024-05-22 23:36:10 +08:00
    tool2d
        1
    tool2d  
    OP
       2024-04-02 10:59:42 +08:00
    昨天我试了

    iptables -t raw -I PREROUTING 1 -m mac --mac-source fc:aa:14:43:12:23 -j DROP

    对 TCP 和 ICMP 立刻生效,对一部分 UDP 不生效。

    真是整的怀疑人生,能不能拦截包,全看路由器的心情。
    2kCS5c0b0ITXE5k2
        2
    2kCS5c0b0ITXE5k2  
       2024-04-02 13:46:50 +08:00 via iPhone
    Hardware NAT 优先级比 iptables 优先级高
    ranaanna
        3
    ranaanna  
       2024-04-02 19:19:19 +08:00
    为什么一定要在 raw 表中定义 drop ?是出于 drop early drop fast ,从而减少系统开销的考虑?较早的时候 raw 表唯一的功能是给数据包一个 notrack ,所以也许是你的路由器在设计的时候并没有预料到你会这么早 drop 掉数据包?
    何不在缺省的 filter 表中试试,给系统预设的硬件加速一个机会?
    tool2d
        4
    tool2d  
    OP
       2024-04-02 19:53:40 +08:00
    @ranaanna 正常来说,也不是一开始对 raw 表下手的。是-t filter FORWARD 没生效后,就死马当活马医。

    当时我并不知道硬件加速会跳过一些 UDP 包,用 iptables -vL 看 pkts 数量完全不涨,但又不是 100%复现,所以才迷茫。
    ranaanna
        5
    ranaanna  
       2024-04-02 20:17:25 +08:00
    @tool2d 用 INPUT 链试试看?另外,对于 UDP ,是不是要用 REJECT ?不然对方没有出错信息,只是以为“拦截不下来”
    tool2d
        6
    tool2d  
    OP
       2024-04-03 09:37:33 +08:00
    @ranaanna 刚试了一下 INPUT ,不行。路由器只是转发包,走 FORWARD ,最终接收才是走 INPUT 。

    https://zersh01.github.io/iptables_interactive_scheme/ ,INPUT 和 FORWARD 似乎是两条分叉路径,二选一。
    ogodeikhan24k
        7
    ogodeikhan24k  
       2024-04-09 05:52:51 +08:00
    1. 你路由器是哪家平台?比如高通家的一般是 session 首包是走协议栈,后面包是走 fast path 的
    2. 你如果过滤 mac ,可以尝试下 ebtables , 不用 iptables
    tool2d
        8
    tool2d  
    OP
       2024-04-09 09:11:13 +08:00
    @ogodeikhan24k MTK Arm 的,我看 HNAT 表现和你说的高通很类似,只要 conntrack 没有代表首包,全部拦截下来了。后面 UDP 就是走 fast path 。
    feng0vx
        9
    feng0vx  
       2024-05-22 23:36:10 +08:00
    硬件转发的 ebtables 也拦不了吧,op 有没有试
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     917 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:00 PVG 05:00 LAX 14:00 JFK 17:00
    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