好多时候都担心ros出问题,估计不会有人希望半夜或其他什么不方便的时候被人叫去解决问题,关键是单一的路由一旦出现问题,网络瘫痪导致的损失可能不是大多数人能承受的,最好的解决方法就是双机热备,ros提供了一个非常简便且强大的协议VRRP,全称是虚拟路由冗余协议,这个协议可以最大使用255台路由设备作热备份,在当前路由出现故障时自动切换到备用路由,保证网络的通畅。 使用环境及相关问题: - 官方教程是双线双机备份,下面给出的设置只是双机vrrp的设置。
- 外网双线的原因:0 [, }* B/ h& H% Q8 f( I: w
- c) @/ b7 n0 Y1 [& Z- vrrp实际上是一种内网保证策略,它提供的多路由检测都是从内网进行的,保障的也是内网服务的正常提供,并不保障外网线路的正常,鉴于外网故障依然会导致访问问题,所以使用双线是另外的一重保险。
- 如果没有双线,最少也需要两个公网ip:这点主要从可能出现的问题做的要求。单线单ip和单线单账户拨号都可能导致切换后路由无法访问网络的问题,即使用脚本也很难解决。如果不明白,这里提示下,假设下面情况,两台路由做vrrp,都接入交换机,主路由的交换机端口出现问题,造成主路由与内网失去联系,备用路由在与主路由失去联系后自动切换到主路由状态,这时的情况是:原来的路由除了不能访问内网外其他都正常,它并不知道问题出现的位置,所以他依然工作在master状态下,新的备份路由切换到master状态后,问题出现了,它们两个使用了相同的外网ip或外网帐号。当然你可能已经想到了另外的一个解决办法,不过这需要某些设备,这里就不讨论了。
R0 m" b) t0 V& U8 J4 w! `
; x; ^; [4 v |2 l
- o- y: D; |. ~# _5 N% g
VRRP设置步骤: - 每个路由需要单独测试代理上网的设置能够正常工作。
- 假设VRRP的虚拟网关ip是192.168.1.254,所有客户机的网关应设为此ip。
- 主路由:- ^. t: \ e$ k5 A
8 h9 y3 o% O% a3 K* C% M- /interface vrrp add name="vrrp1" interface=Lan priority=200
- /ip address add address=192.168.1.254/32 interface=vrrp1
- }' {4 S6 a5 c$ }" e, i* |1 j1 B2 D9 p
- 副路由:1 I ?6 @6 d2 w3 f7 G3 t8 O
, _ J0 h- l/ [: t
- /interface vrrp add name="vrrp1" interface=Lan priority=100
- /ip address add address=192.168.1.254/32 interface=vrrp1% T; Q8 N- z# b, a
3 B2 Y- P7 c* F6 W+ n& P ]& T6 v
- 选项释义:; k5 z) S5 G1 K4 h
- s0 ^2 A* j& ^- Vrrp中的interface是内网网卡的名称。
- priority是优先级,从1-255,数越大级别越高,主路由级别要高于备份路由。如果有一台路由的内网ip也是192.168.1.254,等同于虚拟ip,那么它的优先级默认就是255,也就是最高级,这台设备被称作owner。
- vrid默认是1,可以认为是vrrp组的编号。
- interval:vrrp状态更新间隔,单位秒,默认为1
- preemption-mode:这个选项如果勾选,主路由在恢复正常后会拿回控制权,否则不会。
- authentication:认证选项,联合password可以使用密码。
- version:这个比较特殊,3.30版本没有这个选项,5.6版本存在,具体不知道在哪个版本开始加上的,5.6的默认值是3,支持ipv6协议,但3.30不支持,假设3.30和5.6混合组vrrp,那么5.6的那个这个选项要选择2。
- 同一组的路由vrid、interval、preemption-mod、authentication都必须选择一样的。
- Ip设置中使用了/32,有人说是必须用,官方教程没有特别说明,/24的没有测试。 }; O! }! E: O
8 Q2 o7 @# x. T- V
5 @9 M/ ^7 e/ F7 H# }# o
. u: T" N: l, ?6 ?& S |