我有一个运行虚拟机的 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
网络:
- 在 Xen 上创建单服务器专用网络。
- 添加 machine1 和 machine3,各一个。
- 添加其中两个在步骤 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