我有以下设置:
- 运行 virtualbox 的 Windows 主机
- Ubuntu 服务器作为访客
我在 Virtualbox 中启用了第二个网络接口(桥接接口),因此我可以通过 ssh、http 等方式连接到实例
(注意:使用 ubuntu 桌面的 GUI 配置网络总是可行的,但现在我使用 ubuntu 服务器并在 ubuntu 中手动执行此操作)
这大致就是我所做的:
我已经运行了实例,并且可以 ping stackoverflow.com 并获得 IP 地址。我停止服务器,在 virtualbox 中启用第二个适配器。我再次启动实例,我可以看到使用列出的接口。ifconfig -a
我打开/etc/network/interfaces
并添加 eth1 控制器,因此我的接口文件如下所示:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
当我重新启动使用时,/etc/init.d/networking restart
一切似乎都正常工作 - 例如。ifconfig 给了我这个:
eth0 Link encap:Ethernet HWaddr 08:00:27:ad:75:94
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fead:7594/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1074 errors:0 dropped:0 overruns:0 frame:0
TX packets:318 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1301455 (1.3 MB) TX bytes:26248 (26.2 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:73:f7:37
inet addr:192.168.1.149 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe73:f737/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:464 errors:0 dropped:0 overruns:0 frame:0
TX packets:243 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:65921 (65.9 KB) TX bytes:32173 (32.1 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:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
我可以使用 ssh 连接到实例,因此网络正常。
但是,DNS 解析似乎不起作用,因为当我 ping 任何网站(例如 stackoverflow.com)时它就会超时。
我检查了 /etc/resolv.conf,一切看起来都很好(事实上,看起来与我的 ubuntu 桌面实例上的一样。
有任何想法吗?
答案1
请提供输出sudo ip route list
。我认为您的查询将框留在一个接口上,而它们又返回到另一个接口上,您的内核会将它们丢弃。
请尝试禁用非桥接接口并再次重新测试连接性:
usr@srv % sudo ifdown eth0
usr@srv % nslookup 8.8.8.8
如果这不起作用:您可以 ping 通吗8.8.8.8
?
更新:
如果您使用桥接网络,则无需使用 VirtualBox 作为 NAT。
问题在于,正如预期的那样,DNS 配置为通过 eth0 进行询问,较短的路径是通过 eth1,因此答案来自 eth1。但是,您的内核并不期望 eth1 上有任何消息,因此会丢弃它们。