2015年12月

前言

ROS 中配置完 PCC 后的 PPPoE 流量

目前公司有近百台设备,
申请两条电信 100M 光纤,
之前几个月一直分成两个网络在使用,
除了偶尔某条线过于繁忙之外也没什么不便。

最近我搭了内网的研发测试环境,
势必要将设备统一到同个办公内网。
索性买了一台与家里型号相同的 RB850Gx2
准备除了合并网络之外顺便做多线负载均衡。

介绍

ROS 官网介绍了多种 LB 方案
用得较多的分 PCC (Per Connection Classifier) 和 Nth 两种;
我理解二者的区别主要在于:前者基于 IP 而后者基于连接,
因此后者从流量角度来说更为均衡,而前者稳定性更佳;
办公网当然是稳定压倒一切。

配置

官网教程通常选用固定 IP 做示例,
咱们动态 IP 用户需要稍作调整 (参考此文),
记录如下——<!--more-->

标记所有从 WAN 口进入且未经标记的流量

注意规则中的 no-mark 是系统保留字,代表未经标记的连接。
WAN_1WAN_2 是 ROS 中对两个 WAN 口的命名,若有更多 WAN 规则可类推。

/ip firewall mangle
add chain=input action=mark-connection new-connection-mark=WAN_1 passthrough=no in-interface=PPPOE-Out_1 connection-mark=no-mark comment="Mark All Incoming WAN Connections w/o Any Marks"
add chain=input action=mark-connection new-connection-mark=WAN_2 passthrough=no in-interface=PPPOE-Out_2 connection-mark=no-mark

将相同的标记打到出口流量上

/ip firewall mangle
add chain=output action=mark-routing new-routing-mark=WAN_1 passthrough=no out-interface=PPPOE-Out_1 connection-mark=WAN_1 comment="Attach the Same Routing Mark to the Outgoing Connections with the Incoming One"
add chain=output action=mark-routing new-routing-mark=WAN_2 passthrough=no out-interface=PPPOE-Out_2 connection-mark=WAN_2

PCC

Ether-Master-Local 请设置为 LAN 口的 Master Port (或是 Bridge 模式下的接口);
若有更多 WAN 规则可类推。

/ip firewall mangle
add chain=prerouting action=mark-connection new-connection-mark=WAN_1 passthrough=yes dst-address-type=!local in-interface=Ether-Master-Local connection-mark=no-mark per-connection-classifier=both-addresses:2/0 log=no log-prefix="" comment="Split the Internal Connections Equally Amongst All WANs"
add chain=prerouting action=mark-connection new-connection-mark=WAN_2 passthrough=yes dst-address-type=!local in-interface=Ether-Master-Local connection-mark=no-mark per-connection-classifier=both-addresses:2/1 log=no log-prefix=""

让不同标记的流量走不同的路由

/ip firewall mangle
add chain=prerouting action=mark-routing new-routing-mark=WAN_1 passthrough=no in-interface=Ether-Master-Local connection-mark=WAN_1 comment="Attach A Routing Mark to the Marked Connections"
add chain=prerouting action=mark-routing new-routing-mark=WAN_2 passthrough=no in-interface=Ether-Master-Local connection-mark=WAN_2

导向不同的出口网关

设置不同 distance 值做“灾备”。

/ip route
add dst-address=0.0.0.0/0  gateway=PPPOE-Out_1 routing-mark=WAN_1 distance=1
add dst-address=0.0.0.0/0  gateway=PPPOE-Out_1 routing-mark=WAN_2 distance=2

NAT

亦可去掉 out-interface 合成一条。

/ip firewall nat
add chain=src-nat  out-interface=PPPOE-Out_1 action=masquerade
add chain=src-nat  out-interface=PPPOE-Out_1 action=masquerade

至此配置完毕。















- 阅读剩余部分 -