1. 如何创建Bridge
brctl addbr br0 创建bridge
brctl addif br0 eth0 将eth0物理网卡附加到Bridge
ifconfig eth0 0.0.0.0 取消eth0的ip地址
ifconfig br0 192.168.100.2 netmask 255.255.252.0 up 给br0设置ip地址。
route add default gw 192.168.100.1 设置默认路由
通过上述的方法创建的bridge在系统重启后,会消失,所以需要在/etc/sysconfig/network-scripts/路径下创建配置文件来永久创建网桥
Bridge 的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
IPADDR=192.168.100.2
NETMASK=255.255.252.0
GATEWAY=192.168.100.1
DEFROUTE=yes
eth0的配置文件
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE=Ethernet
BOOTPROTO=none
BRIDGE="br0"
NAME="System eth0"
HWADDR=44:37:E6:4A:62:AD
通过修改上述的文件,既可以建立一个bridge.
在KVM环境中,我们安装了libvirt后会有一个virbr0的网桥,使用该网桥是通过NAT的方式上网。
通过上述的方式,将物理网卡附加到bridge的,是通过桥接方式上网。
下面我们通过自己创建一个网桥,来实现virbr0的方式,virbr0的网段是192.168.122.* ,我们创建的网桥使用192.168.200.*网段,为了简单演示,没有开启DHCP服务,我们的VM需要手动配置ip
1. 新建br0,给br0设置ip地址和netmask
2. 设置SNAT,因为VM访问外网的时候,会先到192.168.200.1 到达 宿主机的tcp/ip协议栈,然后进行路由
前提linux内核的net.ipv4_ip.forward=1
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j SNAT --to 192.168.100.193
其中192.168.100.193为本机的物理网卡的地址。
3. 修改VM的配置,将VM的network设置为br0
通过virsh edit <vmname>
4. 通过VNC,连接到VM中,给VM手动配置ip地址
5. 然后在VM上ping www.baidu.com的ip地址(目前192.168.200.* 网段内没有开启dhcp和DNS 服务)
通过上述的方法,就实现了virbr0的功能,当前virbr0这个网桥附加了一个虚拟网卡virbr0-nic, libvirt可能会通过这个虚拟网卡对网桥进行一些配置。本例子中就没有进行附加虚拟网卡。
以下附上两种个人理解的图
1. 桥接模式
NAT模式