天天看點

了解 virbr0 - 每天5分鐘玩轉 OpenStack(11)

virbr0 是 KVM 預設建立的一個 Bridge,其作用是為連接配接其上的虛機網卡提供 NAT 通路外網的功能。

virbr0 預設配置設定了一個IP 192.168.122.1,并為連接配接其上的其他虛拟網卡提供 DHCP 服務。

下面我們示範如何使用 virbr0。

在 virt-manager 打開 VM1 的配置界面,網卡 Source device 選擇 “default”,将 VM1 的網卡挂在 virbr0 上。

啟動 VM1,brctl show 可以檢視到 vnet0 已經挂在了 virbr0 上。

# brctl show bridge name     bridge id               STP enabled     interfaces br0             8000.000c298decbe       no                    eth0 virbr0          8000.fe540075dd1a       yes                   vnet0

用 virsh 指令确認 vnet 就是 VM1 的虛拟網卡。

# virsh domiflist VM1 Interface  Type       Source     Model       MAC ------------------------------------------------------- vnet0      network    default    rtl8139     52:54:00:75:dd:1a

virbr0 使用 dnsmasq 提供 DHCP 服務,可以在主控端中檢視該程序資訊

# ps -elf|grep dnsmasq 5 S libvirt+  2422     1  0  80   0 -  7054 poll_s 11:26 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf

在 /var/lib/libvirt/dnsmasq/ 目錄下有一個 default.leases 檔案,當 VM1 成功獲得 DHCP 的 IP 後,可以在該檔案中檢視到相應的資訊

# cat /var/lib/libvirt/dnsmasq/default.leases 1441525677 52:54:00:75:dd:1a 192.168.122.6 ubuntu *

上面顯示 192.168.122.6 已經配置設定給 MAC 位址為 52:54:00:75:dd:1a 的網卡,這正是 vnet0 的 MAC。之後就可以使用該 IP 通路 VM1 了。

# ssh 192.168.122.6 [email protected]'s password: Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic x86_64) Last login: Sun Sep  6 01:30:23 2015 root@VM1:~# ifconfig eth0      Link encap:Ethernet  HWaddr 52:54:00:75:dd:1a          inet addr:192.168.122.6  Bcast:192.168.122.255  Mask:255.255.255.0          inet6 addr: fe80::5054:ff:fe75:dd1a/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:61 errors:0 dropped:0 overruns:0 frame:0          TX packets:66 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:7453 (7.4 KB)  TX bytes:8649 (8.6 KB)

Ping一下外網。

root@VM1:~# ping www.baidu.com PING www.a.shifen.com (180.97.33.107) 56(84) bytes of data. 64 bytes from 180.97.33.107: icmp_seq=1 ttl=52 time=36.9 ms 64 bytes from 180.97.33.107: icmp_seq=2 ttl=52 time=119 ms 64 bytes from 180.97.33.107: icmp_seq=3 ttl=52 time=88.5 ms 64 bytes from 180.97.33.107: icmp_seq=4 ttl=52 time=38.0 ms 64 bytes from 180.97.33.107: icmp_seq=5 ttl=52 time=122 ms

沒有問題,可以通路外網,說明 NAT 起作用了。

需要說明的是,使用 NAT 的虛機 VM1 可以通路外網,但外網無法直接通路 VM1。

因為 VM1 發出的網絡包源位址并不是 192.168.122.6,而是被 NAT 替換為主控端的 IP 位址了。

這個與使用 br0 不一樣,在 br0 的情況下,VM1 通過自己的 IP 直接與外網通信,不會經過 NAT 位址轉換。

下節我們讨論 vlan 在 linux bridge 中的實作

本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1754146

繼續閱讀