这个是常识了。
虚拟机跟宿主机通常有三种连接方式: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 N
处理network manager
linux别的版本中不知道,在在ubuntu12.04中搭建网桥是要关掉network manager,就是平时联网用的那个东西:sudo service network-manager stop
平时关闭开启服务都用`service someting stop/start/restart`,要再打开只用把stop改成start就可以。有人说也可以用:
sudo stop network-manager
这个命令比较新,还是不推荐了。关闭该服务是因为它会重置你手动配置的网桥。
- 配置文件
设置网桥有两种情况,一个是本身联网使用动态ip地址,二是使用静态ip地址。一般都是使用动态的,就先说动态的:
sudo gedit /etc/network/interfaces
用vim还是gedit都行,只要能改。如果开始没动该文件,你会看到它像这样:
auto lo
iface lo inet loopback
要改成这样:
auto lo
iface lo inet loopback
# The primary network interface
#auto eth0
#iface eth0 inet dhcp
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
有的源文件中有auto eth0
iface eth0 inet dhcp
这两行,注释掉。
接下来静态的,只要把interfaces文件修改成这样:
auto lo
iface lo inet loopback
# The primary network interface
#auto eth0
#iface eth0 inet dhcp
auto br0
iface br0 inet static
address 192.168.1.200
broadcast 192.168.1.255
netmask 255.255.255.0
gateway 192.168.1.254
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
地址那里设置成符合自己网络的地址。
- 重启联网服务
sudo /etc/init.d/networking restart
查是否设置成功: `$ifconfig`
看到有br0之后就是网桥设置成功了。
- 遇到的问题
- 关闭network-manager后我试着重开启该服务,然后再关闭,告诉我`no such instance: ,重启后解决。网上说的找到运行的进程杀掉,没试,因为我找到好几个跟这个服务相关的进程。
- 出错后删除网桥步骤是:把修改的文件还原,再运行:
#ip link set br0 down
#brctl delbr br0
解决。