Tìm hiểu về linux bridge.
1.1. Giới thiệu.
- Linux Bridge là kernel-module của nhiều Distro của Linux, nhằm cung cấp các Switch ảo trên trên Linux, cung cấp để giải quyết vấn đề ảo hóa network .
- Linux Bridge hoạt động như một thiết bị Layer 2 tron mô hình OSI, sẽ được các VM gắn vào các port và giao tiếp với các VM khác hoặc các network khác nhờ bảng định tuyến.
- Linux Bridge sử dụng câu lệnh
brctl
để quản lý . - Linux bridge là một thiết bị ảo lớp 2 mà không thể nhận hoặc truyền bất cứ thứ gì trừ khi bạn ràng buộc một hoặc nhiều cổng thật ( cổng ethernet, Linux Bridge không làm việc được với card Wireless)
1.2 Một số khái niệm cơ bản:
Có một số khái niệm khi làm việc với Linux Bridge:
- TAP : là các interface để VM kết nối với bridge do linux bridge tạo ra
- vNIC : là card ảo cho các máy ảo
- Physical Switch Port : là cổng kết nối đến cổng vật lý của host
- Virtual swtich port : là port ảo tồn tại trên virtual switch. Cả virtual NIC (vNIC) và virtual port đều là phần mềm, nó liên kết với virtual cable kết nối vNIC
- MAC Learning DB : lưu trữ các mac table của các host đã giao tiếp.
- forward data - chuyển tiếp dữ liệu từ máy ảo tới bridge.
1.3. Các tính năng của Linux Bridge.
- STP: Spanning tree protocol.
- Vlan: Tạo ra các mạng ảo trên switch(do Linux Bridge tạo ra) thành các mạng Lan ảo, cô lập traffic giữa các mạng.
- FDB: chuyển tiếp các gói tin theo database để nâng cao hiệu năng switch.
2. Làm việc với Linux bridge.
2.1. Cài đặt công cụ làm việc với Linux Bridge.
Linux Bridge được hỗ trợ từ phiên bản kernel 2.4 trở lên. Cài đặt công cụ quản lý Linux Bridge:
# Centos
sudo yum install bridge-utils
# Ubuntu
BRIDGE MANAGEMENT
ACTION | BRCTL | BRIDGE |
---|---|---|
creating bridge | brctl addbr <bridge> |
|
deleting bridge | brctl delbr <bridge> |
|
add interface (port) to bridge | brctl addif <bridge> <ifname> |
|
delete interface (port) on bridge | brctl delif <brname> <ifname> |
FDB MANAGEMENT
ACTION | BRCTL | BRIDGE |
---|---|---|
Shows a list of MACs in FDB | brctl showmacs <bridge> |
bridge fdb show |
Sets FDB entries ageing time | brctl setageingtime <bridge> <time> |
|
Sets FDB garbage collector interval | brctl setgcint <brname> <time> |
|
Adds FDB entry | bridge fdb add dev <interface> [dst, vni, port, via] |
|
Appends FDB entry | bridge fdb append (parameters same as for fdb add) |
|
Deletes FDB entry | bridge fdb delete (parameters same as for fdb add) |
STP MANAGEMENT
ACTION | BRCTL | BRIDGE |
---|---|---|
Turning STP on/off | brctl stp <bridge> <state> |
|
Setting bridge priority | brctl setbridgeprio <bridge> <priority> |
|
Setting bridge forward delay | brctl setfd <bridge> <time> |
|
Setting bridge ‘hello’ time | brctl sethello <bridge> <time> |
|
Setting bridge maximum message age | brctl setmaxage <bridge> <time> |
|
Setting cost of the port on bridge | brctl setpathcost <bridge> <port> <cost> |
bridge link set dev <port> cost <cost> |
Setting bridge port priority | brctl setportprio <bridge> <port> <priority> |
bridge link set dev <port> priority <priority> |
Should port proccess STP BDPUs | bridge link set dev <port > guard [on, off] |
|
Should bridge might send traffic on the port it was received | bridge link set dev <port> hairpin [on,off] |
|
Enabling/disabling fastleave options on port | bridge link set dev <port> fastleave [on,off] |
|
Setting STP port state | bridge link set dev <port> state <state> |
VLAN MANAGEMENT
ACTION | BRCTL | BRIDGE |
---|---|---|
Creating new VLAN filter entry | bridge vlan add dev <dev> [vid, pvid, untagged, self, master] |
|
Delete VLAN filter entry | bridge vlan delete dev <dev> (parameters same as for vlan add) |
|
List VLAN configuration | bridge vlan show |
Nguồn : https://github.com/hocchudong/thuctap012017/blob/master/TamNT/Virtualization/docs/Virtual_Switch/1.Linux-Bridge.md
3. Lab 1.
3.1. Mô hình.
Yêu cầu bài lab: Tạo một brigde gán vào một interface vật lý, tạo một máy ảo và gán máy ảo vào tap interface của bridge ảo vừa tạo, kiểm tra truy cập mạng của máy ảo.
3.2. Cấu hình.
Bước 1: Tạo switch ảo br10
brctl addbr br10
Bước 2: Gán interface ens33 vào swicth br10
brctl addif br10 ens192
brctl stp br10 on
( nếu cần dùng STP )
Bước 3 . Cấu hình cho Bridge và Interface Bridge
- Tạo một file
ifcfg-br10
trong thư mục/etc/sysconfig/network-scripts
DEVICE="br10" BOOTPROTO="static" IPADDR="192.168.12.10" NETMASK="255.255.255.0" GATEWAY="192.168.12.2" DNS1=192.168.12.2 ONBOOT="yes" TYPE="Bridge" NM_CONTROLLED="no"
- Cấu trình trên interface được bridging đến
ens192
DEVICE=eth0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes NM_CONTROLLED=no BRIDGE=br10
Bước 5. Áp dụng cấu hình
systemctl restart network
Bước 6: Để kiểm tra, ta có tạo 1 máy ảo và gắn vào br10
- Cấu hình card mạng cho máy ảo CirrOS URL Download : http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
- Kiểm tra trên máy ảo CirrOS (test)¶
Đã nhận DHCP từ Router vật lý
4. Lab 2.
4.1. Mô hình bài lab.
Yêu cầu cấu hình tạo bridge và cấu hình ip table để route mạng của bridge ra mạng ngoài( mạng của interface wlp3s0).
4.2. Thực hiện.
Tạo bridge.
Tạo bridge:
brctl addbr br9
- Cấu hình
iptables
để chỉ định forward các gói tin từ mạng 192.168.250.0/24, interfacebr9
đến bất kỳ mạng nào ra interfacewlp3s0
:iptables -I FORWARD 1 -i wlp3s0 -o br9 -d 192.168.250.0/24 -j ACCEPT iptables -I FORWARD 1 -i br9 -o wlp3s0 -s 192.168.250.0/24 -j ACCEPT
- Cấu hình trong file /etc/network/interfaces để có thể tự đông cấu hình br9 sau mỗi lần reboot:
vi /etc/network/interfaces
Thêm cấu hình sau:
auto br9 iface br9 inet static address 192.168.250.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 bridge_maxwait 0
- Cấu hình máy ảo nhận br9: