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
一、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
一、物理交換機存在多個VLAN,每一個VLAN擁有多個端口,同一VLAN端口之間能夠交換轉發,不一樣VLAN端口之間隔離。因此交換機包含兩層功能:交換和隔離
二、Linux 的 VLAN 設備實現的是隔離功能,但沒有交換功能。一個VLAN母設備(好比eth0)不能擁有兩個相同ID 的VLAN 子設備,所以也就不可能出現數據交換的狀況。
總結起來,Linux Bridge 加 VLAN 在功能層面完整模擬現實世界裏的二層交換機。eth0 至關於虛擬交換機上的 Trunk 口,容許 vlan10 和 vlan 20數據經過。