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

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

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

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

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

    第 1 种不是正常方式,也会出现你现在担忧的问题。
    chronos
        2
    chronos  
       246 天前   ❤️ 1
    我有个想法,需要主路由和旁路由都是软路由。

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