基于用户端IP地址的策略路由
如果你有很多的主机地址,你可以通过IP地址将他们分组。这时,指定源IP地址,发送的传输通过ISP1或者ISP2的网关出去。 让我们假设终端电脑的网络地址段为192.168.100.0/24,IP分配如下:
· 192.168.100.1-127分配到A组
· 192.168.100.128-253 分配到B组
· 192.168.100.254路由器本地IP地址(即内网的网关)
现在,我们通过子网划分的方式,将终端电脑进行分组:
· A组为192.168.100.0/25,地址范围:192.168.100.0-127
· B组为192.168.100.128/25,地址范围:192.168.100.128-255
如果你不能理解,请你查阅TCP/IP的相关教材或通过网上查找相关的子网划分资料!我们需要添加两个ip firewall mangle的规则,标记来至A组和B组终端电脑的数据包。
最好做一个注释,以便以后便于你自己或者别人查看和处理。
所有来至终端电脑的IP传输都通过路由标记为GroupA或者GroupB。这样我们可以标记到路由表中(routing table)。
下面,我们需要定义两个默认路给相应的路由标记和网关:
到这里,如果你没有对路由器做NAT的伪装,请在/ip firewall nat里添加src- Address=192.168.100.0/24 action=masquerade,在终端电脑上测试一下跟踪路由是否正确定义两个分组的默认路由:
A组测试如下情况:
B组测试如下情况:
MikroTik RouterOS可以支持多种策略路由,如我们常见的源地址、目标地址,同样支持端口的策略路由,多种规则可以根据用户情况配合使用,如下图:
现在我们通过下面的图解一步步实现端口的策略路由:
我们有两个ISP接入的线路,一个是WAN1: 211.162.172.23,一个是WAN2: 218.112.109.27(地址为假设),我们让默认的数据通过WAN1,让访问网页的数据通过WAN2。
现在我们定义访问网页的端口,访问网页的端口是TCP 80端口,我们进入/ip firewall mangle中做数据标记
首先我们标记80端口的连接,标记名为“http”然后我们从这些连接中提取我们想要的数据:
之后我们从标记中提取路由标记,命名为“web”,因为我们在前面的连接标记中做过了passthrough的设置,在这里就不用在重复设置。
然后我们进入/ip route,配置路由我们让标记好的80端口路由去WAN2的线路:
在这里,我们也可以通过/ip route rule来定义端口的规则:
让定义的web标记在一次回到web路由表中去查找网关。
透明传输整形器(Transparent Traffic Shaper)
这个事例将介绍如何配置一个透明传输整形器。透明整形器是建立在一个桥上,能区分和优先考虑什么样的传输通过。
现在考虑下面的网络拓扑:
在这里配置一组队列限制,一个客户端的总的通过量和三个子队列(HTTP、P2P和其他的传输数据),HTTP传输将优先在其他传输之上。
快速配置
配置代码(可以复制到MikroTik RouterOS执行):
分析
下面将解释每段代码的具体实现:
Bridge
建立一个新的bridge接口,并分配2个以太网卡给他:这样可以在两个网络间实现透明桥的功能
Mangle
所有符合TCP端口80及HTTP协议传输的数据,将标记为数据包标记为http ,注意:第一条规则设置为passthrough=yes,第二条为passthrough=no.
同上面所述,P2P传输被标记为数据包标记 p2p 并将剩下的传输标记为other.
Queues
创建一个队列,限制所有聪客户端来的流量传输为(指定客户端的target-address)256k/512k.
所有子队列排列入main 父系, 因此所有的带宽流量不会超过指定的main 队列注意:http 队列优先级高于其他队列,级HTTP流量将优先考虑。
对于电信和网通的IP地址段是已知,那么我们可以通过通过地址标记来实现对这些地址的流量控制,首先我们将电信和网通的地址段导入RouterOS的address-list中(可以在www.mikrotik.com.cn下载到)
通过import命令,导入地址列表:
导入后我们可以在/ip firewall address-list中找到:
配置数据标记mangle
进入/ip firewall mangle设置,这里我们定义访问电信的流量控制,我们的内网地址段为192.168.0.0/24,所有这里我们配置源地址src-address=192.168.0.0/24。在mangle中先标记连接,然后在从连接中提取数据包:
定义标记类型:
源代码:
/ ip firewall mangle
add chain=prerouting src-address=192.168.0.0/24 dst-address-list=Telecom action=mark-connection new-connection-mark=Telecom passthrough=yes comment="" disabled=no
现在从标记的连接Telecom中提取数据包:
源代码:
/ ip firewall mangle
add chain=prerouting connection-mark=Telecom action=mark-packet new-packet-mark=TEL passthrough=no comment="" disabled=no
配置simple queue
现在我们进入/queue simple对列中配置流控规则,在这里我们把到电信的带宽控制在1M上行和2M下行
源代码:
/ queue simple
add name="telecom" dst-address=0.0.0.0/0 interface=all parent=none packet-marks=TEL direction=both priority=8 queue=default-small/default-small limit-at=0/0 max-limit=1000000/2000000 total-queue=default-small disabled=no
这样对电信的带宽控制便完成,控制网通带宽同样的。