这个是常识了。
虚拟机跟宿主机通常有三种连接方式:NAT,网桥,host-only。
简单的说,NAT(地址转换)是宿主机连接外网,同时充当NAT交换机,
虚拟机都从宿主机连接外网,外网看不到虚拟机。网桥是在宿主机前加一个虚拟网桥,
虚拟机和宿主机都连接到这个网桥上,此时虚拟机和宿主机处于同一个水平,也就是说,
虚拟机和宿主机都可通过网桥连接外网,外网也可看到虚拟机和素主机。
host-only的话就是虚拟机(>=1个)和宿主机(1个)搭建一个虚拟局域网,宿主机本身和外网连接,
这样有一个虚拟局域网和一个外网网络,宿主机同时出现在这两个网当中,不过这两个网络不相连,
所以是host-only。简单的表格如下:
宿主机可连外网 | 虚拟机可连外网 | 宿主机可连虚拟机 | 外网可连虚拟机 | |
---|---|---|---|---|
NAT | Y | Y | Y | N |
网桥 | Y | Y | Y | Y |
host-only | Y | N | N |
1. 处理network manager
linux别的版本中不知道,在在ubuntu12.04中搭建网桥是要关掉network manager
,
就是平时联网用的那个东西:
1 | sudo service network-manager stop |
平时关闭开启服务都用service someting stop/start/restart
,
要再打开只用把stop改成start就可以。有人说也可以用:
1 | sudo stop network-manager |
这个命令比较新,还是不推荐了。关闭该服务是因为它会重置你手动配置的网桥。
2. 配置文件
设置网桥有两种情况,一个是本身联网使用动态ip地址,二是使用静态ip地址。一般都是使用动态的,就先说动态的:
1 | sudo gedit /etc/network/interfaces |
用vim还是gedit都行,只要能改。如果开始没动该文件,你会看到它像这样:
1 | auto lo |
要改成这样:
1 | auto lo |
有的源文件中有auto eth0
iface eth0 inet dhcp
这两行,注释掉。
接下来静态的,只要把interfaces文件修改成这样:
1 | auto lo |
地址那里设置成符合自己网络的地址。
3. 重启联网服务
1 | sudo /etc/init.d/networking restart |
查是否设置成功: $ifconfig
看到有br0之后就是网桥设置成功了。
4. 遇到的问题
关闭network-manager后我试着重开启该服务,然后再关闭,
告诉我no such instance:
,重启后解决。网上说的找到运行的进程杀掉,没试,因为我找到好几个跟这个服务相关的进程。出错后删除网桥步骤是:把修改的文件还原,再运行:
1 | ip link set br0 down |
解决。