Skip to main content

Routeros v7 指定内网IP的出口

背景

我的网络环境接入了电信移动双出口,默认出口是电信。我划分了多个子网,他们分别有不同的作用

例如:

10.0.1.0/24 主要网络,分配静态地址
10.0.2.0/24 访客网络,分配动态地址

我现在想让 10.0.2.0/24 和 10.0.1.18/32 走移动出口,其他的子网走默认的电信出口

准备工作

新增一个cmcc路由表

/routing table
add disabled=no fib name=isp_cmcc

为cmcc路由表添加 0.0.0.0/0 的路由,gateway 为移动出口网关

/ip route
add comment="cmcc wan2" disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.1.1 pref-src="" routing-table=isp_cmcc scope=30 suppress-hw-offload=no target-scope=10

配置策略路由

我们有两种方式可以实现需求

方案一: routing rule

/routing rule
add action=lookup-only-in-table disabled=no src-address=10.0.1.18/32 table=isp_cmcc
add action=lookup-only-in-table disabled=no src-address=10.0.2.0/24 table=isp_cmcc

此时 10.0.2.0/24 和 10.0.1.18/32 已经可以走移动出口了

方案二: 使用 mangle 标记路由

/ip firewall mangle
add action=mark-routing chain=prerouting comment="ip to cmcc" disabled=no new-routing-mark=isp_cmcc passthrough=yes src-address=10.0.1.18
add action=mark-routing chain=prerouting comment="subnet to cmcc" disabled=no new-routing-mark=isp_cmcc passthrough=yes src-address=10.0.2.0/24

但是这种方案速度很慢,还不到 1 Mbps,如果可以接受没有硬件加速造成的性能下降,也可以直接关闭 fasttrack。(关闭后 PPPoE 出口性能非常差)

而 routing rule 的速度正常,并且配置更简单,所以还是推荐用 routing rule

内网互通

配置策略路由后,会发现内网无法互通

方案一: 内网走 cmcc table

添加一条 10.0.0.0/22 路由到 cmcc table

/ip route
add comment="cmcc lan" disabled=no distance=1 dst-address=10.0.0.0/22 gateway=bridge pref-src="" routing-table=isp_cmcc scope=30 suppress-hw-offload=no target-scope=10

方案二: 内网走 main table

用 mangle 指定源地址 10.0.2.0/24 到目标地址 10.0.1.0/24 走默认的 main table

/ip firewall mangle
add action=mark-routing chain=prerouting comment="lan access" dst-address=10.0.1.0/24 new-routing-mark=main passthrough=yes src-address=10.0.2.0/24

当然,也可以用 address-list 来指定多个网段

/ip firewall address-list
add address=10.0.1.0/24 list=lan
add address=10.0.2.0/24 list=lan
add address=10.0.2.0/24 list=lan
add address=10.0.2.0/24 list=cmcc
add address=10.0.1.18 list=cmcc

/ip firewall mangle
add action=mark-routing chain=prerouting comment="lan access" disabled=no dst-address-list=lan new-routing-mark=main passthrough=yes src-address-list=cmcc

和上边一样,使用 mangle 后内网速度会降到 1 Mbps。

这里也可以通过修改默认的 fasttrack ,让内网地址不走 fasttrack,速度会提升到 500~600Mbps。

/ip firewall filter
add action=fasttrack-connection chain=forward comment="fasttrack no lan" connection-state=established,related dst-address-list=!lan hw-offload=yes

这里推荐方案一,对速度无影响,还不用关闭 fasttrack