答案1
您不应在两个不同的网络上使用相同的子网地址。例如,您应将一个子网地址设为 192.168.10.0/24,将另一个子网地址设为 192.168.11.0/24 或其他地址 –不是两者使用相同的 /16。这将简化事情。
查看您的主机(Laptop-1 和 Laptop-4)的路由表,并注意它们实际上都没有通过您的网关到另一台主机的路由。
他们唯一匹配的路线是当地的路由指示目的地(在您的情况下为整个 192.168.0.0/16 子网)可通过链路到达。(该路由没有G
标志,因此它仅指定本地接口。)
这导致 Laptop-1 直接发送第 2 层 ARP 查询,试图了解 Laptop-4 的 MAC 地址,但没有设备它将会响应它们,因为 Laptop-4 位于物理上独立的网络上(因此不会接收 ARP 查询),而 Desktop-2 不会响应,因为它不拥有所请求的 IP 地址。
(当访问“同一子网内”的主机时,此行为是正常的。事实上,这就是同一子网内的情况方法,这就是为什么我建议您避免在不同的地方使用相同的子网地址。)
因此,在您的情况下,在网关上添加路由是不够的 - 您需要告诉主机本身将数据包发送到哪个第 2 层设备。
有两种方法可以处理这种情况——选择一种或者其他的,不是全部的:
选项 1:需要在 Laptop-1 上添加与 Desktop-2 上相同的 192.168.1.x 路由(当然,网关为“192.168.10.2”,即 Desktop-2)。同样,需要将 Desktop-3 上的两条路由复制到 Laptop-4。
由于它们具有更长的前缀长度(/32),这些路由将自动优先于 /16 子网路由。
选项 2:网关需要在 eno1 上启用 Proxy-ARP 功能,以便它们会代表不在此处的主机响应 ARP 查询。例如,Desktop-2 将代表 192.168.10.5 响应 ARP。
答案2
我按照 user1686 的建议执行了选项 1,然后在 Desktop-2 和 Desktop-3 中执行以下操作以使 ssh 正常工作:
sudo 防火墙-cmd --zone=trusted --add-interface=wlp110s0
sudo 防火墙-cmd --zone=trusted --add-interface=eno1