通过多跳建立连接

通过多跳建立连接

我有一个如图所示的设置。 设置 如何在笔记本电脑 1 和笔记本电脑 4 之间建立连接(TCP、Ping 等...)。我有无线物理层方面的背景知识,但对网络不太了解 :),尽管如此,我还是尽力在互联网上搜索。以下是更多信息:

所有机器都启用了 IP 转发。操作系统是 Ubuntu 18.04。没有涉及其他设备(交换机/路由器等)。192.168.10.x 的子网与 10.0.0.x 的子网相同但不同。机器的路由表(经过我修改后)的快照也在这里。 路由表

我仍然无法从 192.168.10.3 ping 到 192.168.10.5

请建议我该怎么做。问候

答案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

相关内容