这几天把联通宽带也接入了。家里的路由实现了3线接入(电信+联通+移动)。
但随之而来的问题就是,如何指定某个IP地址只从某个接口走,某个IP地址实现三线自动选路,达到最优路径,且互不干扰同时能保障一些特殊需求以及内网互访的实现,另外除了标记内的路由,其余未做标记的流量均从电信出口走。
本文承接上文:https://blog.ich8.com/post/5908
由于一些设置已经进行过改动,并不保证与上文所述相同。
环境是 电信+联通+移动 三线接入,如果是双线,实现原理类似。
操作步骤如下,部分内容简述。
①位置 IP-Firewall-Mangle
点击+,新建如下图
General选项卡:Chain:input ; In.Interface:!lan1 除了lan口之外的连接都做连接标记。
Advanced选项卡:Src.Address.List:pppoe-out-auto-ip 自己填写,用于标定在指定地址内的内网IP列表。
Action选项卡:Action选择mark connection,New Connection Mark:pppoe-out-auto-conn 将指定连接标记名为pppoe-out-auto-conn
②
位置 IP-Firewall-Mangle
点击+,新建如下图
General选项卡:Chain:output ; Connection Mark:pppoe-out-auto-conn 。选择以标记为 pppoe-out-auto-conn 的连接创建新的路由标记。
Advanced选项卡:Dst.Address.List:pppoe-out-auto-ip 选择刚才已建立的,用于标定在指定地址内的内网IP列表。
Action选项卡:Action选择mark routing,New Routing Mark:pppoe-out-auto 将指定路由标记名为pppoe-out-auto
③
位置 IP-Firewall-Mangle
点击+,新建如下图
General选项卡:Chain:prerouting
Advanced选项卡:Src.Address.List:pppoe-out-auto-ip 选择刚才已建立的,用于标定在指定地址内的内网IP列表。
Action选项卡:Action选择mark routing,New Routing Mark:pppoe-out-auto 将指定路由标记名为pppoe-out-auto
④
位置 IP-Firewall-Address Lists
点击+,新建如下图
弹出窗口中:
name:pppoe-out-auto-ip 刚才建立的名为pppoe-out-auto-ip的地址列表
Address:填入内网需要加入自动选路的IP地址。
Comment:注释一下,可选。
⑤
位置 IP-Route-Rules
首先准备一份移动和联通的路由表,怎么找?比较简约的应该是 http://www.dnspod.cn/misc/iplist.txt,复杂完整的还是去apnic找找。
这里只提个大概,收集到的IP信息 需要先整理,做成可直接命令导入的方式,批量添加,具体怎么命令添加,网上搜索。如果超过500条路由表,建议分批次添加。否则winbox可能会没响应。
弹出窗口中:
Dst.Address:1.2.3.0/24 目标IP。
Routing Mark:pppoe-out-auto 选择需加入自动选路的IP地址列表。前面在防火墙里边以做标记。这样才能实现只有符合 pppoe-out-auto 地址列表里的路由标记才能匹配该条路由。
Table:pppoe-out-auto-cmcc 这里建议不同运营商标记为不同的表名称。
⑥
位置 IP-Route-Routes
此处分别要建立3个接口。分别为移动,联通,电信。电信为该地址列表下未在标记路由范围内的全局路由走向。
点击+,新建如下图
弹出窗口中:
Routing Mark:pppoe-out-auto-cmcc 已经填写好的路由表名称。比如这里选择移动。
Gateway:pppoe-out-2 比如我这里pppoe-out-2接口为移动,那么就选择pppoe-out-2
Distance:1 路由表优先级,可以修改。假设该条将来会出现某些IP需要从不同接口走,但又是处于该表下面,发生重复的情况,则需要修改路由表优先级以实现能优先选择。
至于电信联通,照着建立。
需要注意一点的是电信部分。
首先参见图:
对于所有未标记的地址,需要选择一个接口作为出口,否则可能出现地址不能到达或者在其他两个接口里面随意走的情况。
同时如果你有一些其他路由表标记,且假设同一个运营商有多个出口的情况下,则该条建议放置于IP-Route-Rules的最底层。IP-Route-Rules是按序号有优先顺序的。
⑦