-2

尝试设置运行 3 个虚拟机的 Proxmox 机器。它有 3 个公共 ip,但这些 ip 位于单个接口 (eth0) 上。

3 个虚拟机位于地址为 172.16.0.1/24 的网桥 (vmbr0) 上

我已启用 ip 伪装和转发。但我无法弄清楚如何使 3 个虚拟机(172.16.0.2、172.16.0.3、172.16.0.4)中的每一个都通过特定的公共 ips 路由出去。

我已经尝试使用 3 个表设置网关和规则的标准 iproute,但无论我设置什么规则,vm 仍然通过主 ip 路由出去。

问题是 3 个公共 ip 位于完全独立的网络上,因此它们每个都有不同的网关。如果每个公共 ip 都在一个单独的物理接口上,我知道如何使用 iproute 来执行此操作,但是这台机器在一个接口上拥有所有 3 个,并且 iproute 似乎不喜欢那样,因为如果我执行 ip route add default via 23.92.26.1 dev eth0:2 表 node2 然后列出它通过 eth0 显示的所有内容。所以显然 iproute 不喜欢伪接口。我对 iptables 了解不多,我确信有一种方法可以用纯 iptables 做到这一点,但还没有找到任何东西。我所有的谷歌搜索都提出了 iproute 表,就像我说的那样,似乎不适用于 signle 界面。

先感谢您

4

2 回答 2

0

考虑到 ProxMox 正在运行 Debian,请尝试在 /etc/network/interfaces 中为每个额外的链接添加类似下面的内容

post-up route add -net <network identifier> netmask <netmask> gw <links gateway>
pre-down route del -net <network identifier> netmask <netmask> gw <links gateway>

然后使用 iptables 如果您希望 172.16.0.2 通过第二个 ip,请执行以下操作:(这称为源 NAT 或 SNAT)--to-source 指定您希望将传出连接重新映射到的 ip。

iptables -t nat -A POSTROUTING -s 172.16.0.2/24 -j SNAT --to-source <ip address you want it to go out of>

如果您希望同一 IP 上的所有传入连接都转到 172.16.0.2,那么您还可以添加以下内容(这称为目标 NAT 或 DNAT)

iptables -t nat -A PREROUTING -d <ip/mask bit> -j DNAT --to-destination 172.16.0.2
于 2017-01-17T02:57:22.183 回答
0

问题:

(1)3VM - 172.16.0.2、172.16.0.3、172.16.0.4

(2)网关 - 172.16.0.1/24

(3)3个公共IP:$IP_A(网关$IP_A_G)、$IP_B(网关$IP_B_G)、$IP_C(网关$IP_C_G)

(4)你的目标是每台VM使用不同的公网IP访问外网,如:

VM1(172.16.0.2) ----> $IP_A
VM2(172.16.0.3) ----> $IP_B
VM3(172.16.0.4) ----> $IP_C

所以,我认为你可以使用 ip route 来做到这一点:

(1)在 Promox(172.16.0.1)

echo "200 IPA" >> /etc/iproute2/rt_tables
echo "201 IPB" >> /etc/iproute2/rt_tables
echo "202 IPC" >> /etc/iproute2/rt_tables

重新启动 Promox 一次。

(2)创建路由器

ip route del default table IPA
ip route add default via $IP_A_G  table IPA
ip route del default table IPB
ip route add default via $IP_B_G  table IPB
ip route del default table IPC
ip route add default via $IP_C_G  table IPC

(3)为每个VM添加路由

ip rule add from 172.16.0.2 lookup IPA pref 200
ip rule add from 172.16.0.3 lookup IPB pref 201
ip rule add from 172.16.0.4 lookup IPC pref 202
ip route flush cache

完毕

于 2017-01-17T03:35:20.960 回答