同一台机器上有两个接口,属于同一个子网

同一台机器上有两个接口,属于同一个子网

我想192.168.2.x/24在服务器上为特定类别的静态 IP 分配的客户端设备维护一个子网 ()。网络拓扑的 ASCII 图:

-------------------
Ubuntu Server      |       -----------------------------
192.168.2.1 : eth0 | <--> | eth0: 192.168.2.101: client1 |
                   |       ------------------------------
                   |       ------------------------------
192.168.2.2 : eth1 | <--> | eth0: 192.168.2.102: client2 |
-------------------        ------------------------------

注意,没有其他硬件(例如没有交换机)。只有一台服务器和两台客户端设备。

在同一台机器上让两个以太网接口具有相同的子网是否合理?我希望避免在服务器和客户端设备之间放置小型交换机以保持子网清洁。

答案1

如果你按照图示做,它将不是是同一个子网:将是两个恰好编号相同但彼此完全隔离的子网。

通常情况下,当这样做时,来自服务器的数据包最终总是会被路由到接口(即路由是针对整个 /24 作为一个单元进行的,而不是针对单个主机进行的),例如,如果服务器优先通过 eth0 进行路由,则 eth0 上的主机将能够与服务器通信,但 eth1 上的主机永远不会收到任何响应,因为到 192.168.2.102 的首选路由是通过 eth0 进行的。不同接口上的客户端根本无法相互访问。

交换机不会使以太网子网“不干净”——交换机是普通的创建包含 2 个以上设备的以太网子网的方法。(例如,对于在单个子网中具有典型的四个 LAN 端口的家用路由器,确实有一个内部“交换机”将这些端口连接在一起,因此路由器的 CPU 仅将其视为单个接口。)

但您的服务器没有这个功能——它只有两个独立的以太网接口。因此,为了像家用路由器一样创建单个子网,但又不购买外部以太网交换机,您需要启用基于软件的以太网桥接。(它的行为方式与交​​换机相同,只是服务器的 CPU 负责所有工作。)

(在 Linux 上,您可以通过使用 创建“桥接”接口来实现此目的ip link add br0 type bridge,使用 将 eth0 和 eth1 都移动到桥接中ip link set eth0 master br0,并将子网中的 IP 地址分配给 br0 且仅分配给 br0。)

但是,如果没有桥接,每个接口都需要位于单独的子网上才能正常工作。它们仍然属于一个网络,即服务器可以充当路由器并且不同子网中的客户端可以通信。

(也可以仿真几个独立的接口之间的单个子网,但服务器需要知道每个单独主机的路由,以及提供代理 ARP 以允许主机跨接口通信,这真是一团糟。)

相关内容