ในบทความนี้เราจะแสดงวิธีกำหนดค่าอินเตอร์เฟซ VLAN แบบแท็ก (tagged) โดยใช้เครื่องมือพื้นฐานของ Linux บน CentOS/Fedora/RedHat เราจะศึกษาการกำหนดค่าโดยใช้ subinterface, ไฟล์ vlanX แยกต่างหาก และเครื่องมืออย่าง NetworkManager และ vconfig
ใน CentOS/Fedora/RedHat มี 2 ทางเลือกในการกำหนดค่า VLAN:
- ใช้ subinterface (เช่น
eth12.7) - ใช้ไฟล์ vlanXX แยกต่างหาก (
vlan7)
VLAN (Virtual Local Area Network) ช่วยแบ่งเครือข่ายของคุณออกเป็นโดเมนการกระจายสัญญาณหลายโดเมนที่แยกจากกันบนระดับ Data Link ของ OSI ด้วย VLAN คุณสามารถกำหนดค่าเครือข่ายบางเครือข่ายบนอินเตอร์เฟซทางกายภาพเดียวกันของเซิร์ฟเวอร์ได้ เมื่อใช้ VLAN 802.1Q เราเตอร์ สวิตช์ และเซิร์ฟเวอร์ต้องกำหนดแท็กพิเศษ (tagged traffic) พร้อมหมายเลข VLAN (VLAN ID: 0 ถึง 4095) ให้กับแพ็กเก็ตเครือข่าย
วิธีสร้าง VLAN โดยใช้ Subinterface
เพื่อกำหนดค่าอินเตอร์เฟซแบบแท็ก โมดูลเคอร์เนล Linux 8021q ต้องเปิดใช้งานบนเซิร์ฟเวอร์ของคุณ โหลดโมดูลด้วยคำสั่ง:
# modprobe 8021q
หากโมดูลโหลดแล้ว จะเกิดข้อผิดพลาด: modprobe: ERROR: could not insert ‘8021q’: Module already in kernel
ตรวจสอบว่าโมดูลโหลดแล้ว:
# lsmod | grep 8021q
8021q 33080 0 garp 14384 1 8021q mrp 18542 1 8021q
โมดูล 8021q มีอยู่ในระบบ
เพิ่มโมดูลนี้เข้าไปในการเริ่มต้นระบบ Linux:
# echo 8021q >> /etc/modules-load.d/8021q.conf
สร้าง VLAN ด้วย ID 7 สำหรับอินเตอร์เฟซ eth0 เพิ่มไฟล์กำหนดค่า ifcfg-eth0.7 (ตัวเลข 7 หลังจุดคือหมายเลข VLAN) ไฟล์นี้มีคำอธิบาย subinterface VLAN
# nano /etc/sysconfig/network-scripts/ifcfg-eth0.7
เพิ่มการตั้งค่าต่อไปนี้:
ONBOOT=yes TYPE=Ethernet VLAN=yes DEVICE=eth0.7 BOOTPROTO=static IPADDR=10.61.20.10 NETMASK=255.255.255.0
ไฟล์กำหนดค่านี้ผูกอินเตอร์เฟซเสมือน eth0.7 กับอินเตอร์เฟซทางกายภาพ eth0 หลังสร้างไฟล์กำหนดค่า ให้รีสตาร์ทบริการเครือข่าย:
# systemctl restart network
ตรวจสอบการตั้งค่าเครือข่าย:
# ip a

ตามที่เห็น subinterface พร้อม VLAN 7 ถูกเพิ่มเข้ามา
คุณสามารถแสดงการผูกอินเตอร์เฟซและ VLAN ปัจจุบันได้ดังนี้:
# cat /proc/net/vlan/config
เพื่อดูสถิติอินเตอร์เฟซ (ใช้ตัวนับแพ็กเก็ต คุณสามารถยืนยันได้ว่าอินเตอร์เฟซ VLAN ได้รับ tagged traffic):
# cat /proc/net/vlan/eth0.7
เพื่อ ping จากอินเตอร์เฟซ VLAN เฉพาะ ใช้คำสั่ง:
# ping -I eth0.7 192.168.1.22
การกำหนดค่า VLAN โดยใช้ไฟล์ vlanXX แยกต่างหาก
ตอนนี้ลองสร้าง VLAN ด้วย ID 8 โดยใช้ไฟล์กำหนดค่าแยกต่างหาก:
# nano /etc/sysconfig/network-scripts/ifcfg-vlan8
เพิ่มบรรทัดเหล่านี้:
ONBOOT=yes TYPE=Ethernet VLAN=yes VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD DEVICE=vlan8 PHYSDEV=eth0.8 VLAN_ID=8 BOOTPROTO=static IPADDR=10.6.120.10 NETMASK=255.255.255.0
โปรดสังเกตว่าไฟล์กำหนดค่านี้ต่างจากตัวก่อนหน้าค่อนข้างเล็กน้อย ในการตั้งค่านี้คุณระบุบรรทัด 'PHYSDEV' ที่ส่งต่อไฟล์กำหนดค่าไปยังอินเตอร์เฟซเครือข่ายทางกายภาพ

หลังจากกำหนดค่าเสร็จแล้ว ให้รีสตาร์ทบริการเครือข่าย:
# systemctl restart network
หากเห็นข้อผิดพลาด No suitable device found for this connection ระหว่างรีสตาร์ทบริการเครือข่าย ให้ตรวจสอบว่าคุณระบุค่าที่ถูกต้องสำหรับตัวเลือก VLAN_ID ใน ifcfg-vlan8
ตรวจสอบ:
ip l ls
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:1d:4b:67 brd ff:ff:ff:ff:ff:ff 6: vlan8@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:1d:4b:67 brd ff:ff:ff:ff:ff:ff
อินเตอร์เฟซเครือข่าย VLAN8 พร้อมใช้งานเช่นกัน
การใช้ NetworkManager ในการกำหนดค่าอินเตอร์เฟซ VLAN
ตั้งแต่ CentOS 8 (RHEL 8) NetworkManager ถูกใช้จัดการการเชื่อมต่อเครือข่าย เครื่องมือนี้มีอยู่ก่อนหน้านี้ แต่ผู้ดูแลระบบส่วนใหญ่ใช้ network ที่คุ้นเคย
มาดูวิธีกำหนดค่า VLAN โดยใช้ NM สร้างอินเตอร์เฟซเสมือน ens3.7 สำหรับ VLAN 7 บนอินเตอร์เฟซทางกายภาพ ens3 และตั้งค่าที่อยู่ IP:
# nmcli con add type vlan con-name ens3.7 ifname VLAN7 id 7 dev ens3 ip4 10.1.10.11/24 gw4 10.1.10.1
เพื่อตรวจสอบอินเตอร์เฟซเครือข่ายบนเซิร์ฟเวอร์ของคุณ ให้รันคำสั่ง:
# nmcli con show
NAME UUID TYPE DEVICE ens3 8bd5cfbc-5ffc-4554-8ae1-9e02e4b57ceb ethernet ens3 virbr0 e64e63a5-76ae-4661-91ae-009f566c5e66 bridge virbr0 ens3.7 e5e91557-49a8-4389-bdfc-c9bfc099714b vlan VLAN7
รีสตาร์ท NetworkManager หลังจากกำหนดค่า:
# systemctl restart NetworkManager
หลังจากรีสตาร์ทบริการ NM อินเตอร์เฟซยังคงอยู่:

คุณสามารถแสดงการตั้งค่า VLAN ปัจจุบันได้ดังนี้:
# nmcli connection show ens3.7
วิธีกำหนดค่า VLAN ชั่วคราวโดยใช้ vconfig
สำหรับการทดสอบการตั้งค่าเครือข่าย/VLAN ควรใช้เครื่องมือ vconfig Vconfig เป็นเครื่องมือที่มีประโยชน์มากระหว่างการทดสอบหรือการศึกษา เนื่องจากหากคุณสูญเสียการเข้าถึงเซิร์ฟเวอร์เนื่องจากการตั้งค่าเครือข่ายผิด คุณสามารถกลับสู่การตั้งค่าเดิมด้วยการรีบูทเพียงครั้งเดียว เครื่องมือนี้มีอยู่ในที่เก็บ EPEL มาติดตั้งด้วย yum (หรือ dnf):
# yum install epel-release-y && yum install vconfig
สร้างอินเตอร์เฟซด้วย VLAN9:
# vconfig add eth0 9
Added VLAN with VID == 9 to IF -:eth0:-
จากนั้นกำหนดที่อยู่ IP ให้กับอินเตอร์เฟซเครือข่ายที่สร้างขึ้น:
# ifconfig eth0.9 10.1.0.15 netmask 255.255.255.0 up
อินเตอร์เฟซ VLAN ชั่วคราวถูกสร้างขึ้นแล้ว

อย่าลืมกำหนดค่า VLAN ที่ตรงกันบนฮาร์ดแวร์เครือข่ายของคุณพร้อมกับการกำหนดค่า VLAN บนเซิร์ฟเวอร์ เพื่อให้ได้การเชื่อมต่อเครือข่าย