Tiếp tục loạt bài về pfSense Lab, hôm nay mình quay trở lại với [Phần 5] Hướng dẫn cách cấu hình VLAN cho pfSense.
Mục Lục
I. VLAN là gì?
Trước khi đi chi tiết vào cách cấu hình VLAN trên pfSense, mình ôn lại kiến thức căn bản tí.
VLAN (Virtual Local Area Network) hay Virtual LAN, được gọi là mạng LAN ảo. VLAN là công nghệ cho phép tạo ra các mạng LAN logic độc lập trên cùng một hệ thống mạng LAN vật lý. VLAN giúp chia nhỏ hệ thống mạng nội bộ, mang lại các lợi ích sau:
- Tối ưu băng thông mạng: nhờ giảm số lượng miền quảng bá (broadcast domain)
- Tăng tính bảo mật: các VLAN không thể giao tiếp với nhau, trừ khi được cấu hình Routing trên Router.
- Tính linh hoạt cao: dễ dàng quản lý và thay đổi các thiết bị nằm trong VLAN.
Để có thể thiết lập VLAN trong mạng nội bộ, Router và Switch phải hỗ trợ tính năng VLAN trong Firmware. Tính năng này thường chỉ được trang bị trên các thiết bị mạng cao cấp dành cho doanh nghiệp (Enterprise), không có trong các thiết bị mạng cho gia đình và văn phòng nhỏ.
Trong môi trường doanh nghiệp, VLAN thường được dùng để phân chia mạng nội bộ giữa các phòng ban, chi nhánh. Còn trong gia đình, VLAN có thể được sử dụng để phân tách các thiết bị IOT (Internet of Things) ra khỏi mạng nội bộ chính trong nhà.
II. Sơ đồ thiết lập VLAN
Nhờ sự phát triển của công nghệ ảo hoá, mình có thể nghiên cứu và thực hành VLAN mà không cần phải đầu tư mua thêm thiết bị mạng cao cấp. pfSense có sẵn tính năng VLAN và Virtual Switch của Hyper-V cũng hỗ trợ VLAN, bắt tay nghiên cứu nào!
Dưới đây sơ đồ thiết lập VLAN trên pfSense của mình
Mình sẽ tạo thêm VLAN ID 10 và chuyển máy ảo Arch Linux 2 sử dụng VLAN 10 mới này.
Các bước cần làm trong Lab hôm nay:
- Tạo VLAN ID 10
- Cấu hình VLAN Interface
- Cấu hình DHCP Server cho VLAN 10
- Cấu hình VLAN ID cho máy ảo Arch Linux
- Cấu hình VLAN TRUNK cho cổng mạng Internal trên pfSense
- Kiểm tra thành quả
III. Tạo VLAN 10
Trong Web UI của pfSense, truy cập vào menu Interfaces, chọn Assigments
Chỉnh thông số VLAN:
- Parent Interface: chọn hn1 – lan
- VLAN tag: 10
- VLAN Priority: 0
- Description: VLAN 10
IV. Cấu hình VLAN Interface
Bấm vào tab Interface Assignments, bạn sẽ thấy có thêm 1 dòng Available network ports: VLAN 10 on hn1 – lan (VLAN 10)
pfSense sẽ tự động tạo 1 Network Interface mới với tên gọi OPT1. Bấm vào chữ OPT1 để thay đổi thông số
Chỉnh lại các thông số như sau và bấm Save
- Enable: Tick chọn Enable interface
- IPv4 Configuration Type: Static IPv4
- IPv4 Address: 10.0.10.1 / 24
V. Cấu hình DHCP Server cho VLAN
Tiếp tục, cần phải cấu hình DHCP Server cho VLAN Interface vừa mới tạo để các máy tính nằm trong VLAN được cấp IP tự động.
Truy cập vào dịch vụ DHCP Server nằm trong menu Services, chọn qua tab VLAN10 để cấu hình.
- Enable: Tick chọn Enable DHCP server on VLAN10 Interface
- Range: 10.0.10.101 – 10.0.10.199
- DNS: 1.1.1.1 và 1.0.0.1
Sau đó bấm Save để lưu lại.
VLAN 10 đã được tạo và cấu hình DHCP thành công.
VI. Cập nhật VLAN ID cho máy ảo
Để chuyển máy ảo Arch Linux 2, mình sẽ vào Setttings của máy ảo này, truy cập vào mục Network Adapter và đổi VLAN thành 10.
VII. Thiết lập VLAN Trunk cho pfSense
Để pfSense có thể truyền tải VLAN trong mạng nội bộ, cần phải cấu hình đổi chế độ hoạt động của Network Adapter (card mạng) kết nối vào Private Switch thành Trunk Mode.
Việc thiết lập VLAN Trunk bắt buộc phải sử dụng dòng lệnh trong PowerShell. Không thể điều chỉnh trên Hyper-V Manager được.
Bạn cần mở PowerShell (Run as Administrator) và làm theo các bước sau
1. Kiểm tra thông số VLAN
Kiểm tra thông số VLAN của các máy ảo trong mạng bằng lệnh sau
Get-VMNetworkAdapterVlan -VMName "(Tên của máy ảo)"
Code language: JavaScript (javascript)
Kết quả nhận được khi kiểm tra 3 máy ảo pfSense, Arch Linux và Arch Linux 2 như sau:
- Arch Linux: Mode Untagged (không sử dụng VLAN)
- Arch Linux: Mode Access – Vlanlist 10 (sử dụng VLAN 10)
- pfSense: Mode Untagged
2. Đổi tên Network Adapter của pfSense
Hiện tại cả hai Network Adapter của pfSense đều sử dụng tên giống nhau: “Network Adapter”. Mình cần phải đổi thành hai tên khác nhau thì mới cấu hình VLAN chính xác.
Kiểm tra tên của Network Adapter của máy ảo pfSense
Get-VMNetworkAdapterVlan -VMName "pfSense Firewall (test)"
Code language: JavaScript (javascript)
Thay đổi tên của Network Adapter thành Internal
và External
dựa theo Mac Address
Get-VMNetworkAdapter -VMName "pfSense Firewall (test)" | Where-Object MacAddress -EQ "00155D006426"| Rename-VMNetworkAdapter -NewName "Internal"
Get-VMNetworkAdapter -VMName "pfSense Firewall (test)" | Where-Object MacAddress -EQ "00155D006425"| Rename-VMNetworkAdapter -NewName "External"
Code language: JavaScript (javascript)
Kiểm tra lại xem tên Adapter đã thay đổi đúng chưa?
Get-VMNetworkAdapterVlan -VMName "pfSense Firewall (test)"
Code language: JavaScript (javascript)
3. Thiết lập VLAN Trunk Mode
Giờ mình đã có thể thay đổi VLAN Mode của Network Adapter “Internal” thành Trunk Mode với lệnh sau
Set-VMNetworkAdapterVlan -VMName "pfSense Firewall (test)" -VMNetworkAdapterName "Internal" -Trunk -NativeVlanId 0 -AllowedVlanIdList 1-4094
Code language: JavaScript (javascript)
Kiểm tra lại thông số VLAN
Get-VMNetworkAdapterVlan -VMName "pfSense Firewall (test)"
Code language: JavaScript (javascript)
pfSense đã sẵn sàng phân chia VLAN cho mạng nội bộ.
VIII. Kiểm tra VLAN
1. Trước khi thiết lập VLAN
Dưới đây là thông số DHCP Leases của pfSense trước khi thiết lập VLAN 10.
Cả hai máy ảo thuanbui-arch
và arch2
đều nằm chung mạng LAN nội bộ 10.0.0.0/24
với IP lần lượt là 10.0.0.101
và 10.0.0.102
2. Sau khi thiết lập VLAN10
Mình mở lại hai máy ảo nằm trong mạng nội bộ cua pfSense. Sau đó kiểm tra lại DHCP Lease
- Máy ảo
thuanbui-arch
có IP như cũ10.0.0.101
- Máy ảo
arch2
đã đổi qua IP mới10.0.10.101
do mình đã đổi nó qua VLAN10 mới thiết lập.
Ở bước sau mình sẽ thiết lập Firewall để VLAN10 có thể truy cập Internet và chặn kết nối giữa LAN và VLAN.
Hai máy ảo tuy cùng cắm vào chung 1 Switch nhưng thuộc 2 mạng LAN khác nhau: 10.0.0.0/24
và 10.0.10.0/24
.
Kiểm tra kết nối mạng bằng lệnh ping
- Máy ảo Arch Linux 2 trong VLAN 10 không thể Ping qua máy ảo Arch Linux nhưng ở chiều ngược lại máy ảo Arch Linux có thể ping được qua máy ảo trong VLAN10
- Máy ảo Arch Linux 2 chưa có kết nối mạng Internet trong khi máy ảo Arch Linux kết nối Internet bình thường.
IX. Thiết lập Firewall Rule cho VLAN
1. Mở truy cập Internet cho VLAN10
Để máy ảo trong VLAN10 có thể truy cập Internet, mình cần tạo 1 Firewall Rule mới như sau
- Action: Pass
- Interface: VLAN10
- Protocol: Any
- Source: VLAN10 net
- Destination: Any
Rule này sẽ cho phép VLAN10 truy cập qua LAN. Do đó mình cần tạo thêm 1 Rule để chặn kết nối VLAN10 đến LAN và kéo nó lên đầu danh sách Rule để ưu tiên
- Action: Block
- Interface: VLAN10
- Protocol: Any
- Source: VLAN10 net
- Destination: LAN net
2. Chặn kết nối từ LAN đến VLAN10
Tạo Firewall Rule tương tự như bước ở trên để chặn kết nối giữa 2 mạng nội bộ
- Action: Block
- Interface: LAN
- Protocol: Any
- Source: LAN net
- Destination: VLAN10 net
X. Tổng kết
Trong bài viết này mình đã hướng dẫn cách thiết lập 1 hệ thống VLAN đơn giản sử dụng pfSense trên nền tảng ảo hoá Hyper-V. Trong điều kiện thực tế, tuỳ theo nhu cầu sử dụng, bạn có thể thiết lập thêm nhiều VLAN (tối đa 4096 VLANs) và cấu hình Firewall Rule tương ứng.
Hẹn gặp lại ở các phần tiếp theo của pfSense Lab.