Chuyển tới nội dung chính

Hướng Dẫn Cấu Hình VLAN Trên Ubuntu và Cisco Switch

Giới Thiệu Về VLAN

VLAN (Virtual Local Area Network) là công nghệ chia một mạng vật lý thành nhiều mạng logic độc lập. VLAN giúp tăng bảo mật, giảm broadcast traffic và quản lý mạng hiệu quả hơn.

Lợi ích của VLAN:

  • ✅ Phân tách traffic giữa các departments
  • ✅ Tăng cường bảo mật network
  • ✅ Giảm thiểu broadcast domain
  • ✅ Dễ dàng quản lý và mở rộng
  • ✅ Tiết kiệm chi phí phần cứng

Thời gian thực hiện: 60-90 phút
Độ khó: Nâng cao
Yêu cầu: Kiến thức mạng cơ bản, switch managed, quyền admin

Kiến Thức Cơ Bản

Các Khái Niệm Quan Trọng

VLAN ID:

  • Số định danh VLAN (1-4094)
  • VLAN 1: Default VLAN (không nên sử dụng)
  • VLAN 1002-1005: Reserved cho Token Ring và FDDI

Access Port:

  • Kết nối đến thiết bị end-user (PC, máy in)
  • Chỉ thuộc 1 VLAN duy nhất
  • Không tag traffic

Trunk Port:

  • Kết nối giữa các switch hoặc switch-router
  • Có thể mang nhiều VLAN
  • Tag traffic theo chuẩn 802.1Q

![Sơ đồ Access vs Trunk Port - Đặt ảnh tại /static/img/network/vlan-port-types.png]

Chuẩn 802.1Q

+------------------+------------------+------------------+
| Ethernet Header | 802.1Q Tag (4B) | Data + FCS |
+------------------+------------------+------------------+
| |
| TPID | PCP|DEI|VID|
| 0x8100| 3b|1b|12b|

Kịch Bản Thực Tế

Chúng ta sẽ cấu hình mạng cho một công ty nhỏ:

VLAN 10 - Management  (192.168.10.0/24)
VLAN 20 - Office (192.168.20.0/24)
VLAN 30 - Guest (192.168.30.0/24)
VLAN 40 - Server (192.168.40.0/24)

Topology:

                    Internet
|
[Router/Firewall]
|
[Core Switch]
(Trunk)
/ \
[SW1] [SW2]
(Access) (Access)
/ | \ / | \
PC1 PC2 Printer PC3 PC4 Server
VLAN20 VLAN20 VLAN20 VLAN30 VLAN30 VLAN40

![Sơ đồ mạng VLAN - Đặt ảnh tại /static/img/network/vlan-topology.png]

Phần 1: Cấu Hình VLAN Trên Cisco Switch

Bước 1: Truy Cập Switch

# Kết nối qua console cable
screen /dev/ttyUSB0 9600

# Hoặc qua SSH (nếu đã cấu hình)
ssh [email protected]

Bước 2: Tạo VLANs

Switch> enable
Switch# configure terminal

! Tạo VLAN 10 - Management
Switch(config)# vlan 10
Switch(config-vlan)# name MANAGEMENT
Switch(config-vlan)# exit

! Tạo VLAN 20 - Office
Switch(config)# vlan 20
Switch(config-vlan)# name OFFICE
Switch(config-vlan)# exit

! Tạo VLAN 30 - Guest
Switch(config)# vlan 30
Switch(config-vlan)# name GUEST
Switch(config-vlan)# exit

! Tạo VLAN 40 - Server
Switch(config)# vlan 40
Switch(config-vlan)# name SERVER
Switch(config-vlan)# exit

Verify:

Switch# show vlan brief

VLAN Name Status Ports
---- -------------------------------- --------- ------------------------
1 default active Gi0/1-24
10 MANAGEMENT active
20 OFFICE active
30 GUEST active
40 SERVER active

Bước 3: Cấu Hình Access Ports

! Gán port Gi0/1-10 vào VLAN 20 (Office)
Switch(config)# interface range GigabitEthernet0/1-10
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport access vlan 20
Switch(config-if-range)# spanning-tree portfast
Switch(config-if-range)# exit

! Gán port Gi0/11-15 vào VLAN 30 (Guest)
Switch(config)# interface range GigabitEthernet0/11-15
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport access vlan 30
Switch(config-if-range)# spanning-tree portfast
Switch(config-if-range)# exit

! Gán port Gi0/20 vào VLAN 40 (Server)
Switch(config)# interface GigabitEthernet0/20
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 40
Switch(config-if)# spanning-tree portfast
Switch(config-if)# exit

Bước 4: Cấu Hình Trunk Port

! Cấu hình port Gi0/24 làm trunk (kết nối đến router hoặc switch khác)
Switch(config)# interface GigabitEthernet0/24
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20,30,40
Switch(config-if)# switchport trunk native vlan 999
Switch(config-if)# exit

⚠️ Lưu ý: Native VLAN nên đặt là VLAN không sử dụng (999) để tăng bảo mật.

Verify trunk:

Switch# show interfaces trunk

Port Mode Encapsulation Status Native vlan
Gi0/24 on 802.1q trunking 999

Port Vlans allowed on trunk
Gi0/24 10,20,30,40

Port Vlans allowed and active in management domain
Gi0/24 10,20,30,40

Bước 5: Cấu Hình Management VLAN

! Cấu hình IP cho switch trên VLAN 10
Switch(config)# interface vlan 10
Switch(config-if)# ip address 192.168.10.2 255.255.255.0
Switch(config-if)# no shutdown
Switch(config-if)# exit

! Cấu hình default gateway
Switch(config)# ip default-gateway 192.168.10.1

! Lưu cấu hình
Switch# write memory

Phần 2: Cấu Hình VLAN Trên Ubuntu Server

Bước 1: Cài Đặt VLAN Package

# Cập nhật system
sudo apt update

# Cài đặt vlan package
sudo apt install vlan -y

# Load kernel module
sudo modprobe 8021q

# Enable module at boot
echo "8021q" | sudo tee -a /etc/modules

Verify module:

lsmod | grep 8021q
# Output: 8021q 32768 0

Bước 2: Cấu Hình VLAN Interface Với Netplan

Ubuntu Server sử dụng Netplan để quản lý network. File cấu hình thường nằm tại /etc/netplan/.

# Backup cấu hình hiện tại
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.backup

# Chỉnh sửa file cấu hình
sudo nano /etc/netplan/00-installer-config.yaml

Ví dụ cấu hình VLAN:

network:
version: 2
renderer: networkd
ethernets:
# Physical interface - không cấu hình IP
ens18:
dhcp4: no
dhcp6: no

vlans:
# VLAN 10 - Management
ens18.10:
id: 10
link: ens18
addresses:
- 192.168.10.10/24
routes:
- to: default
via: 192.168.10.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search:
- example.com

# VLAN 20 - Office
ens18.20:
id: 20
link: ens18
addresses:
- 192.168.20.10/24

# VLAN 40 - Server
ens18.40:
id: 40
link: ens18
addresses:
- 192.168.40.10/24

Bước 3: Áp Dụng Cấu Hình

# Test cấu hình (không apply)
sudo netplan try

# Nếu OK, apply
sudo netplan apply

Verify interfaces:

# Xem tất cả interfaces
ip -c addr show

# Output mẫu:
# 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc...
# link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
# 3: ens18.10@ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500...
# link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
# inet 192.168.10.10/24 brd 192.168.10.255 scope global ens18.10
# 4: ens18.20@ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500...
# inet 192.168.20.10/24 brd 192.168.20.255 scope global ens18.20

Bước 4: Cấu Hình VLAN Với NetworkManager (Alternative)

Nếu sử dụng NetworkManager thay vì Netplan:

# Tạo VLAN 10 interface
sudo nmcli connection add type vlan \
con-name vlan10 \
ifname ens18.10 \
dev ens18 \
id 10 \
ip4 192.168.10.10/24 \
gw4 192.168.10.1

# Tạo VLAN 20 interface
sudo nmcli connection add type vlan \
con-name vlan20 \
ifname ens18.20 \
dev ens18 \
id 20 \
ip4 192.168.20.10/24

# Activate connections
sudo nmcli connection up vlan10
sudo nmcli connection up vlan20

# Verify
nmcli connection show

Phần 3: Inter-VLAN Routing

Để các VLAN có thể giao tiếp với nhau, cần cấu hình routing.

Option 1: Router-on-a-Stick (Cisco Router)

Router> enable
Router# configure terminal

! Cấu hình sub-interfaces
Router(config)# interface GigabitEthernet0/0
Router(config-if)# no shutdown
Router(config-if)# exit

! VLAN 10 - Management
Router(config)# interface GigabitEthernet0/0.10
Router(config-subif)# encapsulation dot1Q 10
Router(config-subif)# ip address 192.168.10.1 255.255.255.0
Router(config-subif)# exit

! VLAN 20 - Office
Router(config)# interface GigabitEthernet0/0.20
Router(config-subif)# encapsulation dot1Q 20
Router(config-subif)# ip address 192.168.20.1 255.255.255.0
Router(config-subif)# exit

! VLAN 30 - Guest
Router(config)# interface GigabitEthernet0/0.30
Router(config-subif)# encapsulation dot1Q 30
Router(config-subif)# ip address 192.168.30.1 255.255.255.0
Router(config-subif)# exit

! VLAN 40 - Server
Router(config)# interface GigabitEthernet0/0.40
Router(config-subif)# encapsulation dot1Q 40
Router(config-subif)# ip address 192.168.40.1 255.255.255.0
Router(config-subif)# exit

! Lưu cấu hình
Router# write memory

![Sơ đồ Router-on-a-Stick - Đặt ảnh tại /static/img/network/router-on-stick.png]

Option 2: Linux Router (Ubuntu)

# Enable IP forwarding
sudo sysctl -w net.ipv4.ip_forward=1

# Permanent
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

# Cài đặt iptables-persistent
sudo apt install iptables-persistent -y

# Cấu hình NAT (nếu cần Internet access)
sudo iptables -t nat -A POSTROUTING -o ens19 -j MASQUERADE

# Allow forwarding between VLANs
sudo iptables -A FORWARD -i ens18.10 -o ens18.20 -j ACCEPT
sudo iptables -A FORWARD -i ens18.20 -o ens18.10 -j ACCEPT

# Block Guest VLAN from Office
sudo iptables -A FORWARD -i ens18.30 -o ens18.20 -j DROP

# Save rules
sudo netfilter-persistent save

Testing và Troubleshooting

Test 1: Kiểm Tra VLAN Connectivity

# Từ client trong VLAN 20, ping default gateway
ping 192.168.20.1

# Ping sang VLAN khác (nếu có routing)
ping 192.168.40.10

Test 2: Verify VLAN Tagging

# Cài đặt tcpdump
sudo apt install tcpdump -y

# Capture traffic trên trunk port
sudo tcpdump -i ens18 -e -n vlan

# Output sẽ hiển thị VLAN tags:
# 12:34:56.789012 00:0c:29:xx:xx:xx > 00:0c:29:yy:yy:yy, 802.1Q, length 102: vlan 20...

Test 3: Kiểm Tra Switch Port Status

! Xem status của ports
Switch# show interfaces status

Port Name Status Vlan Duplex Speed Type
Gi0/1 Office-PC1 connected 20 a-full a-1000 10/100/1000BaseTX
Gi0/24 Trunk-to-Router connected trunk a-full a-1000 10/100/1000BaseTX

! Xem MAC address table
Switch# show mac address-table

Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
20 0050.56xx.xxxx DYNAMIC Gi0/1
20 0050.56yy.yyyy DYNAMIC Gi0/2
40 0050.56zz.zzzz DYNAMIC Gi0/20

Các Lỗi Thường Gặp

Lỗi 1: VLAN Interface Không UP

Triệu chứng:

ip link show ens18.10
# 3: ens18.10@ens18: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN

Giải pháp:

# Bật interface lên
sudo ip link set ens18.10 up

# Kiểm tra parent interface
sudo ip link set ens18 up

# Hoặc với netplan
sudo netplan apply

Lỗi 2: Native VLAN Mismatch

Triệu chứng:

  • CDP/LLDP warnings
  • Intermittent connectivity

Giải pháp:

! Đảm bảo native VLAN giống nhau trên cả 2 đầu trunk
Switch1(config)# interface gi0/24
Switch1(config-if)# switchport trunk native vlan 999

Switch2(config)# interface gi0/1
Switch2(config-if)# switchport trunk native vlan 999

Lỗi 3: Không Ping Được Giữa VLANs

Checklist:

# 1. Kiểm tra IP forwarding
cat /proc/sys/net/ipv4/ip_forward
# Phải là: 1

# 2. Kiểm tra routing table
ip route show

# 3. Kiểm tra firewall rules
sudo iptables -L -v -n

# 4. Verify gateway configuration
ip route | grep default

# 5. Test từng hop
traceroute 192.168.40.10

Lỗi 4: VLAN Tagging Không Hoạt Động

Giải pháp:

# Kiểm tra kernel module
lsmod | grep 8021q

# Nếu không có, load module
sudo modprobe 8021q

# Verify switch trunk configuration
# Đảm bảo port là trunk mode và allow VLAN

Best Practices

1. VLAN Numbering

VLAN 1:       Không sử dụng (security risk)
VLAN 2-99: User VLANs
VLAN 100-199: Server VLANs
VLAN 200-299: Management VLANs
VLAN 300-399: Voice VLANs
VLAN 999: Native VLAN (unused)

2. Security

! Disable DTP (Dynamic Trunking Protocol)
Switch(config-if)# switchport nonegotiate

! Enable BPDU Guard
Switch(config-if)# spanning-tree bpduguard enable

! Disable unused ports
Switch(config)# interface range gi0/21-23
Switch(config-if-range)# shutdown
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport access vlan 999

3. Documentation

Tạo file document VLAN:

# vlan-documentation.yml
vlans:
- id: 10
name: MANAGEMENT
subnet: 192.168.10.0/24
gateway: 192.168.10.1
description: "Network management devices"

- id: 20
name: OFFICE
subnet: 192.168.20.0/24
gateway: 192.168.20.1
description: "Office workstations and printers"

- id: 30
name: GUEST
subnet: 192.168.30.0/24
gateway: 192.168.30.1
description: "Guest WiFi and visitors"

- id: 40
name: SERVER
subnet: 192.168.40.0/24
gateway: 192.168.40.1
description: "Production servers and services"

Monitoring và Management

Script Kiểm Tra VLAN Health

#!/bin/bash
# vlan-health-check.sh

echo "=== VLAN Health Check ==="
echo ""

# Check interfaces
echo "1. VLAN Interfaces Status:"
ip -br link show type vlan

echo ""
echo "2. IP Addresses:"
ip -br addr show type vlan

echo ""
echo "3. Routing Table:"
ip route | grep -E "192.168.(10|20|30|40)"

echo ""
echo "4. ARP Table:"
ip neigh | grep -E "192.168.(10|20|30|40)"

echo ""
echo "5. Connectivity Tests:"
for vlan in 10 20 30 40; do
gateway="192.168.${vlan}.1"
echo -n "VLAN ${vlan} (${gateway}): "
ping -c 1 -W 1 $gateway &>/dev/null && echo "OK" || echo "FAIL"
done

Chạy script:

chmod +x vlan-health-check.sh
./vlan-health-check.sh

Tài Liệu Tham Khảo

Các Bước Tiếp Theo

Sau khi nắm vững VLAN, bạn có thể học:

  1. Linux Server Hardening - Bảo mật server toàn diện
  2. Ubuntu Server Setup - Cài đặt và cấu hình Ubuntu Server
  3. Monitoring với Prometheus - Giám sát hạ tầng mạng
  4. Windows Server 2022 Guide - Quản lý Windows Server

Kết Luận

VLAN là công nghệ nền tảng trong network segmentation, giúp tối ưu hiệu năng và bảo mật cho mạng doanh nghiệp. Sau bài hướng dẫn này, bạn đã có thể:

✅ Hiểu rõ khái niệm và lợi ích của VLAN
✅ Cấu hình VLAN trên Cisco Switch
✅ Thiết lập VLAN trên Ubuntu Server
✅ Triển khai inter-VLAN routing
✅ Troubleshoot các vấn đề VLAN phổ biến

Lưu ý: Luôn test cấu hình trong lab trước khi áp dụng vào production để tránh downtime.


Tags: #vlan #networking #cisco #ubuntu #802.1q #switching #routing #network-segmentation

Cập nhật lần cuối: 19/12/2025
Tác giả: BacPV Docs Team