查看: 502|回复: 0

RouterOS通过VRRP实现单线多拨以及PCC负载均衡

[复制链接]
  • TA的每日心情
    开心
    2019-10-1 22:17
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    323

    主题

    333

    帖子

    2792

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    2792
    发表于 2019-5-7 20:24:10 | 显示全部楼层 |阅读模式
    单线多拨/一线多拨需要运营商的支持,可以达到叠加速度(也要运营商支持)以及获取多个IP地址的目的。
    ROS可以通过VRRP显示PPPOE多拨,本文虚拟机虚拟ROS以及自建PPPoE服务器,WAN口是ether1,LAN口是ether2,来实现1线3拨以及使用PCC规则来达到负载均衡的效果。

    1、VRRP设置
    打开“Interfaces” - “VRRP”,点击“+”
    添加3个VRRP,name分别为vrrp1,vrrp2,vrrp3
    VRRP选项卡分别设置vrrp1的VRID为1,vrrp2的VRID为2,vrrp3的VRID为3
    2、PPPoE Client拨号设置
    打开“PPP” - “Interface”,点击“+”,选择“PPPoE Client”
    创建3个pppoe拨号,name分别为pppoe-out1,pppoe-out2,pppoe-out3,以及Interfaces分别选择vrrp1,vrrp2,vrrp3
    Dial out选项卡。分别去掉“Add Default Route”的勾(不添加默认路由)
    3、配置LAN ip地址和激活vrrp虚拟接口配置ip地址
    打开“IP” - “Addresses”,点击“+”
    添加内网LAN:Addess:192.168.1.1/24 Network:192.168.1.0 Interface:ether2
    添加外网WAN:Addess:192.168.88.1/24 Network:192.168.88.0 Interface:ether1
    添加vrrp1:Addess:192.168.88.11/24 Network:192.168.88.0 Interface:vrrp1
    添加vrrp2:Addess:192.168.88.12/24 Network:192.168.88.0 Interface:vrrp2
    添加vrrp3:Addess:192.168.88.13/24 Network:192.168.88.0 Interface:vrrp3
    PS:Wan口也就是ether1要和vrrp同一个网段的
    4、路由设置
    打开“IP” - “Routes”,点击“+”
    添加3条默认路由Gateway:pppoe-out1,Gateway:pppoe-out2,Gateway:pppoe-out3,分别对标记为R1,R2,R3指定线路
    5、标记内网要走的线路以及提取路由标记指定走pppoe线路
    打开“ip” - “Firewall” - “Mangle”,点击“+”
    添加3条标记规则
    Chain选择“prerouting”,Src.Address填写内网ip(我这里是192.168.1.0/24),这边3条标记都是一样的
    advanced选项卡,Per Connection Classifier选择“both addresses”
    第一条标记:“both addresses”:3/0,
    第二条标记:“both addresses”:3/1,
    第三条标记:“both addresses”:3/2
    Extra选项卡 Dst.Address Type中Address Type选择local,并勾上Invert,表示非本地,三条标记一样
    Action选项卡 Action选择“mark connection”,New Connection Mark填写标记名称
    第一条标记New Connection Mark填写PCC1
    第二条标记New Connection Mark填写PCC2
    第三条标记New Connection Mark填写PCC3

    新建3条提取路由标记和指定路由的规则
    Chain选择“prerouting”,Src. Address填写内网LAN地址,我这里是192.168.1.0/24,Connection Mark填写刚才标记的名称(需要创建3条规则)
    第一条Connection Mark填写PCC1
    第二条Connection Mark填写PCC2
    第三条Connection Mark填写PCC3
    这边Action选择“mark routing”,New Routing Mark填写要走pppoe的名称,这边3条规则分别填写R1,R2,R3
    以上规则脚本代码:

    1. /ip firewall mangle
    2. add action=mark-connection chain=prerouting dst-address-type=!local \
    3.     new-connection-mark=PCC1 passthrough=yes per-connection-classifier=\
    4.     both-addresses:3/0 src-address=192.168.1.0/24
    5. add action=mark-connection chain=prerouting dst-address-type=!local \
    6.     new-connection-mark=PCC2 passthrough=yes per-connection-classifier=\
    7.     both-addresses:3/1 src-address=192.168.1.0/24
    8. add action=mark-connection chain=prerouting dst-address-type=!local \
    9.     new-connection-mark=PCC3 passthrough=yes per-connection-classifier=\
    10.     both-addresses:3/2 src-address=192.168.1.0/24
    11. add action=mark-routing chain=prerouting connection-mark=PCC1 \
    12.     new-routing-mark=R1 passthrough=yes src-address=192.168.1.0/24
    13. add action=mark-routing chain=prerouting connection-mark=PCC2 \
    14.     new-routing-mark=R3 passthrough=yes src-address=192.168.1.0/24
    15. add action=mark-routing chain=prerouting connection-mark=PCC3 \
    16.     new-routing-mark=R2 passthrough=yes src-address=192.168.1.0/24
    复制代码

    6、路由回路配置,确保同一个会话的数据从相同出口进出。
    新建3条input规则,设置Chain:input,In.Interface选择入口
    第一条规则:In.Interface选择pppoe-out1
    第二条规则:In.Interface选择pppoe-out2
    第三条规则:In.Interface选择pppoe-out3
    标记入口连接,action选择mark connection,New Connectin Mark选择对应的标记
    第一条规则:New Connectin Mark选择PCC1
    第二条规则:New Connectin Mark选择PCC2
    第三条规则:New Connectin Mark选择PCC3

    新建3条output规则,设置Chain:output,Connectin Mark选择刚才标记的
    第一条规则:Connectin Mark选择PCC1
    第二条规则:Connectin Mark选择PCC2
    第三条规则:Connectin Mark选择PCC3
    标记默认路由,action选择mark routing,New Routing Mark选择对应的标记
    第一条规则:New Routing Mark选择R1
    第二条规则:New Routing Mark选择R2
    第三条规则:New Routing Mark选择R3
    以上规则脚本代码:
    1. /ip firewall mangle
    2. add action=mark-connection chain=input in-interface=pppoe-out1 \
    3.     new-connection-mark=PCC1 passthrough=yes
    4. add action=mark-connection chain=input in-interface=pppoe-out3 \
    5.     new-connection-mark=PCC3 passthrough=yes
    6. add action=mark-connection chain=input in-interface=pppoe-out2 \
    7.     new-connection-mark=PCC2 passthrough=yes
    8. add action=mark-routing chain=output connection-mark=PCC1 new-routing-mark=R1 \
    9.     passthrough=yes
    10. add action=mark-routing chain=output connection-mark=PCC3 new-routing-mark=R3 \
    11.     passthrough=yes
    12. add action=mark-routing chain=output connection-mark=PCC2 new-routing-mark=R2 \
    13.     passthrough=yes
    复制代码

    7、配置nat规则
    打开“IP” - “Firewall” -“NAT” ,点击“+”
    创建一条规则,Chain选择srcnat
    action选项卡,action选择masquerade
    以上规则脚本代码:
    1. /ip firewall nat
    2. add action=masquerade chain=srcnat
    复制代码

    到此差不多结束了。实际环境存在的问题就是当有PPPoE掉线的时候,会导致内网部分网络不通。可以使用脚本来解决。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则