在重叠子网之间路由/转发流量 Linux

在重叠子网之间路由/转发流量 Linux

我已经配置了具有以下拓扑的网络:

Gateway (10.0.0.1)
      | tun0
      |
      |-----------------------| 10.0.0.0/16
      |                       |
      | tun0                  | tun0
Host A (10.0.1.1)         Host B (10.0.2.1)
      | wlan0                 | wlan0
      |                       |
      | 10.0.1.0/24           |----------------| 10.0.2.0/24
      |                       |                |
      | wlan0                 | wlan0          | wlan0
Client A (10.0.1.2)       Client B (10.0.2.2)  Client C (10.0.2.3)

目前,主机 A 和 B 可以 ping 通网关并相互 ping 通。此外,每个客户端都可以 ping 通直接连接到它的主机以及连接到该主机的其他客户端。但是,我希望每个设备都能够 ping 通网络上的所有其他设备(例如,客户端 A 可以 ping 通客户端 B,主机 A 可以 ping 通客户端 C,等等)。

我尝试了几种方法来配置每个主机以允许在客户端、其他主机和网关之间转发数据包。我尝试的第一种方法是在每个主机上使用 iptables 在子网之间转发流量。虽然我使用以下教程取得了成功这是 Adafruit 上的允许客户端 ping 主机和网关,但这些不允许其他主机 ping 客户端。我还尝试了以下解决方案这个在子网之间路由流量,但它们似乎不适用于重叠子网。我还尝试在桥接 tun0 和 wlan0 的每个主机上创建一个桥接接口,但没有成功。

只要保留所有设备连接到所有其他设备的能力,我愿意更改此网络上的 IP 地址配置。

答案1

解决方案(事后看来非常明显)是按如下方式分配 IP 地址:

   Gateway 
      | tun0 (10.0.0.1)
      |
      |-----------------------| 10.0.0.0/24
      |                       |
      | tun0 (10.0.0.2)       | tun0 (10.0.0.3)
    Host A                 Host B 
      | wlan0 (10.0.2.1)      | wlan0 (10.0.3.1)
      |                       |
      | 10.0.2.0/24           |-------------------| 10.0.3.0/24
      |                       |                   |
      | wlan0 (10.0.2.2)      | wlan0 (10.0.3.2)  | wlan0 (10.0.3.3)
  Client A                Client B            Client C

这会将网关/主机连接置于单独的子网上。在此配置中,涉及两个子网之间路由流量的教程将起作用。需要在每个主机和网关上配置路由(例如ip route add 10.0.3.0/24 via 10.0.3.1)。

相关内容