O01三、動手實踐Linux VLAN

 
本節咱們來看如何在實驗環境中實施和部署以下的VLAN 網絡
 
 
配置VLAN 10 和 VLAN 20
 
root@ubuntu:~# cat /etc/network/interfaces | grep '^[^#]'
source /etc/network/interfaces.d/*
 
auto lo
iface lo inet loopback
 
auto ens160
iface ens160 inet static
 
auto br0
iface br0 inet static
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports ens160
    address 10.12.31.211
    netmask 255.255.252.0
    network 10.12.28.0
    broadcast 10.12.31.255
    gateway 10.12.28.6
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 10.12.28.6
    up route add -net 172.22.0.0 netmask 255.255.0.0 gw 10.12.28.1 br0
 
auto ens160.10
iface ens160.10 inet manual
    vlan-raw-device ens160
 
auto br10
iface br10 inet manual
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports ens160.10
    
auto ens160.20
iface ens160.20 inet manual
    vlan-raw-device ens160
 
auto br20
iface br20 inet manual
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports ens160.20
 
root@ubuntu:~# reboot
 
root@ubuntu:~# ifconfig
br0       Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet addr:10.12.31.211  Bcast:10.12.31.255  Mask:255.255.252.0
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:216 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:79929 (79.9 KB)  TX bytes:30730 (30.7 KB)
 
br10      Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3349 (3.3 KB)
 
br20      Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:1766 (1.7 KB)
 
ens160    Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1658 errors:0 dropped:5 overruns:0 frame:0
          TX packets:335 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:271880 (271.8 KB)  TX bytes:44746 (44.7 KB)
 
ens160.10 Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:6698 (6.6 KB)
 
ens160.20 Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3349 (3.3 KB)
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:88 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:6312 (6.3 KB)  TX bytes:6312 (6.3 KB)
 
virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
root@ubuntu:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.005056874c70    no        ens160
br10        8000.005056874c70    no        ens160.10
br20        8000.005056874c70    no        ens160.20
virbr0        8000.000000000000    yes        
 
 
建立VM1,網絡接到 VLAN 10 上
 
 
root@ubuntu:~# virsh domiflist VM1
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br10       rtl8139     52:54:00:f7:58:9e
 
root@ubuntu:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.005056874c70    no        ens160
br10        8000.005056874c70    no        ens160.10
                            vnet0
br20        8000.005056874c70    no        ens160.20
virbr0        8000.000000000000    yes        
 
 
建立VM2,網絡接到 VLAN 20 上
 
 
root@ubuntu:~# virsh domiflist VM2
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet1      bridge     br20       rtl8139     52:54:00:d0:ac:1a
 
root@ubuntu:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.005056874c70    no        ens160
br10        8000.005056874c70    no        ens160.10
                            vnet0
br20        8000.005056874c70    no        ens160.20
                            vnet1
virbr0        8000.000000000000    yes        
 
 
驗證 VLAN 的隔離性
 
配置 VM1 IP 192.168.9.1/24
 
配置 VM2 IP 192.168.9.2/24
 
用 ping 驗證網絡連通性
 
 
 
最後測試結果 VM1 和 VM2 網絡是不通的
 
 
緣由以下:
 
    一、VM2 向 VM1 發ping 包以前,須要知道 VM1 的IP 192.168.9.1 對應的MAC地址。VM2 會在網絡中廣播ARP包,其做用就是問「誰知道 192.168.9.1 的MAC 地址是多少?」
 
    二、ARP 是二層協議,VLAN的隔離做用使得 ARP 只能在 VLAN20的範圍內廣播,只有 br20 和 ens160.20 能收到,VLAN 10 裏的設備收不到。VM1 收不到 VM2 的請求信息,更不會回覆 VM2
 
    三、VM2 拿不到 VM1 的MAC,也就ping不通 VM1 了
 
Linux Bridge + VLAN = 虛擬交換機
 
如今對 KVM 的網絡虛擬化作個總結:
 
    一、物理交換機存在多個VLAN,每一個VLAN擁有多個端口,同一VLAN端口之間能夠交換轉發,不一樣VLAN端口之間隔離。因此交換機包含兩層功能:交換和隔離
 
    二、Linux 的 VLAN 設備實現的是隔離功能,但沒有交換功能。一個VLAN母設備(好比eth0)不能擁有兩個相同ID 的VLAN 子設備,所以也就不可能出現數據交換的狀況。
 
    三、Linux Bridge 專門實現交換功能。將同一 VLAN 的子設備都掛載到 Bridge 上,設備之間就能夠交換數據了。
 
總結起來,Linux Bridge 加 VLAN 在功能層面完整模擬現實世界裏的二層交換機。eth0 至關於虛擬交換機上的 Trunk 口,容許 vlan10 和 vlan 20數據經過。
 
ens160.10    vnet0    和 br10 均可以看作 vlan10 的 access 口
ens160.20    vnet1    和 br20 均可以看作 vlan20 的 access口
相關文章
相關標籤/搜索