如果 Hyper-V Ubuntu 还具有内部网络适配器,则无法通过外部网络适配器连接到互联网

如果 Hyper-V Ubuntu 还具有内部网络适配器,则无法通过外部网络适配器连接到互联网

我有一台作为 Hyper-V VM 运行的 Ubuntu 14.04 Server。它有一个外部虚拟适配器和一个与之连接的内部虚拟适配器。

外部适配器 eth0 从 192.168.1.x 获取动态分配的 IP,而其内部适配器 eth1 获取分配的静态 IP 192.168.1.109。

    eth0      Link encap:Ethernet  HWaddr 00:15:5d:01:17:30
      inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::215:5dff:fe01:1730/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:31 errors:0 dropped:0 overruns:0 frame:0
      TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:11926 (11.9 KB)  TX bytes:1332 (1.3 KB)

    eth1      Link encap:Ethernet  HWaddr 00:15:5d:01:17:29
      inet addr:192.168.1.109  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::215:5dff:fe01:1729/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:14 errors:0 dropped:0 overruns:0 frame:0
      TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:1359 (1.3 KB)  TX bytes:2286 (2.8 KB)

    lo        Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:33 errors:0 dropped:0 overruns:0 frame:0
      TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:2888 (2.8 KB)  TX bytes:2888 (2.8 KB)

因为这是一台笔记本电脑,所以我经常把它带到没有路由器可以连接的地方。没有路由器,外部适配器就无法工作。内部适配器的目的是让我可以在主机文件中将一致的 IP(192.168.1.109)映射到 Ubuntu VM 上存在的域(ubuntu.local)。这样,无论我是否有路由器可以连接,我都可以通过相同的 IP 连接到 ubuntu.local。

内部适配器解决方案效果很好。问题(我认为)是,当 Ubuntu VM 连接了内部适配器时,它会尝试使用它来连接互联网,而不是外部适配器。附注:我只真的需要互联网访问来更新 ubuntu 和添加软件包。

sudo apt-get update 失败,我无法 ping google.com 或任何其他网站:

    ping google.com
    ping: unknown host google.com

我尝试过将外部虚拟适配器连接与内部虚拟适配器共享,但没有成功。我尝试在 /etc/network/interfaces 中将内部适配器更改为 eth0,将外部适配器更改为 eth1,但没有成功。我尝试了一个错误的解决方案,涉及 192.168.2.1 上的 Hyper-V 虚拟化路由器(基于 DD-WRT),该路由器为 Ubuntu VM 分配了静态 IP 192.168.2.109。所有方法都有效,但仍然没有解决这个特定问题 - 无法 ping 任何地址并且无法更新。

我认为需要发生的是,我需要切换 Ubuntu VM 使用其网络适配器的优先级,但我似乎无法弄清楚如何做到这一点。

有人对这个问题有任何见解吗?我至少想知道我在调试这个问题时是否朝着正确的方向前进。

答案1

这应该可以在 Windows 上运行,但不知道 Ubuntu 是否适用。

只需从内部网卡中删除默认网关 IP 地址,这将使操作系统知道该网卡不可路由。

答案2

问题是你为外部网络和内部网络使用了同一个子网。然后机器可以正确地假设这两个适配器实际上连接到相同网络,并使用其中一个来到达网关。

由于事实并非如此,并且网络不同,因此它们必须使用不同子网中的 IP 地址。

解决方案是对一个或两个虚拟网络重新编号。

相关内容