You are on page 1of 13

ROS 菜鸟系列 4--简单路由策略实现

本章节是以“ROS 菜鸟系列 1”为基础,同时也可以应用到系列 2,系列 3 上面,实


现功能的完善,

路由策略:可以实现数据传输路径的优化,数据分流,线路备份,变相的实现带宽添
加等。

本章节涉及的主要是较为简单的三种路由策略:1)基于端口分流的路由策略,2)
基于目标地址 3)基于源地址

只有在具备多条外网线路的情况下才涉及到分流,备份及优化的部分,因此假定引进
第二条 ISP 线路:外网 IP 地址:10.10.10.2/28,网关 10.10.10.1

实现第一步:添加 IP 地址

[admin@MikroTik] > ip address

[admin@MikroTik] /ip address> add address=10.10.10.2/28 interface=wan

[admin@MikroTik] /ip address> print

Flags: X - disabled, I - invalid, D - dynamic

#   ADDRESS            NETWORK         BROADCAST       INTERFACE              

0   192.168.1.1/24     192.168.1.0     192.168.1.255   lan                    

1   172.16.0.2/28      172.16.0.0      172.16.0.15     wan                    


2   10.10.10.2/28      10.10.10.0      10.10.10.15     wan

实现第二步:标记数据包

1)基于端口标记

假定:对所有去访问目标 80 端口数据进行标记,同时客户可以根据自己的需要对其
他端口进行标记,以达到符合的自己要求

[admin@MikroTik] > ip

[admin@MikroTik] /ip>firewall

[admin@MikroTik] /ip firewall>mangle

#添加连接标记规则

[admin@MikroTik] /ip firewall mangle>add chain=prerouting protocol=tcp


dst-port=80 action=mark-connection new-connection-mark=web
passthrough=yes

#添加路由标记规则

[admin@MikroTik] /ip firewall mangle>add chain=prerouting connection-


mark=web action=mark-routing new-routing-mark=80 passthrough=no

[admin@MikroTik] /ip firewall mangle> print

Flags: X - disabled, I - invalid, D - dynamic


0   chain=prerouting action=mark-connection new-connection-mark=web

passthrough=yes protocol=tcp dst-port=80

1   chain=prerouting action=mark-routing new-routing-mark=80


passthrough=no connection-mark=web

以上完成对访问端口的标记,

# 假定所有的 80 端口数据将从第二条 ISP 线路走,而其他的数据从第一条 ISP 线路


[admin@MikroTik] /ip firewall mangle>/

[admin@MikroTik]ip route

[admin@MikroTik] /ip route>add gateway=10.10.10.2 routing-mark=80


check-gateway=ping

admin@MikroTik] /ip route> print

Flags: X - disabled, A - active, D - dynamic,

C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,

B - blackhole, U - unreachable, P - prohibit

#      DST-ADDRESS        PREF-SRC        GATEWAY-STATE GATEWAY           


DISTANCE INTERFACE  
0 A S  0.0.0.0/0                          reachable     10.10.10.2        1        wan        

1 A S  0.0.0.0/0                          reachable     172.16.0.1        1        wan        

2 ADC  10.10.10.0/28      10.10.10.2                                      0        wan        

3 ADC  172.16.0.0/28      172.16.0.2                                      0        wan        

4 ADC  192.168.1.0/24     192.168.1.1                                     0        lan   

2)基于目标地址分流

假定访问目标地址为 58.17.1.234 的数据从第二条 ISP 线路走

第一种方法:此时可以直接在 IP-ROUTE 里面添加规则

如:

[admin@MikroTik] > ip

[admin@MikroTik] /ip> rout

[admin@MikroTik] /ip route>add dst-address=58.17.1.234


gateway=10.10.10.1 check-gateway=ping

admin@MikroTik] /ip route> print

Flags: X - disabled, A - active, D - dynamic,

C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,


B - blackhole, U - unreachable, P - prohibit

#      DST-ADDRESS        PREF-SRC        G GATEWAY              DISTANCE IN..

0 A S  0.0.0.0/0                          r 172.16.0.1           1        wan

1 ADC  10.10.10.0/28      10.10.10.2                             0        wan

2 A S  58.17.1.234/32                     r 10.10.10.1           1        wan

3ADC  172.16.0.0/28      172.16.0.2                             0        wan

4ADC  192.168.1.0/24     192.168.1.1                            0   

第二种:可以先在 IP--route--rule 里面添加:

[admin@MikroTik] >ip rou

[admin@MikroTik] /ip route>rule

[admin@MikroTik] /ip route rule>add dst-address=58.17.1.234 Table=static


action=lookup

[admin@MikroTik] /ip route rule>print

Flags: X - disabled, I - inactive

0   dst-address=58.17.1.234/32 action=lookup table=static

然后在添加路由:
[admin@MikroTik] /ip route rule>..

[admin@MikroTik] /ip route>add gateway=10.10.10.1 routing-mark=static


check-gateway=ping

[admin@MikroTik] /ip route>print

Flags: X - disabled, A - active, D - dynamic,

C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,

B - blackhole, U - unreachable, P - prohibit

#      DST-ADDRESS        PREF-SRC        G GATEWAY              DISTANCE IN..

0 A S  0.0.0.0/0                          r 172.16.0.1           1        wan

1 A S  0.0.0.0/0                          r 10.10.10.1           1        wan

2 ADC  10.10.10.0/28      10.10.10.2                             0        wan

3 ADC  172.16.0.0/28      172.16.0.2                             0        wan

4 ADC  192.168.1.0/24     192.168.1.1                            0        lan

第三种:可以先在 ip---firewall--address-list 里面添加地址表

[admin@MikroTik] >ip firewall address-list

[admin@MikroTik] /ip firewall address-list>add list=static


address=58.17.1.234

[admin@MikroTik] /ip firewall address-list>print

Flags: X - disabled, D - dynamic

#   LIST                                       ADDRESS                        

0   static                                     58.17.1.234     

对目标地址标记:

[admin@MikroTik] /ip firewall address-list>..

[admin@MikroTik] /ip firewall>mangle

[admin@MikroTik] /ip firewall mangle>add chain=prerouting dst-address-


list=static action=mark-routing  new-routing-mark=static passthrough=no

[admin@MikroTik] /ip firewall mangle>print

Flags: X - disabled, I - invalid, D - dynamic

0   chain=prerouting action=mark-routing new-routing-mark=static

passthrough=no dst-address-list=static

添加路由标记

[admin@MikroTik] /ip firewall mangle>/


[admin@MikroTik] >ip route

[admin@MikroTik] /ip route>add gateway=10.10.10.1 routing-mark=static


check-gateway=ping

[admin@MikroTik] /ip route>print

Flags: X - disabled, A - active, D - dynamic,

C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,

B - blackhole, U - unreachable, P - prohibit

#      DST-ADDRESS        PREF-SRC        G GATEWAY              DISTANCE IN..

0 A S  0.0.0.0/0                          r 172.16.0.1           1        wan

1 A S  0.0.0.0/0                          r 10.10.10.1           1        wan

2 ADC  10.10.10.0/28      10.10.10.2                             0        wan

3 ADC  172.16.0.0/28      172.16.0.2                             0        wan

4 ADC  192.168.1.0/24     192.168.1.1                            0        lan

使用第一种方法,可以快速简单的添加定义每一条规则,但会使用整个 ip-route 里
面显得很杂乱,不便于管理,第二种方法和第三种方法相对比较复杂些,但会让整个 ip-
route 里面简单明了,便于管理

3)基于源地址策略
第一种:假定内网 192.168.1.0/25 走第一条 ISP 出口,内网 192.168.1.128/25 走第
二条 ISP 出口

#做标记

[admin@MikroTik] >ip firewall mangle

[admin@MikroTik] /ip firewall mangle>add chain=prerouting src-


address=192.168.1.0/25 action=mark-routing  new-routing-mark=GA

[admin@MikroTik] /ip firewall mangle>add chain=prerouting src-


address=192.168.1.128/25 action=mark-routing new-routing-mark=GB

[admin@MikroTik] /ip firewall mangle>print

Flags: X - disabled, I - invalid, D - dynamic

0   chain=prerouting action=mark-routing new-routing-mark=GA


passthrough=yes

src-address=192.168.1.0/25

1   chain=prerouting action=mark-routing new-routing-mark=GB


passthrough=yes

src-address=192.168.1.128/25

#做路由策略

[admin@MikroTik] /ip firewall mangle>/


[admin@MikroTik] >ip

[admin@MikroTik] /ip>route

[admin@MikroTik] /ip route>add gateway=172.16.0.1 routing-mark=GA


check-gateway=ping

[admin@MikroTik] /ip route>add gateway=10.10.10.1 routing-mark=GB


check-gateway=ping

[admin@MikroTik] /ip route>print

Flags: X - disabled, A - active, D - dynamic,

C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,

B - blackhole, U - unreachable, P - prohibit

#      DST-ADDRESS        PREF-SRC        G GATEWAY              DISTANCE IN..

0 A S  0.0.0.0/0                          R 10.10.10.1           1        wan

1 A S  0.0.0.0/0                             r 172.16.0.1           1        wan

2 A S  0.0.0.0/0                          R 172.16.0.1           1        wan

3 ADC  10.10.10.0/28      10.10.10.2                             0        wan

4 ADC  172.16.0.0/28      172.16.0.2                             0        wan


5 ADC  192.168.1.0/24     192.168.1.1                            0        lan

这种方法,其实可以只用做 192.168.1.128/25 的内网 IP 段的标记即可,因为存在一


条默认路由:1 A S  0.0.0.0/0                             r 172.16.0.1           1        wan ,当
192.168.1.0/25 的 Ip 段,当找不到相应的标记路由时,路由器会最终选择默认路由进行
转发出去。

第二种方法:(适用于内网非连续的 IP 地址段)

如假定:192.168.1.10,192.168.1.20-192.168.1.50,192.168.1.100-110 的机
器走第二条 ISP 出口,其他走原第一条 ISP 出口

添加地址列表:

[admin@MikroTik] > ip

[admin@MikroTik] /ip>firewall address-list

[admin@MikroTik] /ip firewall address-list>add list=static


address=192.168.1.10

[admin@MikroTik] /ip firewall address-list>add list=static


address=192.168.1.20-192.168.1.50

[admin@MikroTik] /ip firewall address-list>add list=static


address=192.168.1.100-192.168.1.110

[admin@MikroTik] /ip firewall address-list>print

Flags: X - disabled, D - dynamic


#   LIST                                       ADDRESS                        

0   static                                     192.168.1.10                  

1   static                                     192.168.1.20-192.168.1.50      

2   static                                     192.168.1.100-192.168.1.110

标记源地址段的 IP 地址

[admin@MikroTik] /ip firewall address-list>..

[admin@MikroTik] /ip firewall>mangle

[admin@MikroTik] /ip firewall mangle>add chain=prerouting src-address-


list=static action=mark-routing new-routing-mark=static

[admin@MikroTik] /ip firewall mangle> print

Flags: X - disabled, I - invalid, D - dynamic

0   chain=prerouting action=mark-routing new-routing-mark=static

passthrough=yes src-address-list=static

添加路由策略标记

[admin@MikroTik] /ip firewall mangle>/

[admin@MikroTik] /ip route>add gateway=10.10.10.1 routing-mark=static


check-gateway=ping

[admin@MikroTik] /ip route>print

Flags: X - disabled, A - active, D - dynamic,

C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,

B - blackhole, U - unreachable, P - prohibit

#      DST-ADDRESS        PREF-SRC        G GATEWAY              DISTANCE IN..

0 A S  0.0.0.0/0                          R 10.10.10.1           1        wan

1 A S  0.0.0.0/0                          r 172.16.0.1           1        wan

2 ADC  10.10.10.0/28      10.10.10.2                             0        wan

3 ADC  172.16.0.0/28      172.16.0.2                             0        wan

4 ADC  192.168.1.0/24     192.168.1.1                            0        lan

解释部分相关的参数:check-gateway:具备有两个选值 ping 和 arp,意思是通过使


用 ping 或者 arp 的功能对上层网关进行测试,当某条线路探测不通时,路由会把从该线
路转发的数据自动跳转至其他备份的线路上面,当探测恢复时,线路会再自动跳转回来,
从而实现线路的自动备份。

如果是通过 winbox 登录 ROS 时,以上的命令均可在主菜单的“new terminal”里


面直接粘贴使用。

You might also like