Bridge Network บน Linux คืออะไร? วิธีตั้งค่า Bridge สำหรับ VM และ Container แบบ Step-by-Step
Bridge Network คือ Virtual Switch ที่เชื่อม Network Interface หลายตัวเข้าด้วยกันบน Linux ทำให้ VM หรือ Container มองเห็นเครือข่ายเดียวกับ Host ได้โดยตรง ใช้กันมากในงาน KVM, LXC และ Docker โดยสามารถตั้งค่าได้ 3 วิธีหลัก คือ ip command, nmcli และ Netplan
Bridge Network คืออะไร ทำไม SysAdmin ต้องรู้
Bridge Network ทำหน้าที่เหมือนสวิตช์เสมือน (Virtual Switch) ที่เชื่อม Network Interface หลายตัวเข้าด้วยกัน ทำให้อุปกรณ์ทุกตัวที่ต่ออยู่กับ Bridge มองเห็นกันราวกับอยู่ใน LAN เดียวกัน
ในงาน Virtualization และ Container การตั้งค่า Bridge Network ถือเป็นทักษะพื้นฐานที่ขาดไม่ได้ เพราะถ้าไม่มี Bridge แล้ว VM แต่ละตัวจะเข้าถึงเครือข่ายภายนอกไม่ได้ หรือต้องใช้ NAT ที่เพิ่มความซับซ้อนและลด Performance
เตรียมตัวก่อนเริ่มตั้งค่า Bridge
ตรวจสอบว่าเครื่องมี Network Interface อย่างน้อย 3 ตัว:
ip link show
จากนั้นติดตั้ง bridge-utils:
sudo apt install bridge-utils # Debian/Ubuntu
sudo yum install bridge-utils # CentOS/RHEL
ข้อควรระวัง: หากตั้งค่า Bridge ผ่าน SSH ควรทำผ่าน Console หรือ Out-of-Band Management เพราะการเปลี่ยน Network Config อาจทำให้ SSH หลุดได้
วิธีที่ 1: สร้าง Bridge ด้วยคำสั่ง ip (สำหรับทดสอบ)
วิธีนี้เร็วที่สุดสำหรับการทดสอบ แต่จะหายไปเมื่อ Reboot:
# สร้าง Bridge Interface
sudo ip link add br0 type bridge
# เพิ่ม 3 Interface เข้า Bridge
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
sudo ip link set eth2 master br0
# เปิด Bridge และ Interface ทั้งหมด
sudo ip link set br0 up
sudo ip link set eth0 up
sudo ip link set eth1 up
sudo ip link set eth2 up
# กำหนด IP ให้ Bridge (DHCP)
sudo dhclient br0
หากต้องการตั้ง Static IP แทน DHCP:
sudo ip addr add 192.168.1.10/24 dev br0
sudo ip route add default via 192.168.1.1 dev br0
ตรวจสอบว่า Bridge ทำงานถูกต้อง:
# ดูสถานะ Bridge
bridge link show
brctl show
# ดู IP ของ br0
ip addr show br0
วิธีที่ 2: สร้าง Bridge ด้วย nmcli (แนะนำสำหรับ Production)
สำหรับเซิร์ฟเวอร์ที่ใช้ NetworkManager การตั้งค่าผ่าน nmcli จะ Persist ข้าม Reboot:
# สร้าง Bridge connection
sudo nmcli connection add type bridge ifname br0 con-name br0
# ตั้งค่า IP สำหรับ Bridge
sudo nmcli connection modify br0 ipv4.addresses 192.168.1.10/24
sudo nmcli connection modify br0 ipv4.gateway 192.168.1.1
sudo nmcli connection modify br0 ipv4.dns 8.8.8.8
sudo nmcli connection modify br0 ipv4.method manual
# เพิ่ม 3 Interface เข้า Bridge
sudo nmcli connection add type bridge-slave ifname eth0 master br0
sudo nmcli connection add type bridge-slave ifname eth1 master br0
sudo nmcli connection add type bridge-slave ifname eth2 master br0
# เปิดใช้งาน Bridge
sudo nmcli connection up br0
Config ทั้งหมดถูกเก็บใน /etc/NetworkManager/system-connections/ อัตโนมัติ Reboot กี่ครั้งก็ไม่หาย
วิธีที่ 3: ตั้งค่า Bridge ผ่าน Netplan (Ubuntu 18.04+)
สร้างไฟล์ /etc/netplan/01-bridge.yaml:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
eth1:
dhcp4: no
eth2:
dhcp4: no
bridges:
br0:
interfaces:
- eth0
- eth1
- eth2
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
parameters:
stp: true
forward-delay: 4
Apply การตั้งค่า:
sudo netplan apply
Bridge Network กับ VLAN สำหรับงาน Data Center
ในสภาพแวดล้อมจริงอย่าง Data Center หรือระบบ Colocation มักใช้ Bridge ร่วมกับ VLAN:
# สร้าง VLAN sub-interface
sudo ip link add link eth0 name eth0.100 type vlan id 100
# สร้าง Bridge สำหรับ VLAN 100
sudo ip link add br-vlan100 type bridge
sudo ip link set eth0.100 master br-vlan100
# เปิด Interface
sudo ip link set eth0.100 up
sudo ip link set br-vlan100 up
sudo ip addr add 10.100.1.1/24 dev br-vlan100
Troubleshooting Bridge Network
# ทดสอบ Connectivity
ping -c 4 8.8.8.8
# ตรวจสอบ Bridge ports
brctl show br0
# ดู MAC address table
brctl showmacs br0
ปัญหาที่พบบ่อยและวิธีแก้
Ping ไม่ผ่าน - ตรวจสอบว่า STP ไม่ได้ Block Port:
sudo brctl stp br0 off
VM ไม่ได้ IP จาก DHCP - ตรวจสอบ IP Forwarding:
cat /proc/sys/net/ipv4/ip_forward
# ถ้าเป็น 0 ให้เปิด
sudo sysctl -w net.ipv4.ip_forward=1
Traffic ถูก Block - ตรวจ iptables:
sudo iptables -A FORWARD -i br0 -o br0 -j ACCEPT
Best Practices สำหรับ Bridge Network ใน Production
- ใช้ Bonding + Bridge สำหรับ High Availability เชื่อม NIC หลายตัวด้วย Bonding ก่อนแล้วค่อยนำ Bond Interface มาเป็น Slave ของ Bridge
- เปิด STP ใน Production เพื่อป้องกัน Network Loop
- แยก Management Network อย่าใช้ Bridge Interface เดียวกับ Management
- ตั้ง MTU ให้ตรงกัน ทุก Interface ที่อยู่ใน Bridge ควรใช้ MTU เดียวกัน
คำถามที่พบบ่อย (FAQ)
Bridge Network ต่างจาก NAT อย่างไร?
Bridge ให้ VM ได้รับ IP จากเครือข่ายจริงโดยตรง เหมือนต่อสายแลนเพิ่ม ส่วน NAT จะซ่อน VM ไว้หลัง Host IP ต้อง Forward Port ทีละตัว Bridge ให้ Performance ดีกว่าและตั้งค่า Service บน VM ง่ายกว่า
Bridge Network บน Linux รองรับ Interface ได้กี่ตัว?
ไม่มีขีดจำกัดตายตัวจาก Kernel แต่ในทางปฏิบัติขึ้นอยู่กับ Hardware และ Memory ของเครื่อง สำหรับงานทั่วไป Bridge เดียวรองรับ Interface ได้หลายสิบตัว
ใช้ Bridge Network กับ Docker ได้ไหม?
ได้ Docker สร้าง Bridge Network ชื่อ docker0 มาให้โดย Default แต่สามารถสร้าง Custom Bridge เพิ่มได้:
docker network create --driver bridge my-bridge
Bridge Network มีผลต่อ Performance หรือไม่?
Bridge ทำงานที่ Layer 2 จึงมี Overhead น้อยมากเมื่อเทียบกับ NAT ที่ต้องทำ Address Translation ทุก Packet
สรุป
Bridge Network เป็นพื้นฐานสำคัญของ Virtualization และ Container Networking บน Linux ไม่ว่าจะเลือกใช้ ip command สำหรับทดสอบ nmcli สำหรับ Production หรือ Netplan สำหรับ Ubuntu ก็ตั้งค่าได้ไม่ยาก
สำหรับใครที่ต้องการเซิร์ฟเวอร์สำหรับรัน Virtualization จริงจัง VPS จาก DriteStudio รองรับ Nested Virtualization ได้เต็มที่ หรือถ้าต้องการ NIC หลายพอร์ต Dedicated Server จาก DriteStudio ตอบโจทย์งาน Production Networking ได้อย่างมั่นใจ
