我在 Debian 和一堆 VM 的客户机上安装了 ProxmoxVE2.1 控制的 KVM 节点。我的网络是这样的:
# network interface settings
auto lo
iface lo inet loopback
# device: eth0
auto eth0
iface eth0 inet static
address 175.219.59.209
gateway 175.219.59.193
netmask 255.255.255.224
post-up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
我有两个有效的子网解决方案
auto vmbr0
iface vmbr0 inet static
address 10.10.0.1
netmask 255.255.0.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up ip route add 10.10.0.1/24 dev vmbr0
这样,我就可以访问互联网,解析外部主机,更新和下载我需要的所有内容,但无法访问网络内的任何其他虚拟机中的一个客户虚拟机。
第二种解决方案允许我在虚拟机之间进行通信:
auto vmbr1
iface vmbr1 inet static
address 10.10.0.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.0.0/24' -o vmbr1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.0.0/24' -o vmbr1 -j MASQUERADE
我甚至可以对内部地址进行 NAT:
-t nat -I PREROUTING -p tcp --dport 789 -j DNAT --to-destination 10.10.0.220:345
我缺乏经验,准备将 VM 的网络适配器增加一倍:一个用于第一个解决方案,另一个用于第二个解决方案(地址略有不同),但我很确定这是一种愚蠢的解决问题的方法,并且所有问题都可以通过我无法创建的 iptables/ip 路由规则来解决。
更新:
答案1
在这里查看我的问题中的配置;
Debian:我应该将 vlan 接口添加到 KVM 桥中吗?
我最终使用了桥接接口,与客户机桥接。我的节点可以访问互联网及其客户机,客户机之间可以互相访问互联网,实现完全连接。每个客户机上都有防火墙。