916 瀏覽數

LXC – Network

測試環境為 Ubuntu14.04

前面有討論到 LXC 虛擬化 http://benjr.tw/95955 與 Ubuntu LXC 的使用 http://benjr.tw/93708 ,這邊我們來看看關於 LXC 的網路架構.

安裝完 LXC 會發現多了一個網路埠 lxcbr0

root@ubuntu:~# ifconfig
...
lxcbr0    Link encap:Ethernet  HWaddr 9e:da:df:05:e4:d0  
          inet addr:10.0.3.1  Bcast:10.0.3.255  Mask:255.255.255.0
          inet6 addr: fe80::9cda:dfff:fe05:e4d0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:7965 (7.9 KB)

我們來看看這個網路埠 lxcbr0 的設定值.

root@ubuntu:~# nano /etc/default/lxc-net
USE_LXC_BRIDGE="true"
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"

Linux 網路提供 Bridge mode 他可以透過 Linux 模擬一個 switch 來使用了,LXC 的網卡就是單純透過虛擬的 switch 與 Host 端網卡相聯接.還提供 DHCP Server 的服務.
下面的圖示你可以很清楚的看出來虛擬 NIC 是如何透過 bridge 模式串接在一起.
VMwarePlayer33

  • USE_LXC_BRIDGE="true"
    是否使用 LXC Bridge 功能.
  • LXC_BRIDGE="lxcbr0″
    該 Bridge 的名稱 lxcbr0
  • LXC_ADDR="10.0.3.1″
    該 Bridge 的 IP
  • LXC_NETMASK="255.255.255.0″
    該 Bridge 的網段遮罩.
  • LXC_NETWORK="10.0.3.0/24″
    該 Bridge 的網段 10.0.3.0/24 (255.255.255.0)
  • LXC_DHCP_RANGE="10.0.3.2,10.0.3.254″
    這 Bridge 提供 DHCP 的功能,IP 範圍 10.0.3.2 ~ 10.0.3.254

我們可以透過 # brctl show 是觀察這個 Bridge 的狀態.

root@ubuntu:~# brctl show
bridge name	bridge id		STP enabled	interfaces
lxcbr0		8000.000000000000	no

啟動 Ubuntu-1 與 Ubuntu-2 Containers ,可以觀察到他們的網路裝置 (veth40YLD4 , vethV0JUNP) 會掛載在這一個 Bridge 上

root@ubuntu:~# lxc-start -n ubuntu-1 -d
root@ubuntu:~# lxc-start -n ubuntu-2 -d
root@ubuntu:~# brctl show
bridge name	bridge id		STP enabled	interfaces
lxcbr0		8000.feb9422336e4	no		veth40YLD4
							vethV0JUNP

在 Ubuntu-2 Container 也是可以 ping 得到該 Bridge IP:10.0.3.1

ubuntu@ubuntu-2:~$ ping 10.0.3.1
PING 10.0.3.1 (10.0.3.1) 56(84) bytes of data.
64 bytes from 10.0.3.1: icmp_seq=1 ttl=64 time=0.084 ms
64 bytes from 10.0.3.1: icmp_seq=2 ttl=64 time=0.098 ms
64 bytes from 10.0.3.1: icmp_seq=3 ttl=64 time=0.117 ms
^C
--- 10.0.3.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.084/0.099/0.117/0.017 ms

發表迴響