Linux Bridge實踐 -- 使用dnsmasq爲虛擬機分配IP地址

Linux Bridge是Linux Kernel提供的一種虛擬網絡橋接功能,通過bridge-utils提供的brctl命令進行管理。本文將闡述如何將Linux Brige和dnsmasq結合,來爲新創建的虛機分配IP地址,並且允許續集通過linux bridge訪問外網。


總體的架構圖如下:



實現方法如下:

1. 安裝bridge-utils軟件包

# yum -y install bridge-utils

2. 安裝libvirt, virt-install和qemu-kvm軟件包,並啓動libvirtd

# yum -y install libvirt virt-install qemu-kvm
# systemctl start libvirtd
# systemctl enable libvirtd

3. 創建一個linux bridge,命名爲bridge0。打開stp,並且將"bridge forward delay"設置爲2秒(很重要,否則虛機在啓動過程中將需要很長時間才能獲得DHCP響應)。

# brctl addbr bridge0
# brctl stp bridge0 on
# brctl setfd bridge0 2


4. 爲bridge0配置一個IP地址,比如10.0.0.1/24

# ifconfig bridge0 10.0.0.1 netmask 255.255.255.0 up

5. 打開IP forward。只有打開,才能讓虛機訪問外網。

# echo 1 > /proc/sys/net/ipv4/ip_forward

6. 在bridge0上啓動一個dnsmasq監聽進程,如下:

# /usr/sbin/dnsmasq --strict-order --bind-interfaces --except-interface lo --interface bridge0 --dhcp-range 10.0.0.2,10.0.0.254 \
--dhcp-leasefile=/var/run/dnsmasq/bridge0.pid --dhcp-lease-max=253 --dhcp-no-override --log-queries --log-facility=/tmp/dnsmasq.log

7. 創建一個虛機來測試,命名爲vm1。爲了簡單起見,用cirros作爲disk image。需要提前將image文件cirros-0.3.1-x86_64-disk.img上傳到/tmp/vm1/下面。這裏用到的network就是之前創建的bridge。

# virt-install --connect=qemu:///system --name=vm1 --ram=50 --vcpus=1 --virt-type qemu --disk path=/tmp/vm1/cirros-0.3.1-x86_64-disk.img,format=qcow2 --import --network bridge:bridge0 

可以看到虛擬機在啓動過程中通過DHCP獲得了IP地址,如下:

Starting network...
udhcpc (v1.20.1) started
Sending discover...
Sending select for 10.0.0.49...
Lease of 10.0.0.49 obtained, lease time 3600

8. 登陸虛擬機,然後ping外網地址,可以ping通。

$ hostname
cirros
$ ping www.baidu.com
PING www.baidu.com (61.135.169.121): 56 data bytes
64 bytes from 61.135.169.121: seq=0 ttl=127 time=23.946 ms
64 bytes from 61.135.169.121: seq=1 ttl=127 time=51.263 ms
64 bytes from 61.135.169.121: seq=2 ttl=127 time=47.491 ms



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章