嗯,这是我的网络图表
我有一些 wifi 设备连接到我的 wifi 接入点,我在 ether4 上运行了一个 DHCP 服务器,所以所有 wifi 设备都在子网 192.168.4.0/24
我的电脑通过 LAN 电缆连接到路由器 ether3 端口
我有两个调制解调器路由器,它们本身就是DHCP服务器,调制解调器路由器1通过ether1连接到mikrotik路由器,mikrotik从中获取IP,调制解调器路由器2通过ether2连接到mirkotik,mikrotik从中获取IP。
我想让我的电脑和一些 wifi 设备通过调制解调器路由器 1 访问互联网,以及任何其他设备通过调制解调器路由器 2 访问互联网
我通过基于策略的路由做到了这一点并且它正在工作,但问题是我无法从 ether3 设备 ping 到 ether4 设备,反之亦然
这是我的 PC 中任意 wifi 设备之一的 tracert 输出:最多 30 跳跟踪到 192.168.4.254 的路由
1 <1 ms <1 ms <1 ms 192.168.3.1
2 1 ms 1 ms <1 ms 192.168.2.1
3 * * * Request timed out.
4 32 ms 21 ms 31 ms 10.196.23.193
如您所见,路由器将其路由到调制解调器2而不是ether4!
这是我的 ip 路由配置:
/ip pool
add name=dhcp_pool0 ranges=192.168.3.2-192.168.3.254
add name=dhcp_pool1 ranges=192.168.4.2-192.168.4.254
/ip dhcp-server
add address-pool=dhcp_pool0 disabled=no interface=ether3 name=dhcp1
add address-pool=dhcp_pool1 disabled=no interface=ether4 name=dhcp2
/ip address
add address=192.168.3.1/24 interface=ether3 network=192.168.3.0
add address=192.168.4.1/24 interface=ether4 network=192.168.4.0
/ip dhcp-client
add disabled=no interface=ether1 use-peer-dns=no use-peer-ntp=no
add disabled=no interface=ether2 use-peer-dns=no use-peer-ntp=no
/ip dhcp-server network
add address=192.168.3.0/24 dns-server=1.1.1.1 gateway=192.168.3.1
add address=192.168.4.0/24 dns-server=1.1.1.1 gateway=192.168.4.1
/ip dns
set servers=1.1.1.1
/ip firewall address-list
add address=192.168.3.0/24 list=Irancell-Users
add address=192.168.4.0/24 list=Sabanet-Users
/ip firewall mangle
add action=mark-routing chain=prerouting new-routing-mark=User-Irancell \
passthrough=no src-address-list=Irancell-Users
add action=mark-routing chain=prerouting new-routing-mark=User-Sabanet \
passthrough=no src-address-list=Sabanet-Users
/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.4.0/24
add action=masquerade chain=srcnat src-address=192.168.3.0/24
/ip route
add distance=5 gateway=192.168.2.1 routing-mark=User-Irancell
add distance=10 gateway=192.168.1.1 routing-mark=User-Sabanet
您的“路由标记”配置会执行此操作。当您的
mangle
规则User-Irancell
在数据包上设置路由标记(通过匹配它们的源地址)时,它优先于主表中的本地子网路由(这通常是路由标记的全部点)。如果它们的 dst-address 是内部的,则使这些规则立即接受数据包而不标记它们,或者通过
dst-address=!192.168.0.0/16
在两者中使用,或者通过添加一个全新的规则: