如何将 kvm 虚拟机直接连接到外部 IP

如何将 kvm 虚拟机直接连接到外部 IP

我知道这个问题到处都有人问过,但没有一个答案适合我。经过几个小时的谷歌搜索,我还是找不到答案。我有 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

相关内容