บทความนี้ขอนำเสนอการคอนฟิกลีนุกซ์ที่มีการ์ดแลนหลายพอร์ตให้ทำหน้าที่เป็น Ethernet Bridge หรือ Ethernet Switch โดยจะมีคุณสมบัติ เช่น สามารถรัน Spanning Tree Protocol มีตาราง MAC Address Table เหมือนกับอุปกรณ์ Switch ทั่วไป
ตัวอย่างในบทความนี้จะคอนฟิกการ์ดแลนสองพอร์ต ให้ bridge เข้าหากัน โดยทดสอบบน Fedora 10
ติดตั้งไฟล์ bridge-utils
ดาวน์โหลดไฟล์ bridge-utils แล้วใช้คำสั่ง rpm เพื่อติดตั้ง ดูที่ดาวน์โหลดได้ที่ ข้อมูลอ้างอิง
[root@linux-bridge ~]# rpm -i bridge-utils-1.2-6.fc10.i386.rpm
คอนฟิก Bridge ระหว่างพอร์ต
หลังจากติดตั้งโปรแกรมแล้ว เริ่มต้นคอนฟิกต้องสร้าง virtual interface ขึ้นมา ด้วยคำสั่ง brctl โดยอินเตอร์เฟซใหม่ที่สร้างใหม่นี้ (br0) จะเป็นเหมือน management interface ที่เราสามารถคอนฟิก ip address ลงไป แล้วสามารถใช้ ip นี้เพื่อรีโมต (secure shell) เข้าไปที่เครื่องลีนุกซ์ได้
[root@linux-bridge ~]# brctl addbr br0
คอนฟิก ip address ของพอร์ต br0 เพื่อใช้รีโมต
[root@linux-bridge ~]# ifconfig br0 192.168.1.1 netmask 255.255.255.0
ใช้คำสั่ง brctl addif เพื่อคอนฟิกพอร์ตแลน (physical interface) ที่ต้องการทำ bridge เข้าด้วยกัน ในที่นี้คือ eth0 และ eth1
[root@linux-bridge ~]# brctl addif br0 eth0 [root@linux-bridge ~]# brctl addif br0 eth1 [root@linux-bridge ~]# ifconfig eth0 up [root@linux-bridge ~]# ifconfig eth1 up
ตรวจสอบสถานะของพอร์ตแลนต่างๆ
[root@linux-bridge ~]# ifconfig br0 br0 Link encap:Ethernet HWaddr 00:10:CC:11:11:11 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:515181 errors:0 dropped:0 overruns:0 frame:0 TX packets:311342 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:45321741 (43.2 MiB) TX bytes:369783847 (352.6 MiB)
[root@linux-bridge ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:10:CC:11:11:11 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4417081 errors:0 dropped:0 overruns:0 frame:0 TX packets:3755694 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1167814059 (1.0 GiB) TX bytes:946149995 (902.3 MiB) Interrupt:16
[root@linux-bridge ~]# ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:90:CC:22:22:22 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3450310 errors:0 dropped:0 overruns:0 frame:0 TX packets:4048559 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:562811569 (536.7 MiB) TX bytes:1112816400 (1.0 GiB) Interrupt:16 Base address:0xa000
ตรวจสอบสถานะของ bridge
ใช้คำสั่ง brctl show เพื่อตรวจสอบสถานะของ bridge
[root@linux-bridge ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0010cc111111 no eth0 eth1
ตรวจสอบสถานะ Spanning Tree (STP)
ใช้คำสั่ง brctl showstp เพื่อตรวจสอบการทำงานของ Spanning Tree Protocol (STP)
[root@linux-bridge ~]# brctl showstp br0 br0 bridge id 8000.0010cc111111 designated root 8000.0010cc111111 root port 0 path cost 0 max age 19.99 bridge max age 19.99 hello time 1.99 bridge hello time 1.99 forward delay 14.99 bridge forward delay 14.99 ageing time 299.95 hello timer 1.83 tcn timer 0.00 topology change timer 0.00 gc timer 13.83 flags
eth0 (0) port id 0000 state forwarding designated root 8000.0010cc111111 path cost 19 designated bridge 8000.0010cc111111 message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.83 flags
eth1 (0) port id 0000 state forwarding designated root 8000.0010cc111111 path cost 19 designated bridge 8000.0010cc111111 message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.83 flags
ตรวจสอบตาราง MAC Address Table
ใช้คำสั่ง brctl showmacs เพื่อแสดงตาราง MAC Address Table ได้
[root@linux-bridge ~]# brctl showmacs br0 port no mac addr is local? ageing timer 1 00:00:77:aa:88:33 no 9.96 1 00:02:ee:33:00:55 no 141.24 2 00:03:bb:77:66:55 no 0.03 1 00:10:cc:11:11:11 yes 0.00 1 00:11:ff:00:77:ff no 0.00 1 00:11:ff:77:ff:44 no 241.09 2 00:90:cc:22:22:22 yes 0.00