0%

Mikrotik路由器配置IPv6分流

前情提要

平时玩PT,我希望我的PT下载机访问网络时不经过代理,这样我的IPv4和IPv6都处于能连通的状态下,能更好的刷上传量。

我在家里通过OSPF的方式来宣告海外的路由,对于IPv4的设备,我在Routing - Rules中配置指定特定IPv4地址的设备走特定的路由表就可以实现。

而对于IPv6来说,IPv6的地址并不是由路由器分配管理的,我的理解是客户端收到IPv6 Prefix后,自己生成完整的IPv6地址,所以没办法用Routing - Rules的配置方法

配置IPv6分流

配置IPv6的Routing Mark

Routing - Table里添加排除路由表,这里我将新的路由表命名为bypass_ospf_v6
可以用命令配置

1
[admin@MikroTik] > routing/table/add name="bypass_ospf_v6" fib

配置IPv6的防火墙规则

既然没办法从地址的信息来匹配源设备,我觉得可以通过源MAC地址来判断设备,一般来说,除非开启了随机MAC地址,或有手动修改,内网设备MAC地址应该是固定不变的,我可以通过MAC地址的信息来判断哪些设备不需要通过代理。

那我就需要配置防火墙mangle规则,位于IPv6 - Firewall - Managle

配置命令如下,记得将xxxxx替换为你需要的源目标地址

1
ipv6/firewall/mangle/add chain=prerouting src-mac-address=xxxxx action=mark-routing new-routing-mark="bypass_ospf_v6" passthrough=no

配置额外的Routing Rule

经过了上面的配置,理论上指定的MAC设备访问IPv6网络的时候,不会在经过OSPF宣告的main表,用traceroute6命令时,应该也能看到这条防火墙规则有流量变化,但你可能仍然发现指定MAC设备仍然没有按预期运行,总结来说,就是仍然匹配到了main表,在网上查到的解决方案是,添加lookup_only_in_table规则,命令如下

1
routing/rule/add routing-mark=bypass_ospf_v6 action=lookup-only-in-table table=bypass_ospf_v6

意思就是对于有bypass_ospf_v6标志的,只在bypass_ospf_v6的路由表中查询路由。

添加bypass_ospf_v6默认路由

1
ipv6/route/add dst-address=::/0 gateway=pppoe-out1 routing-table=bypass_ospf_v6

经过以上步骤的配置,指定设备的IPv6应该就只走bypass_ospf_v6表而不走main表了。