如何在同一子网上将流量从机器 1 通过机器 2 路由到机器 3,反之亦然?

如何在同一子网上将流量从机器 1 通过机器 2 路由到机器 3,反之亦然?

我有一个运行虚拟机的 Citrix Xenserver。我在那里有三个虚拟机,每个虚拟机有 2 个网卡:eth0是我用于管理的公司 LAN,并且eth1是所有三个虚拟机上的“单服务器专用网络”。管理界面仅适用于我的 SSH 会话。

分配给我的虚拟机的 IP 是:

M1 = 192.168.0.1/24
M2 = 192.168.0.2/24
M3 = 192.168.0.3/24

在 M2 上,我启用了 IP 转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

要通过 M2 将流量从 M1 路由到 M3:

ip route add 192.168.0.3 via 192.168.0.2 dev eth1

同样在 M3 上:

ip route add 192.168.0.1 via 192.168.0.2 dev eth1

但是,当我跟踪路由或从 M1 发送流量到 M3(反之亦然)时,它似乎直接到达目的地,而不是经过 M2。是因为它们在同一子网中吗?如果它们在同一子网中,我的 Linux 机器上应该做什么才能实现此路由?

答案1

网络:

  1. 在 Xen 上创建单服务器专用网络。
  2. 添加 machine1 和 machine3,各一个。
  3. 添加其中两个在步骤 1 中创建到 machine2

机器1:

ip addr add 1.1.1.2/24 dev eth1
ip route add 2.2.2.0/24 via 1.1.1.1 dev eth1 proto static

机器3:

ip addr add 2.2.2.2/24 dev eth1
ip route add 1.1.1.0/24 via 2.2.2.1 dev eth1 proto static

机器2(路由器):

ip addr add 1.1.1.1/24 dev eth1
ip addr add 2.2.2.1/24 dev eth2

测试:

ping 2.2.2.2 # machine1
ping 1.1.1.2 # machine3

相关内容