0%

在ubuntu中搭建网桥——虚拟机相关

这个是常识了。

虚拟机跟宿主机通常有三种连接方式: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
2
auto lo
iface lo inet loopback

要改成这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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文件修改成这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

地址那里设置成符合自己网络的地址。

3. 重启联网服务

1
sudo /etc/init.d/networking restart

查是否设置成功: $ifconfig
看到有br0之后就是网桥设置成功了。

4. 遇到的问题

  1. 关闭network-manager后我试着重开启该服务,然后再关闭,
    告诉我no such instance:,重启后解决。网上说的找到运行的进程杀掉,没试,因为我找到好几个跟这个服务相关的进程。

  2. 出错后删除网桥步骤是:把修改的文件还原,再运行:

1
2
ip link set br0 down
brctl delbr br0

解决。