VirtualBox:Ubuntu上的Debian guest虚拟机中的两个网络接口(NAT和仅主机接口)


48

我在VirtualBox上创建了一个Debian VM,它具有两个接口:一个NAT(用于访问Internet)和一个仅主机的接口。但是,我不知道如何使两个接口同时工作。如果我将仅主机定义为适配器1,则可以从主机访问我的VM,但不能从Internet访问;否则,我可以从主机访问我的VM。如果将NAT 1定义为适配器1,则可以访问Internet,但无法访问来宾Debian。

那么,如何使两个接口一起工作?

注意:我仍在尝试将主机上的某些端口映射到来宾SO上的SSH端口,因此没有必要建议我这样做:)

编辑:这是ifconfig第一个适配器是仅主机的适配器时的输出 :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:495 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:48187 (47.0 KiB)  TX bytes:38222 (37.3 KiB)

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:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

这是netstat -nr第一个适配器是用于主机的适配器时的输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

这是ifconfig第一个适配器是NAT适配器时的输出:

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:53 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6076 (5.9 KiB)  TX bytes:5526 (5.3 KiB)

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:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1664 (1.6 KiB)  TX bytes:1664 (1.6 KiB)

这是netstat -nr第一个适配器是NAT适配器时的输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         10.0.2.2        0.0.0.0         UG        0 0          0 eth0

Answers:


48

解决方案非常简单:我只需要在Debian虚拟机/etc/network/interfaces文件中添加以下行:

allow-hotplug eth1
iface eth1 inet dhcp

第二行指示接口通过DHCP获取IP。第一行在引导时加载接口。

要将更改应用于正在运行的系统,请调用:

ifup eth1

eth1接口的名称可能有所不同,用于ifconfig -a列出所有可用接口。

编辑:完整/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet dhcp

1
我可以确认。Debian没有在中设置第二个界面/etc/network/interfaces。解决了我的问题,谢谢。为了进行潜在的调试,这是Virtualbox提供的两个virtio接口。一个是用于Internet访问的NAT接口(NAT由vbox单独提供),另一个是仅主机的网络,具有完全不同的专用IP类中的DHCP。Debian版本测试了6.0.6 x64。
davolfman 2012年

您可以将整个/ etc / network / interfaces发布吗?已经为此奋斗了2天。
约翰·尼古拉斯

@JohnNicholas完成了。请注意,您应该编辑来宾 /etc/network/interfaces文件。
brandizzi 2014年

欢呼声,我也一样。我的问题是,当我首先在vbox中使用NAT适配器时,另一个(主机)适配器将尝试在该适配器上使用dhcp服务器,并且一切都会出错。当我仅将vbox中的适配器作为主机订购时,所有NAT都开始工作(不管它们在linux中的订购方式有多么有趣)。Netctl在另一个虚拟机中没有这个问题。
约翰·尼古拉斯

2
效果很好,谢谢!但是,Ubuntu 18现在使用了一个称为“ netplan”的新接口。知道如何在netplan中复制以上内容吗?
yahermann '18

11

我的Ubuntu 14.04 VM面临类似的问题,@ brandizzi为Debian建议的解决方案几乎没有变化。

EDIT: file /etc/network/interfaces:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# 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

对于UBUNTU 16.04

运行命令

ifconfig -a

寻找新的界面,例如我的情况是“ enp0s8”

EDIT file /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet dhcp  

3
现在,这也适用于Debian 9+(Ubuntu 16设置)
Maksim Luzik,

3

两个适配器都应在Debian中配置

似乎在两种情况下,您都只配置了一个适配器,因此出现了问题。

在VM的VirtualBox配置中创建2个适配器,然后启动它。如果在使用ifconfig时仅看到一个配置的适配器(单个eth0,也没有eth1),则应使用Debian的网络配置工具(网络管理器,ifupdown等)在DHCP中配置两个接口。因此,DHCP中应具有eth0和eth1。


0

确保为每个接口使用单独的专用地址空间子网

因此,例如对于NAT接口,您可以使用192.168.0.0/16空间中的地址。

“仅主机”接口可能在10.0.0.0/24空间中。


好吧,它们是分开的(我的NAT空间是10.0.2.0/24,我的NAT是192.168.56.0/24)。
brandizzi 2012年

您可以编辑您的问题,包括输出ifconfignetstat -nr,所以我们可以看到在接口和路由配置?
乔治M

好的,我将命令的输出添加到了问题中。
brandizzi 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.