【问题标题】:Multiple IPs + bridge for KVMKVM 的多个 IP + 桥接器
【发布时间】:2014-03-17 01:00:32
【问题描述】:
我现在遇到了问题,真的不知道错误在哪里。我从我的 ISP 那里得到了一个根服务器。这个根服务器已经包含一个 IP,今天我又预订了两个 IP 地址。所以我现在要做的就是将这两个新的 IP 地址映射到两个虚拟机上,同时还要为根服务器保存包含的 IP。那么我是如何意识到这一点的呢?
我的想法是这样的:
br0 - 持有根服务器的原始 IP
br0:0 - 持有第一个虚拟机的第一个 IP
br0:1 - 持有第二个虚拟机的第二个 IP
但这不起作用。有任何想法吗。我真的很沮丧。解决了这个问题,但没有解决方案。
【问题讨论】:
标签:
ip
ip-address
virtualization
kvm
【解决方案1】:
我也在为类似的情况而苦苦挣扎,我有服务器,并且必须指出设置网桥确实让我失望了,不得不重新启动才能访问它,无论如何我已经设法通过 iptables 处理它。 .
#为您的第二个 IP 地址创建别名(假设它的 111.222.333.2 ,本地地址 192.168.1.2)
ifconfig eth0:1 111.222.333.2
#如果你有子网,你应该添加正确的网络掩码
#现在你应该可以从外界ping第二个地址了——试试吧,
#也就是说,如果您没有设置防火墙来阻止 pings ... 如果您不确定,请刷新 iptables 规则...
#set up NAT rule (network-address-translate : outside ip-> local ip and back local ip->outside ip)
#假设您的虚拟机位于 192.168.1.2
iptables -t nat -A PREROUTING -d 111.222.333.2 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to-source 111.222.333.2
这确实帮助我处理具有多个 IP 地址和 KVM 虚拟机的服务器,
它们最初是在默认网络(转发模式=nat)中运行的,因此它们首先通过 NAT 和内部 IP 访问互联网,这也为它们提供了外部公共 IP 地址。
您还可以通过调整 iptables 规则以设置地址(如 -d 111.222.333.2:80 -p tcp)并将端口添加到本地地址来逐个端口进行这些重定向...
您可能还需要开启设备 IP 转发,您可以通过以下方式进行检查
sysctl -a | grep forward
(你应该在你的 eth0 设备上看到它),可以选择通过适当的 sysctl 命令来调整它,比如
sysctl -w net.ipv4.ip_forward=1
【解决方案2】:
将 br0 作为 TAP DEVICE 映射到 VM1 和 VM2,在 VM1 和 VM2 中,您可以将其视为 eth 设备;
将IP1和IP2分别分配给VM1和VM2;使用此配置,您可以从 VM1 ping 到 VM2,也可以从主机 ping 到任何来宾计算机(VM1 或 VM2);
以下link 将帮助您通过网桥为VM 设置TAP 设备;查看那里指定的 qemu-ifup 脚本并很好地理解它。