我知道这个问题到处都有人问过,但没有一个答案适合我。经过几个小时的谷歌搜索,我还是找不到答案。我有 Ubuntu 14 服务器,需要创建几个虚拟服务器 - 我想要像 DigitalOcean 中的 VPS 那样的东西 - 具有外部 IP 的虚拟机。
所以我有一个有几个 IP 但只有一张物理网卡的 Ubuntu 服务器。
主机系统必须只能通过主地址 198.201.29.211 访问。
当然,虚拟机应该像普通物理服务器一样运行,并且也能够连接到主机服务器。
这是我的 /etc/networking/interfaces 文件:
# Loopback device:
auto lo
iface lo inet loopback
iface lo inet6 loopback
# device: eth0
auto eth0
iface eth0 inet static
address 198.201.29.211
netmask 255.255.255.192
gateway 198.201.29.193
# default route to access subnet
up route add -net 198.201.29.192 netmask 255.255.255.192 gw 198.201.29.193 eth0
auto eth0:0
iface eth0:0 inet static
address 198.201.29.247
netmask 255.255.255.192
auto eth0:1
iface eth0:0 inet static
address 198.201.29.248
netmask 255.255.255.192
auto eth0:2
iface eth0:0 inet static
address 198.201.29.249
netmask 255.255.255.192
每个 IP(除主 IP:eth0 上的 198.201.29.211 外)都应专门连接到适当的虚拟机(eth0 内部)。
答案1
事实证明,正确的配置非常简单。(互联网上有很多令人困惑的答案)。网络源设置(我使用 virt-manager)应设置为主机设备 eth0(桥接“br0”)。
虚拟机的地址仅需在使用虚拟机的虚拟机中设置,而无需在主机上设置。
虚拟机 /etc/networking/interfaces 如下所示:
auto eth0
iface eth0 inet static
address 198.201.29.248
netmask 255.255.255.192
gateway 198.201.29.211
这是我的工作 /etc/networking/interfaces(在主机上):
# Loopback device:
auto lo
iface lo inet loopback
iface lo inet6 loopback
# device: eth0
auto eth0
iface eth0 inet static
address 198.201.29.211
netmask 255.255.255.192
gateway 198.201.29.193
# default route to access subnet
up route add -net 198.201.29.192 netmask 255.255.255.192 gw 198.201.29.193 eth0
auto br0
iface br0 inet static
address 198.201.29.211
netmask 255.255.255.192
gateway 198.201.29.193
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
感谢这篇文章:KVM/Libvirt 桥接/路由网络在较新的客户内核上不起作用 我发现由于我的服务器位于 Hertzner,所以我还必须关闭 ICMP 重定向:
for file in `find /proc/ -iname send_redirects`; do echo 0 > $file; done