无法 ping 网络中的其他子网

无法 ping 网络中的其他子网

这是我的网络图

在此处输入图片描述

我有一些 wifi 设备连接到我的 wifi 接入点,我在 ether4 上运行了一个 DHCP 服务器,因此所有 wifi 设备都在子网 192.168.4.0/24 中

我的电脑通过 LAN 电缆连接到路由器 ether3 端口

我有两个调制解调器路由器,它们本身就是 DHCP 服务器,调制解调器路由器 1 通过 ether1 连接到 mikrotik 路由器,mikrotik 从中获取 IP,调制解调器路由器 2 通过 ether2 连接到 mirkotik,mikrotik 从中获取 IP。

我希望我的 PC 和一些 wifi 设备通过调制解调器路由器 1 访问互联网,其他任何设备通过调制解调器路由器 2 访问互联网

我通过基于策略的路由做到了这一点,而且它确实有效,但问题是我无法从 ether3 设备 ping 通 ether4 设备,反之亦然

这是我在 PC 上对任意一个 wifi 设备进行的 tracert 输出:跟踪到 192.168.4.254 的路由,最多可跟踪 30 个跳数

  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

答案1

您的“路由标记”配置会执行此操作。当您的规则在数据包上mangle设置路由标记(通过匹配其源地址)时,User-Irancell这优先通过主表中的本地子网路由(这通常是路由标记的全部要点)。

使这些规则立即接受数据包而不标记其目标地址是否是内部的,可以通过同时使用dst-address=!192.168.0.0/16两者或添加一条全新的规则来实现:

/ip firewall mangle {
  add place-before=1 chain=prerouting dst-address=192.168.0.0/16 action=accept
}

相关内容