提醒下:PCC负载均衡在国内,仅适用于相同运营商的多线均衡!
RouterOS v7在路由策略配置方面有所变动,新建路由表,不能直接在ip route rule和mangle下创建,只能通过routing table配置,下面通过一个双线的PCC负载均衡策略事例,介绍下v7的PCC配置方式,网络大致情况如下:
- 出口线路1地址10.200.15.99/24,网关:10.200.15.1,接口ether1;
- 出口线路2地址10.200.100.99/24,网关:10.200.100.2,接口ether2;
- 内网IP地址192.168.100.1/24,接口ether3;
首先配置IP地址
[admin@MikroTik] > ip address/ [admin@MikroTik] /ip/address> add address=10.200.15.99/24 interface=ether1 [admin@MikroTik] /ip/address> add address=10.200.100.99/24 interface=ether2 [admin@MikroTik] /ip/address> add address=192.168.100.1/24 interface=ether3
创建策略路由表,V7最大的改动在于策略路由表,策略路由表只能在routing table下创建,mangle和ip route rule无法在创建策略路由表,:
[admin@MikroTik] /ip/address> /routing/table/ [admin@MikroTik] /routing/table> add name=route1 fib [admin@MikroTik] /routing/table> add name=route2 fib
进入ip firewall mangle标记
[admin@MikroTik] /routing/table> /ip firewall/mangle/ [admin@MikroTik] /ip/firewall/mangle>
MikroTik官方在新的文档中加入了新的mangle规则,接受从内网口到目标地址是外网IP地址段的通过,就说大家常说的多线端口映射的回流配置,这部分是mangle里面的,但是否成功还要取决于你的nat规则配置,不是这一条就能解决的,但这条从这种方式来说又是必须的,当然mangle里面还有其他方式的配置,RouterOS的灵活就这么可怕!
add action=accept chain=prerouting in-interface=ether3 dst-address=10.200.15.0/24 add action=accept chain=prerouting in-interface=ether3 dst-address=10.200.100.0/24
需要注意上面两条规则必须是在所有规则之前优先处理,也就是在mangle prerouting链表里面的规则序列必须是0和1
创建两组PCC策略,方式和之前v6一样,这里加入了一个参数connection-mark=no-mark,用于标记为被标记的数据流,首先创建第一组PCC策略
add chain=prerouting action=mark-connection connection-mark=no-mark dst-address-type=!local new-connection-mark=pcc1 passthrough=yes per-connection-classifier=both-addresses:2/0 src-address=192.168.100.0/24 add chain=prerouting action=mark-routing connection-mark=pcc1 new-routing-mark=route1 passthrough=yes src-address=192.168.100.0/24
创建第二组PCC策略
add chain=prerouting action=mark-connection connection-mark=no-mark dst-address-type=!local new-connection-mark=pcc2 passthrough=yes per-connection-classifier=both-addresses:2/1 src-address=192.168.100.0/24 add action=mark-routing chain=prerouting connection-mark=pcc2 new-routing-mark=route2 passthrough=yes src-address=192.168.20.0/24
定义IP数据报从那个接口进入,就按原路从那个接口回去,即保证每个外网口的数据能得到正确的路由,这里采用的是prerouting链表,不再使用input链表,有助于多线端口映射的配置。
/ip firewall mangle add chain=prerouting connection-mark=no-mark in-interface=ether1 action=mark-connection new-connection-mark=pcc1 add chain=prerouting connection-mark=no-mark in-interface=ether2 action=mark-connection new-connection-mark=pcc2
继续在mangle下添加入接口连接的路由标记:
add chain=output connection-mark=pcc1 action=mark-routing new-routing-mark=route1 add chain=output connection-mark=pcc2 action=mark-routing new-routing-mark=route2
进入ip route添加两条出口的策略路由
[admin@MikroTik] /ip/route> add gateway=10.200.15.1 routing-table=route1 [admin@MikroTik] /ip/route> add gateway=10.200.100.1 routing-table=route2
最后配置nat转换规则,进入ip firewall nat中配置action=masquerade,分别对2条线路做伪装:
/ip firewall nat add action=masquerade chain=srcnat out-interface=ether1 add action=masquerade chain=srcnat out-interface=ether2