在使用VirtualBox设置虚拟机时,我经常需要以下特征
- vm有一个静态IP
- 主机无需端口转发即可访问虚拟机
- 虚拟机可以访问互联网
- 我可以将笔记本电脑从一个网络移动到另一个网络(例如,从家庭到办公室再到咖啡店),而不必担心保护或重新配置虚拟机的麻烦。
VirtualBox网络连接方法没有一个能够单独满足这些要求。
NAT
如果要从主机连接到vm,则需要端口转发。仅限主机
除非主机是路由器,否则vm无法访问Internet。桥接将
虚拟机公开到网络;不便携。
在使用VirtualBox设置虚拟机时,我经常需要以下特征
VirtualBox网络连接方法没有一个能够单独满足这些要求。
NAT
如果要从主机连接到vm,则需要端口转发。
仅限主机
除非主机是路由器,否则vm无法访问Internet。
桥接将
虚拟机公开到网络;不便携。
Answers:
我可以通过在vm上设置两个适配器来获得所需的设置。
VirtualBox 4.2.12
Ubuntu 12.04来宾
在“ VirtualBox”>“首选项”>“网络”中,设置仅主机的网络。
我的被称为vboxnet0,它是手动配置的:
ip 192.168.56.1
网络掩码255.255.255.0
没有dhcp
然后,在虚拟机的网络设置中,设置两个适配器:
仅适配器1 主机,vboxnet0
Adapter2
NAT
引导虚拟机并通过VirtualBox提供的控制台登录。
运行此命令以查看您的适配器:
ls /sys/class/net
在我的情况下,这些适配器分别命名为eth1和eth2(以及lo,即回送接口)。
然后,编辑您的网络配置。
sudoedit /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# Host-only interface
auto eth1
iface eth1 inet static
address 192.168.56.20
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
# NAT interface
auto eth2
iface eth2 inet dhcp
请注意,eth1
没有指定默认网关。eth2
将从dhcp获取默认网关。
请参阅@ Hugo14453的此答案,以获取适用于Ubuntu 17.10及更高版本的更新版本。
我可以混合使用Christian Long解决方案来解决我的问题。我添加了2个适配器:
适配器1-NAT
适配器2-仅主机,vboxnet0
唯一的区别是在VM的interfaces文件中:
sudoedit /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp
在VirtualBox网络配置中,我未选中DHCP。
VM重新启动后,一切正常。
还有另一种简单的方法,我们不需要创建新的NAT适配器
在主机上,请添加以下iptables规则。这将通过主机将数据包转发到Internet:
sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
您还需要通过发出以下命令在主机上启用IP转发:
sudo sysctl -w net.ipv4.ip_forward=1
网络配置在Ubuntu 17.10.1。中已更改 现在,您使用netplan配置。
我在这里遵循了本指南
作为克里斯蒂安答案的移植,请执行以下操作:
在/ etc / netplan内部创建一个新的配置文件,以保存仅主机适配器的配置。
例如 sudo nano /etc/netplan/02-netcfg.yaml
输入以下内容以配置静态IP 192.168.56.12,其中enp0s3
是仅主机适配器的名称。
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 192.168.56.12/24
dhcp4: no
然后运行以下两个命令:
sudo netplan generate
sudo netplan apply
NAT应该无需配置即可运行ifconfig
,请运行以查看结果:
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.12 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::a00:27ff:fe06:6cdd prefixlen 64 scopeid 0x20<link>
ether 08:00:27:06:6c:dd txqueuelen 1000 (Ethernet)
RX packets 252 bytes 23076 (23.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 208 bytes 30015 (30.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.3.15 netmask 255.255.255.0 broadcast 10.0.3.255
inet6 fe80::a00:27ff:fe4d:a6b8 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:4d:a6:b8 txqueuelen 1000 (Ethernet)
RX packets 95 bytes 94894 (94.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 85 bytes 7436 (7.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我刚刚添加了2个适配器:
仅适配器1主机,vboxnet0
Adapter2 NAT
它运行完美,我可以从主机访问虚拟机,并且在vm上有互联网。
是的,我有这个问题,简直太痛苦了!但是,我只需在物理PC上安装Squid Cache Proxy服务器即可解决该问题,并且这种方式-我的仅主机虚拟机PC可以连接到Internet!
我在这里做了3分钟的快速指南-适用于任何想要它如何工作的人! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/