192.168.1.0/24
IP范围的ADSL路由器(主要互联网连接),连接到我的Mikrotik路由器的Ethernet 1 (广域网端口)172.200.1.0/24
IP范围的ADSL路由器(连接到主分支的VPN连接),连接到我的Mikrotik路由器的Ethernet 2192.168.88.0/24
(每个人都使用WiFi和物理连接连接到此路由器)。221.35.12.x
),他们的数据包必须路由到Ethernet 2,这是连接到主分支的第二个ADSL。第一个ADSL的网关是192.168.1.1
,第二个是172.200.1.17
。
到目前为止,我已经成功地访问了第二个ADSL的网关,但是当我平移221.35.12.x
的实际目的地地址时,它返回unreachable
,当我访问该地址时,它显示数据包进入192.168.88.1
,然后从那里下降。
有人能用一个完整的解决方案来帮助上面的场景吗?
发布于 2020-10-13 07:39:38
初步设置:您将需要设置两个广域网连接。假设IFC1
是第一个广域网端口(例如ether1
)接口,IFC2
是第二个广域网端口(例如ether5
)。
/interface list member add interface=IFC1 list=WAN
/interface list member add interface=IFC2 list=WAN
/ip dhcp-client add interface=IFC1 default-route-distance=1
/ip dhcp-client add interface=IFC2 default-route-distance=1
其中一些可能已经配置好了。如果使用不同类型的广域网连接,如PPPoE,则相应地进行调整。
当DHCP客户端连接时,应该添加路由,下面是一个示例。
[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 DISTANCE
0 ADS 0.0.0.0/0 yyy.yy.yyy.1 1
1 ADS 0.0.0.0/0 xxx.xxx.xxx.1 1
2 ADC xxx.xxx.xxx.0/22 xxx.xxx.xxx.xxx IFC2 0
...
如果没有看到两个具有正确网关的0.0.0.0/0
路由,则可以将它们创建为静态路由(/ip route add ...
)。这是基本的Mikrotik的东西,超出了这个答案的范围。
将使用策略路由来区分这两个WAN连接。在每个默认的WAN路由上设置一个路由标记。
/ip route set 0 routing-mark=unid2rm
/ip route set 1 routing-mark=unid3rm
值unid2rm
和unid3rm
是任意文本字符串。这意味着Mikrotik将通过给定的网关IP发送带有给定路由标记的数据包。
第二,配置防火墙。看看FORWARD
链。这里的目标是排除二级(非默认) WAN的标记连接,使其无法通过快速通道。
/ip firewall filter add 8 chain=forward action=fasttrack-connection connection-state=established,related connection-mark=!unid2cm
/ip firewall filter add 9 chain=forward action=accept connection-state=established,related
更改数字8和9,以便将规则定位在FORWARD
链的开头。
现在,在PREROUTING
链中,标记<>传入的连接。如果您只是在引导出站连接,则可以跳过此操作。
/ip firewall mangle add 3 chain=prerouting action=mark-connection new-connection-mark=unid2cm passthrough=no connection-mark=no-mark in-interface=IFC1
/ip firewall mangle add 4 chain=prerouting action=mark-connection new-connection-mark=unid3cm passthrough=no connection-mark=no-mark in-interface=IFC2
接下来的步骤涉及到MANGLE
表,并且是魔术发生在您身上的地方。在这里,您根据所设置的条件标记连接。
/ip firewall mangle add 5 chain=prerouting action=mark-connection new-connection-mark=unid2cm passthrough=yes dst-address=221.35.12.5 connection-mark=no-mark in-interface-list=LAN
这是说“当连接到221.35.12.5
还没有被标记时,用连接标记unid2cm
标记它”。您可以根据源IP、MAC等进行设置,并根据需要添加这些内容。那么同伴是:
/ip firewall mangle add 6 chain=prerouting action=mark-routing new-routing-mark=unid2rm passthrough=no connection-mark=unid2cm in-interface-list=LAN
/ip firewall mangle add 7 chain=output action=mark-routing new-routing-mark=unid2rm passthrough=no connection-mark=unid2cm
/ip firewall mangle add 8 chain=prerouting action=mark-routing new-routing-mark=unid3rm passthrough=no connection-mark=unid3cm in-interface-list=LAN
/ip firewall mangle add 9 chain=output action=mark-routing new-routing-mark=unid3rm passthrough=no connection-mark=unid3cm
注意unid2rm
和unid2cm
之间的区别。这些规则从有标记的连接中获取数据包,并给它们一个路由标记。然后,如前所述,在Mikrotik的路由表中使用路由标记。
每个设置都有点不同,所以您可能需要在周围玩,以使它为您工作。
添加: Mikrotik通常在WAN
接口列表中自动设置NAT。答案顶部的第一步确保两个接口都在列表中。
[admin@mikrotik] > /ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; defconf: masquerade
chain=srcnat action=masquerade out-interface-list=WAN log=no
log-prefix=""
https://serverfault.com/questions/1037334
复制相似问题