提示
PCC 负载均衡在国内,仅适用于相同运营商的多线均衡!不同运营商受到不同路径和 DNS 影响会
导致上网故障。
说明
RouterOS v7 在路由策略配置方面有所变动,新建路由表,不能直接在 ip route rule 和 mangle 下创
建,只能通过 routing table 配置,下面是网络拓扑结构图,接入两个外网固定 IP,一个内网 IP 段
配置过程和讲解
IP 地址配置:
路由外网接入 ether1 和 ether2,地址分别是 10.111.0.2/24 和 10.112.0.2/24,ehter3 作为内网
IP 地址为 192.168.1.1/24.
/ip address
add address=192.168.1.1/24 interface=ether3
add address=10.111.0.2/30 interface=ether1
add address=10.112.0.2/30 interface=ether2
Mangle 标记
通过 mangle 标记,并配置策略路由,可以强制指定流量到特定的网关,策略路由是创建新的路由表,
但这样会导致路由器本地外网 IP 路由无法被查询,因为本地外网 IP 的路由查询是在 main 路由表,这样会
导致内网 IP 段无法访问到路由器本地公网 IP 地址,路由器的 IP 仍然被发现外网出口的网关,这种方式将产
生路由环路。为了避免这种情况,将允许外网接口 IP 地址使用 main 路由表进行路由查询
/ip firewall mangle
add chain=prerouting dst-address=10.111.0.0/30 action=accept in-interface=ether3
add chain=prerouting dst-address=10.112.0.0/30 action=accept in-interface=ether3
需要注意上面两条规则必须是在所有规则之前优先处理,也就是在 mangle prerouting 链表里面的规则
序列必须是 0 和 1
创建两组 PCC 策略,方式和之前 v6 一样,【特别说明下:加入了一个参数 connection-mark=no-mark】,
用于标记未被标记的数据流,创建第一组 PCC 策略:
/ip firewall mangle
add chain=prerouting in-interface=ether1 connection-mark=no-mark action=mark-connection
new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ether2 connection-mark=no-mark action=mark-connection
new-connection-mark=ISP2_conn
`注意:定义 IP 数据包从那个接口进入,就按原路从那个接口回去,即保证每个外网口的数据能得到正确
的路由,这里采用的是 prerouting 链表,不再使用 input 链表,有助于多线端口映射的配置。`
RouterOS v7 不同于之前的所有版本,在标记路由之前,必须在/routing/table 创建路由表
/routing/table
add fib name=to_ISP1
add fib name=to_ISP2
Action=mark-routing 只能用于链表(chain)为 output 和 prerouting,但 prerouting 用户抓
取所有流量包括到路由器自身的,因此需要使用 dst-address-type=!local.来排除本地流量。按照源地址和
目标地址来建立 PCC 规则,并标记 2 组连接,官方的配置采用的是 in-interface 为内网口 ether3,这个配
置可以替换为源地址 src-address/src-address-list
/ip firewall mangle
add chain=prerouting in-interface=ether3 connection-mark=no-mark dst-address-type=!local
per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ether3 connection-mark=no-mark dst-address-type=!local
per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn
给所有来自之前标记连接的数据包打上路由标记。入接口为内网口 ether3
/ip firewall mangle
add chain=prerouting connection-mark=ISP1_conn in-interface=ether3 action=mark-routing
new-routing-mark=to_ISP1
add chain=prerouting connection-mark=ISP2_conn in-interface=ether3 action=mark-routing
new-routing-mark=to_ISP2
add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1
add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2
NAT 配置,配置流量通过 ether1 和 ether2 外网口出去的 nat 伪装规则:
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade
add chain=srcnat out-interface=ether2 action=masquerade
添加 2 条 PCC 标记的策略路由
/ip route
add gateway=10.111.0.1@main routing-table=to_ISP1 check-gateway=ping
add gateway=10.112.0.1@main routing-table=to_ISP2 check-gateway=ping
如果你是 PPPoE 拨号的出口,拨号接口是 pppoe-out1 和 pppoe-out2,配置如下:
/ip route
add gateway=pppoe-out1@main routing-table=to_ISP1
add gateway= pppoe-out2@main routing-table=to_ISP2
出处说明
本文摘自互联网,有些博客,有些论坛,为广大网友给出,本文仅作为记录,因我自己也有需求,但是记忆不行,本文作为笔记,同时也给广大网友提供例子,免得到处搜索找资料