Chuyên mục
Network

pfSense Lab – [Phần 5] Cấu hình VLAN cho pfSense

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.

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

Bấm chọn tab VLANs, sau đó bấm Add để tạo VLAN mới

Chỉnh thông số VLAN:

  • Parent Interface: chọn hn1 – lan
  • VLAN tag: 10
  • VLAN Priority: 0
  • Description: VLAN 10
Bấm Save để lưu lại
VLAN tag 10 đã tạo thành công.

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)

Bấm vào nút Add bên cạnh VLAN 10 để tạo VLAN Interface

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ố

Bấm vào OPT1

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
Thiết lập thông số cho VLAN 10
Bấm Apply Changes để kích hoạt VLAN 10.

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.

Cấu hình DHCP Server cho VLAN 10

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.

Đổi VLAN ID cho máy ảo và bấm OK để lưu lại.

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)"

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)"

Thay đổi tên của Network Adapter thành InternalExternal 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"

Kiểm tra lại xem tên Adapter đã thay đổi đúng chưa?

Get-VMNetworkAdapterVlan -VMName "pfSense Firewall (test)"
2 Network Adapter đã đổi tên thành External và Internal

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

Kiểm tra lại thông số VLAN

Get-VMNetworkAdapterVlan -VMName "pfSense Firewall (test)"
Thiết lập Trunk Mode thành công cho Internal Adapter

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-archarch2 đề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.10110.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ới 10.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/2410.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
Firewal Rule cho VLAN10
Máy ảo Arch Linux 2 có thể Ping ra Internet, nhưng không thể Ping qua máy ảo Arch Linux trong mạng LAN

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
Tạo thêm Firewall Rule chặn kết nối đến VLAN10
Kiểm tra lại trên máy ảo Arch Linux: không thể ping đến VLAN10

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.

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại gửi tặng mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Trả lời