routeros7 的源进源出的 bug - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
terrancesiu
V2EX    宽带症候群

routeros7 的源进源出的 bug

  •  
  •   terrancesiu 2024-02-05 10:48:38 +08:00 2692 次点击
    这是一个创建于 693 天前的主题,其中的信息可能已经有所发展或是发生改变。
    说下环境,联通 3 条宽带,3 个 ipv4 公网属于同一 25 的的子网。
    需求是
    pppoe-out1 国内出站和入站
    pppoe-out2 国内三网的 wireguard 入站和出站
    pppoe-out3 国外策略路由的入站的出站

    按常规的操作做了源进源出后,ipv6 没问题,ipv4 的 tcp 没问题,但是 ipv4 的 udp 会失败,导致基于 udp 的 wireguard 从 pppoe-out2 入站和出站失效。

    后来浏览 mikrotik 的论坛,发现老外也提到这个问题

    只需要建立三个策略由表,出口分别是三个接口,最后在策略路由规则增加对应接口的地址即可。操作如下(省略了源进源出的 mangle 配置):
    /routing table
    add disabled=no fib name=pppoe-out1-routing
    add disabled=no fib name=pppoe-out2-routing
    add disabled=no fib name=pppoe-out3-routing

    /ip route
    add distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-table=pppoe-out1-routing scope=30 target-scope=10
    add distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-table=pppoe-out2-routing scope=30 target-scope=10
    add distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out3 routing-table=pppoe-out3-routing scope=30 target-scope=10

    /routing rule
    add action=lookup comment=pppoe-out1 disabled=no src-address=你的 pppoe-out1 的公网地址 table=pppoe-out1-routing
    add action=lookup comment=pppoe-out2 disabled=no src-address=你的 pppoe-out2 的公网地址 table=pppoe-out2-routing
    add action=lookup comment=pppoe-out3 disabled=no src-address=你的 pppoe-out3 的公网地址 table=pppoe-out3-routing

    最后在更新 ddns 脚本里加上一小段把这个 rule 更新下,所有问题修复了。
    8 条回复    2025-02-24 18:14:14 +08:00
    jmxct520
        1
    jmxct520  
       2024-02-05 11:15:08 +08:00
    nb ,我头疼了好几个月了,老板 NB
    514146235
        2
    514146235  
       2024-02-05 11:45:47 +08:00
    这个不是 v7 的 bug ,用法就是这样的。
    xPKK1qofAr6RR09O
        3
    xPKK1qofAr6RR09O  
       2024-02-05 12:02:46 +08:00
    "常规的操作"的操作是什么
    terrancesiu
        4
    terrancesiu  
    OP
       2024-02-05 12:18:58 +08:00
    wacke
        5
    wacke  
       2024-02-05 14:20:15 +08:00
    其实不是 ipv4 udp 会有问题。。。。根源是 wireguard 的 ipv4 不遵循源进源出,而是直接使用默认路由表的默认路由。。。
    参考: t/856378
    https://github.com/openwrt/packages/issues/9538

    这个鸟问题 wireguard 官方是完全不打算修正。。。
    onion83
        6
    onion83  
       2024-02-05 14:59:02 +08:00
    v4/v6 双栈自动添加路由规则脚本,可在 /ppp/profiles 新建一个 profiles 在 on up 中填入,然后 pppoe 拨号时引入

    ```
    {
    :local ifc WZ-CTC-300M; # FIXME pppoe 接口
    :local itb ctc; # FIXME 自定义路由表

    :delay 3s;
    :local ipv4 [/ip/address get [find interface=$ifc] address];
    :local ipv6 [/ipv6/address get [find interface=$ifc and global] address];
    :local ipv4 [:pick $ipv4 0 [:find $ipv4 "/"]]
    :local ipv6 [:pick $ipv6 0 [:find $ipv6 "/"]]

    :if ($ipv4 != "") do={
    /routing/rule remove [find comment="$itb-v4"];
    /routing/rule add action=lookup-only-in-table src-address=$ipv4 table=$itb comment="$itb-v4";

    /routing/rule remove [find comment="$itb-v6"];
    /routing/rule add action=lookup-only-in-table src-address=$ipv6 table=$itb comment="$itb-v6";

    :put $ipv4; :put $ipv6;
    :log warning "[redail] $ifc -- IP changed to $ipv4 / $ipv6";
    } else={
    :log warning "[redail] IP address not available. Redial may not have occurred.";
    }
    }
    ```
    说明:
    ---------------
    1 、以上脚本未经长时间测试,请谨慎修改使用
    2 、其中 ipv6 部分为根据 prefix 在 pool 中手动分配,其它情况请酌情修改 (参考: https://post.smzdm.com/p/aqm47w6p/)
    terrancesiu
        7
    terrancesiu  
    OP
       2024-02-05 15:24:40 +08:00
    @wacke 感谢提示
    polaris1
        8
    polaris1  
       308 天前
    老哥,我问一下如果 pppoe 地址是动态的,怎么及时更新新的 pppoe 的地址呢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3301 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:13 PVG 19:13 LAX 03:13 JFK 06:13
    Do have faith in what you're doing.
    ubao msn 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