V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjx0524
V2EX  ›  宽带症候群

请教关于「旁路由」的使用

  •  
  •   xjx0524 · 2023-09-23 15:39:11 +08:00 · 4427 次点击
    这是一个创建于 425 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我理解的现在旁路由的设置方式应该是有两种:
    1 、主路由、旁路由互相将网关指向对方,这样整个局域网内设备都会经过旁路由
    2 、只有旁路由网关指向主路由,局域网内设备需要手动配置网关才可以使用旁路由

    想问的是,如果使用 1 的方案,有没有可能在旁路由 挂了 或 瞎配置网络不通 的情况下,主路由自动的不再使用旁路由。有什么比较成熟的方案达到这种效果吗?
    第 1 条附言  ·  2023-09-24 12:32:07 +08:00
    方案一描述有误,实际应为主路由下发 dhcp 配置网关指向旁路由。
    因为目前是单主路由,没有实际操作过旁路由的设置,只是看了些乱七八糟的教程,所以理解不是很正确。

    通过大家的讨论和搜索,了解到 vrrp 或策略路由等新知识,也打算学习下 ROS 、pfsense 、opnsense 这些系统,生命在于折腾(狗头
    31 条回复    2023-09-28 18:45:14 +08:00
    Alwaysonline
        1
    Alwaysonline  
       2023-09-23 15:48:48 +08:00
    我认知中,旁路由只有第 2 种,

    第 1 种不是正常方式,也会出现你现在担忧的问题。
    chronos
        2
    chronos  
       2023-09-23 17:08:30 +08:00   ❤️ 1
    我有个想法,需要主路由和旁路由都是软路由。

    1. 首先让主路由负责 DHCP ,并让 DHCP 分配的网关 IP 指向一个 VIP 。
    2. 旁路由的路由网关 IP 指向主路由。
    3. 主路由写一个检测脚本监控旁路由的上网,如果成功就将 VIP 指向软路由,失败就将 VIP 指向主路由。
    xjx0524
        3
    xjx0524  
    OP
       2023-09-23 17:50:30 +08:00
    @chronos 搜了下有 vrrp 协议和 keepalived 这个工具,打算研究一下
    leonshaw
        4
    leonshaw  
       2023-09-23 18:08:44 +08:00 via Android
    PBR + track
    zhy0216
        5
    zhy0216  
       2023-09-23 19:06:36 +08:00 via Android
    你用第二种 然后主路由分配地址的时候网关指向旁路由就好了 不需要手动设置
    dream0689
        6
    dream0689  
       2023-09-23 20:23:09 +08:00 via iPhone
    目前用的第二种方案,实际上也没必要所有设备都过旁路由吧,毕竟会多一次转发,增加延迟。
    Jeremial
        7
    Jeremial  
       2023-09-23 20:46:22 +08:00   ❤️ 1
    目前在用第二种,用的是 RouterOS 。
    下发 DHCP 配置的时候,部分 MAC 地址下发网关指向旁路由,其余设备仍然下发网关指向主路由。
    主路由配置定时任务,定时检查旁路由是否在线,如果旁路由离线,就把下发的旁路由改为下发主路由。
    uses090
        8
    uses090  
       2023-09-23 20:56:14 +08:00 via iPhone
    第一和第二种没有任何区别,网关互指是 dhcp 层面的事情,无非就是全走旁路了而已,并没有多增加一次转发
    uses090
        9
    uses090  
       2023-09-23 21:02:01 +08:00 via iPhone   ❤️ 1
    另外可以通过 sdwan 实现可编程的网络设计,只是设备很贵
    xjx0524
        10
    xjx0524  
    OP
       2023-09-23 21:09:56 +08:00
    @Jeremial 请教下,下发网关配置具体是怎么做到的呢? openwrt 上只看到有静态地址分配
    dream0689
        11
    dream0689  
       2023-09-23 21:13:04 +08:00 via iPhone
    @uses090 我今天发现主路由如果设置出口策略选路,旁路由会影响使用效果。假设针对局域网的指定 ip 段(如 192.168.0.10-19)做仅使用出口 WAN1 ,那么对应设备(如 192.168.0.14)的网关 ip 就不能指向旁路由(如 192.168.0.2),要指向主路由(如 192.168.0.1),否则只会执行针对旁路由 ip(192.168.0.2)的选路,而不会执行设备本身(192.168.0.14)的仅使用 WAN1 出口。
    实际上设备(如 192.168.0.14)网关指向访问旁路由(如 192.168.0.2)访问外网时,trace 时第一跳是 192.168.0.2 ,第一跳是 192.168.0.1 。
    bjzhou1990
        12
    bjzhou1990  
       2023-09-23 21:40:37 +08:00   ❤️ 1
    策略路由,非国内 IP 走旁路网关,默认走主网关,同时对旁路网关开启 gateway check ,掉线自动禁用,这是我现在 ROS 的策略,openwrt 也有策略路由的功能,应该也能实现这个逻辑
    y1y1
        13
    y1y1  
       2023-09-23 21:43:24 +08:00
    也不知道是哪个小天才想出来的这个叫法,主路由的网关又不是旁路由,只不过是把主路由 dhcp 下发的网关从主路由 ip 修改为旁路由 ip 。
    你说的这俩其实没啥区别,无非是第二种需要在设备上手动修改网关罢了。
    Jeremial
        14
    Jeremial  
       2023-09-23 21:49:37 +08:00
    @xjx0524 #10 我不太清楚 openwrt 怎么选择性下发 dhcp option.
    主路由只用过 routeros, 配置分配静态 IP 的时候,可以配置这个 IP 接收不同的 dhcp option, 包含 DSN server ip, gateway ip.
    cslive
        15
    cslive  
       2023-09-23 22:37:49 +08:00 via Android
    我选择方法 2 ,局域网内手动指定网关,旁路由坏掉不会影响主路由
    lo0pback
        16
    lo0pback  
       2023-09-23 23:11:35 +08:00
    我是做了 vrrp
    bao3
        17
    bao3  
       2023-09-24 01:36:19 +08:00
    第一种如果互指,有没有形成路由环路……一个 arp ,从主路由广播到旁路由,再从旁路由广播回主路由…… vrrp 也并不能解决问题,还是跟前面朋友提到的,在主路由 dhcp 里把网关设定为旁路由吧。
    xixiv5
        18
    xixiv5  
       2023-09-24 05:13:59 +08:00
    我用第一种 因为我是 all in boom 要挂一起挂
    neroxps
        19
    neroxps  
       2023-09-24 09:28:35 +08:00 via iPhone
    这种拓扑,不知道为什么必须要分 2 个路由,随便一方炸了都出问题,何不合在一起?
    neroxps
        20
    neroxps  
       2023-09-24 09:30:01 +08:00 via iPhone
    @bao3 是路由环路,不是 arp 。得做路由策略防止路由环路。不是简单的所谓“网关互指”
    bao3
        21
    bao3  
       2023-09-24 09:42:05 +08:00
    @neroxps 你说得我懂,但我说得你不懂。arp 只是举一个广播域的例子。做路由策略我当然懂,楼主并没有提这个。楼主能这样互指,应该他并不熟悉路由,所以他也不知道 vrrp ,谈路由策略,似乎对方案一没有帮助。更好的方式就是方案二,省心。
要说路由策略,连城网核心 bgp 我都要设计调试,但没必要和楼主去做讨论,拿原子弹解决旁路由,可能你会觉得有意义,我觉得就是空气
    neroxps
        22
    neroxps  
       2023-09-24 10:37:08 +08:00 via iPhone
    @bao3 emmm 拿 L2 的协议去讨论 L3 的场景,我挺担心你家的城域网。
    bao3
        23
    bao3  
       2023-09-24 12:11:33 +08:00
    @neroxps 抱歉,原来 arp 是 Layer 2 ,我一直以为它是 layer2 和 layer 3 之间的协议。是我的锅
    nieccyyy
        24
    nieccyyy  
       2023-09-24 12:21:25 +08:00 via iPhone
    方案 2 比较好,也可以拓展一下,主路由 dhcp 下发网关和 dns 指定到旁路由。
    chinni
        25
    chinni  
       2023-09-24 14:55:42 +08:00   ❤️ 1
    还有第三种
    主力出口路由器 A
    代理服务器所在设备 B
    局域网其他设备 CDE
    B 网关是 A, CDE 网关是 A
    在 A 设备的 mangle 表 来区分 CDE 或者其他 把他的 next hop 设置为 B
    这样也可以的. 另外 A 设备还能根据 dst ip 来设置是否 next hop 为 B 或者 从 A 直接出去.
    以上描述 就是 policy based route (pbr)
    HOOC
        26
    HOOC  
       2023-09-24 20:03:07 +08:00 via iPhone   ❤️ 2
    @xjx0524 routeros 在 winbox 下可以设置 dhcp option set 为某些设备分配特殊网关和 dns ,openwrt 需要修改/etc/dnsmasq.conf ,在里面添加 dhcp-host 和 dhcp-option 实现类似的功能。
    Sn00w
        27
    Sn00w  
       2023-09-24 20:46:32 +08:00
    方案 1 与方案 2 本质上大体是一样的
    要说明的是,在方案 1 中主路由设置旁路由为网关,并不是说把主路由的网关设置成旁路由,而是告诉主路由下面的设备应该使用旁路由地址作为其网关。主路由所使用的网关是不会被更改的,比如在我的场景下,我的主路由的网关依然是光猫。
    这也就是为什么主路由旁路由网关”互指“没有造成循环的原因
    lj0014
        28
    lj0014  
       2023-09-25 11:31:56 +08:00   ❤️ 1
    vrrp 可以实现自动故障转移网关,我有发贴分享过。
    我现在主路由是爱快,使用分流模块的下一跳网关来指向旁路由,也能实现自动故障转移。
    Ipsum
        29
    Ipsum  
       2023-09-25 21:50:42 +08:00
    为啥搞这么复杂?直接 dns 分流器,需要扶墙的域名转发到 clash 的 dns ,其他走正常 dns 。配上 clash 的 fakeip ,主路由设置 fakeip 的静态路由到 clash 网关不就行了?
    gunner168
        30
    gunner168  
       2023-09-28 14:05:03 +08:00 via iPhone
    padavan 可以用脚本自动检测旁路由状态,如果旁路由在线就将 dhcp 设为旁路由,反之如果检测不到旁路由就自动改回来,openwrt 不太清楚,理论上应该还是可以实现的
    windrun
        31
    windrun  
       2023-09-28 18:45:14 +08:00   ❤️ 1
    @xjx0524 #10 openwrt 可以参考我之前写的 https://www.haoyizebo.com/posts/d461b93f/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3909 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:21 · PVG 13:21 · LAX 21:21 · JFK 00:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.