Client-to-Site VPN hay còn gọi là Remote Access VPN là mô hình cho phép máy tính, laptop hoặc điện thoại của người dùng kết nối từ Internet vào hệ thống mạng nội bộ thông qua VPN.
Mô hình này rất phù hợp cho nhân viên làm việc từ xa, nhân viên IT quản trị hệ thống hoặc người dùng cần truy cập tài nguyên nội bộ như:
- File Server
- NAS
- Máy chủ ứng dụng
- Máy in
- Hệ thống ERP/CRM
- Website hoặc ứng dụng nội bộ
- Các thiết bị quản trị chỉ cho phép truy cập từ LAN
Trong bài viết này sử dụng pfSense Community Edition và OpenVPN để xây dựng mô hình VPN Client-to-Site.
1. Client-to-Site VPN là gì?
Trong mô hình Client-to-Site, pfSense đóng vai trò VPN Server, còn máy tính của người dùng đóng vai trò VPN Client.
Ví dụ:
INTERNET
│
│ UDP 1194
▼
┌──────────────────┐
│ pfSense │
│ OpenVPN Server │
│ │
│ LAN: 172.16.28.1 │
└────────┬─────────┘
│
VPN Tunnel
10.99.99.0/24
│
┌─────────┴─────────┐
│ │
Laptop A Laptop B
VPN Client VPN Client
10.99.99.x 10.99.99.x
Sau khi kết nối thành công, máy tính từ Internet sẽ trở thành một thiết bị trong mạng VPN và có thể truy cập các mạng nội bộ mà pfSense cho phép.
Ví dụ:
Laptop từ Internet
│
│ OpenVPN
▼
10.99.99.x
│
▼
pfSense
│
├── LAN 172.16.28.0/24
│
└── Server / NAS / PC nội bộ
pfSense gọi mô hình này là Remote Access VPN. Đây khác với Site-to-Site VPN, trong đó một firewall/router ở địa điểm này kết nối với firewall/router ở địa điểm khác.
2. Chuẩn bị trước khi cấu hình
Trước khi bắt đầu, cần xác định:
pfSense
Ví dụ:
LAN IP: 172.16.28.1
LAN Network: 172.16.28.0/24
VPN Network
Không nên sử dụng trùng với LAN.
Ví dụ:
VPN Tunnel: 10.99.99.0/24
pfSense sẽ sử dụng mạng này để cấp địa chỉ IP cho các VPN Client.
Public Hostname
Ví dụ:
vpn.example.com
Trong hệ thống thực tế có thể sử dụng:
vpn.congty.com
Hostname này phải trỏ về địa chỉ WAN/public IP mà người dùng từ Internet có thể kết nối tới.
3. Tạo Certificate Authority
Vào:
System → Certificates
Tạo một Certificate Authority (CA) riêng cho VPN.
Ví dụ:
Descriptive Name:
VPN-CA
CA này sẽ được sử dụng để ký các certificate cho OpenVPN Server và các VPN Client.
Việc sử dụng certificate riêng cho từng client là một thực hành tốt vì khi một thiết bị bị mất hoặc bị xâm nhập, có thể thu hồi certificate của thiết bị đó mà không ảnh hưởng đến các client khác.
4. Tạo Server Certificate
Tiếp theo tạo certificate dành cho OpenVPN Server.
Ví dụ:
Descriptive Name:
VPN-Server
Common Name:
vpn.example.com
Certificate này được sử dụng để xác thực máy chủ VPN với client.
5. Tạo OpenVPN Server bằng Wizard
Vào:
VPN → OpenVPN → Wizards
Chọn phương thức xác thực:
Local User Access
Đây là lựa chọn phù hợp nếu muốn quản lý username/password trực tiếp trên pfSense.
Với Local User Access, pfSense có thể sử dụng mô hình:
Remote Access (SSL/TLS + User Auth)
Tức là client phải vượt qua hai lớp xác thực:
- Certificate
- Username + Password
Đây cũng là chế độ mà OpenVPN Wizard sử dụng cho Local User Access.
6. Chọn Certificate Authority
Tại bước Certificate Authority, chọn CA đã tạo ở bước trước.
Ví dụ:
VPN-CA
Không nên tạo CA mới nếu đã có CA dành riêng cho hệ thống VPN.
7. Tạo Server Certificate
Chọn certificate dành cho OpenVPN Server.
Ví dụ:
VPN-Server
Nếu chưa có Server Certificate, pfSense cho phép tạo trực tiếp từ Wizard.
8. Cấu hình OpenVPN Server
Đây là phần quan trọng nhất.
General OpenVPN Server Information
Description
Đặt tên dễ nhận biết.
Ví dụ:
Company-Remote-Access
Endpoint Configuration
Protocol
Khuyến nghị:
UDP on IPv4 only
OpenVPN thường sử dụng UDP vì phù hợp với VPN và có hiệu năng tốt.
Interface
Chọn:
WAN
OpenVPN Server cần lắng nghe kết nối từ Internet.
Local Port
Sử dụng:
1194
Đây là port OpenVPN mặc định và cũng là port được sử dụng phổ biến. Tài liệu pfSense cũng sử dụng UDP/1194 trong ví dụ Remote Access.
9. Cryptographic Settings
TLS Authentication
Bật:
Enable TLS Authentication
Nếu Wizard có tùy chọn:
Generate TLS Key
hãy để pfSense tự tạo TLS key.
DH Parameters
Nếu hệ thống cho phép:
ECDH Only
hoặc sử dụng mức DH phù hợp với phiên bản pfSense/OpenVPN đang chạy.
Data Encryption Algorithms
Có thể sử dụng các thuật toán hiện đại được pfSense đề xuất, ví dụ:
AES-256-GCM
AES-128-GCM
CHACHA20-POLY1305
Không nên sử dụng các thuật toán cũ như DES hoặc các cấu hình mã hóa yếu.
Auth Digest Algorithm
Sử dụng:
SHA256
hoặc thuật toán mạnh hơn tùy phiên bản pfSense/OpenVPN.
10. Cấu hình Tunnel Network
IPv4 Tunnel Network
Đây là mạng dành riêng cho VPN Client.
Ví dụ:
10.99.99.0/24
Khi client kết nối, pfSense sẽ cấp cho client một địa chỉ thuộc mạng VPN này.
Ví dụ:
pfSense VPN:
10.99.99.1
Client 1:
10.99.99.2
Client 2:
10.99.99.3
Client 3:
10.99.99.4
Không được sử dụng cùng subnet với LAN.
Ví dụ không nên:
LAN: 172.16.28.0/24
VPN: 172.16.28.0/24
Mà nên:
LAN: 172.16.28.0/24
VPN: 10.99.99.0/24
11. IPv4 Local Network
Đây là phần quyết định mạng nội bộ nào sẽ được VPN Client truy cập.
Ví dụ LAN của công ty:
172.16.28.0/24
Nhập:
172.16.28.0/24
Sau khi kết nối VPN, máy client sẽ có route tới mạng này.
Ví dụ:
VPN Client
10.99.99.2
│
│ VPN
▼
pfSense
│
▼
172.16.28.0/24
Nếu công ty có nhiều VLAN/subnet, có thể khai báo thêm các network phù hợp sau khi hoàn thành Wizard.
12. Redirect IPv4 Gateway
Nếu chỉ muốn VPN Client truy cập mạng nội bộ, không nên bật tùy chọn:
Redirect IPv4 Gateway
Khi bật tùy chọn này, toàn bộ lưu lượng Internet của client có thể đi qua VPN.
Split Tunnel
Nếu mục tiêu chỉ là truy cập hệ thống công ty:
Internet của laptop
│
├── Internet → ISP hiện tại
│
└── Mạng công ty → VPN
Đây thường là lựa chọn phù hợp hơn.
Full Tunnel
Nếu muốn toàn bộ Internet của client đi qua công ty:
Laptop
│
▼
VPN
│
▼
pfSense
│
▼
Internet
thì mới sử dụng Redirect IPv4 Gateway.
13. Concurrent Connections
Thiết lập số lượng client tối đa.
Ví dụ:
Concurrent Connections:
20
Có thể tăng hoặc giảm tùy nhu cầu thực tế.
14. Compression
Khuyến nghị:
Disable Compression
Không nên bật compression nếu không có nhu cầu cụ thể, vì compression trong VPN có thể tạo ra các vấn đề bảo mật và không còn cần thiết trong đa số trường hợp hiện nay.
15. Inter-Client Communication
Nếu không cần các VPN Client giao tiếp trực tiếp với nhau:
Disable
Ví dụ:
Laptop A
X
Laptop B
Nhưng cả hai vẫn có thể truy cập:
pfSense
│
LAN công ty
Đây là lựa chọn phù hợp trong môi trường doanh nghiệp nếu muốn hạn chế việc các client VPN nhìn thấy nhau.
16. Client Settings
Dynamic IP
Có thể bật để client vẫn duy trì khả năng kết nối khi địa chỉ IP Internet của client thay đổi.
Topology
Khuyến nghị:
Subnet
Đây là topology phù hợp với các OpenVPN client hiện đại. Tài liệu pfSense cũng lưu ý một số client hiện đại yêu cầu hoặc hoạt động tốt với topology subnet.
17. DNS Server
Nếu muốn client VPN phân giải tên máy nội bộ, có thể cấu hình DNS Server.
Ví dụ:
DNS Server 1:
172.16.28.1
Hoặc DNS Server nội bộ của doanh nghiệp:
172.16.28.10
Ví dụ sau khi VPN kết nối:
ping fileserver
có thể phân giải thành:
172.16.28.10
thay vì phải nhớ địa chỉ IP.
18. Firewall Rules
Đây là bước rất quan trọng.
Wizard của pfSense có thể tự tạo hai nhóm rule:
WAN
Cho phép Internet kết nối tới OpenVPN Server:
Internet
│
│ UDP 1194
▼
WAN
│
▼
OpenVPN Server
OpenVPN
Cho phép traffic từ VPN Client đi vào tunnel.
Ví dụ:
10.99.99.0/24
│
▼
OpenVPN
│
▼
172.16.28.0/24
pfSense OpenVPN Wizard có tùy chọn tự động tạo các firewall rule này.
Không nên xóa các rule này khi VPN đang hoạt động, trừ khi có kế hoạch thay thế bằng rule bảo mật cụ thể.
19. Tạo User cho VPN
Sau khi tạo OpenVPN Server, vào:
System → User Manager
Tạo user mới.
Ví dụ:
Username:
user01
Password:
********
Sau đó chọn:
Create Certificate
và tạo certificate riêng cho user.
Ví dụ:
Certificate Name:
user01
Certificate Authority:
VPN-CA
Mỗi user nên có certificate riêng.
Ví dụ:
user01 → Certificate user01
user02 → Certificate user02
user03 → Certificate user03
Không nên dùng chung một certificate cho tất cả nhân viên. pfSense cũng khuyến nghị certificate riêng cho từng user hoặc thiết bị để có thể thu hồi quyền truy cập riêng lẻ khi cần.
20. Cài OpenVPN Client Export
Để không phải tự tạo file .ovpn thủ công, có thể cài package:
System → Packages → Available Packages
Tìm:
OpenVPN Client Export
Sau khi cài đặt, chức năng sẽ xuất hiện trong:
VPN → OpenVPN → Client Export
Package này có thể tạo sẵn cấu hình và certificate cho từng user.
21. Cấu hình Host Name
Tại:
VPN → OpenVPN → Client Export
điền:
Host Name:
vpn.example.com
Đây chính là hostname mà máy client sẽ sử dụng để kết nối tới VPN Server.
Ví dụ:
vpn.example.com:1194
Không nên dùng địa chỉ LAN của pfSense ở đây.
22. Export Client
Sau khi tạo user và certificate, user sẽ xuất hiện trong danh sách:
OpenVPN Clients
Ví dụ:
User Certificate
--------------------------------
user01 USER01
user02 USER02
user03 USER03
Có thể export:
- Inline Configuration
- Bundled Configuration
- Windows Installer
- Các định dạng dành cho macOS/Linux/Android/iOS tùy package và phiên bản
pfSense cung cấp nhiều dạng export để phù hợp với từng nền tảng.
23. Windows Client
Đối với Windows, có thể sử dụng:
Current Windows Installer
Đây là lựa chọn nên ưu tiên cho các máy Windows hiện đại.
File export có thể chứa cả:
OpenVPN Client
+
VPN Configuration
+
CA Certificate
+
Client Certificate
+
Client Key
giúp việc triển khai cho người dùng đơn giản hơn.
24. macOS Client
Trên macOS có thể sử dụng các OpenVPN client tương thích, ví dụ Tunnelblick hoặc OpenVPN Connect.
Với Tunnelblick, có thể sử dụng file cấu hình được export từ pfSense.
Tài liệu pfSense cho biết định dạng Inline Configuration phù hợp với Tunnelblick trên macOS.
25. Kiểm tra VPN
Sau khi cài client, nhập:
Username:
user01
Password:
********
Nếu cấu hình chính xác, VPN Client sẽ nhận một IP trong mạng:
10.99.99.0/24
Ví dụ:
10.99.99.2
Sau đó kiểm tra:
ping 10.99.99.1
Nếu thành công, kiểm tra tiếp máy trong LAN:
ping 172.16.28.10
Nếu ping thành công:
VPN Client
10.99.99.2
│
▼
pfSense
10.99.99.1
│
▼
Server
172.16.28.10
VPN Client đã truy cập được mạng nội bộ.
26. Kiểm tra khi VPN kết nối nhưng không Ping được
Đây là lỗi khá phổ biến.
Nếu Tunnelblick/OpenVPN báo:
Connected
nhưng không ping được server nội bộ, không nên kết luận ngay rằng VPN bị lỗi.
Kiểm tra lần lượt:
1. Kiểm tra IP VPN
Client phải nhận IP thuộc:
10.99.99.0/24
2. Kiểm tra OpenVPN Firewall Rule
Vào:
Firewall → Rules → OpenVPN
Kiểm tra rule cho phép traffic từ VPN Client.
3. Kiểm tra LAN Firewall Rule
Nếu mạng nội bộ có firewall riêng, phải cho phép:
Source:
10.99.99.0/24
Destination:
172.16.28.0/24
4. Kiểm tra routing
Máy chủ nội bộ phải biết đường quay về:
10.99.99.0/24
Nếu gateway của server là pfSense thì thường việc này đơn giản hơn.
27. Không nhầm Client-to-Site với Site-to-Site
Hai mô hình này rất dễ bị nhầm.
Client-to-Site
Internet
│
▼
pfSense VPN
│
▼
LAN Công ty
▲
│
Laptop
VPN Client
Một người dùng hoặc một thiết bị kết nối vào công ty.
Site-to-Site
INTERNET
│
┌─────┴─────┐
▼ ▼
pfSense A pfSense B
│ │
LAN A LAN B
Hai hệ thống mạng kết nối với nhau.
Ví dụ:
CTY2
192.168.1.0/24
│
│ VPN
│
HLA
192.168.28.0/24
Trong mô hình Site-to-Site, một firewall có thể làm OpenVPN Server, firewall còn lại làm OpenVPN Client. pfSense cũng phân biệt rõ hai vai trò này trong tài liệu OpenVPN.
28. Mô hình triển khai thực tế khuyến nghị
Đối với doanh nghiệp, có thể triển khai:
INTERNET
│
│ UDP 1194
▼
┌───────────────┐
│ pfSense │
│ OpenVPN Server│
└───────┬───────┘
│
10.99.99.0/24
│
┌─────────────┼─────────────┐
│ │ │
User 01 User 02 User 03
Laptop Laptop Laptop
│ │ │
└─────────────┼─────────────┘
│
LAN COMPANY
172.16.28.0/24
│
┌─────────────┼──────────────┐
│ │ │
File Server NAS Application
Mỗi user có:
Username riêng
Password riêng
Certificate riêng
Khi nhân viên nghỉ việc, chỉ cần disable user hoặc revoke certificate của user đó mà không ảnh hưởng đến những người còn lại.
29. Một số lưu ý bảo mật
Không dùng chung tài khoản VPN
Không nên:
VPN User:
companyvpn
Dùng chung cho 20 người
Nên:
user01
user02
user03
...
Không dùng chung certificate
Mỗi user nên có certificate riêng.
Chỉ mở những mạng cần thiết
Nếu người dùng chỉ cần truy cập:
172.16.28.0/24
không nhất thiết phải cho phép truy cập toàn bộ các VLAN khác.
Không mở pfSense WebGUI trực tiếp ra Internet nếu không cần
Quản trị pfSense thông qua VPN thường an toàn hơn việc mở giao diện quản trị trực tiếp ra Internet. Netgate cũng khuyến nghị sử dụng VPN như một phương thức an toàn để quản trị firewall từ xa.
Backup cấu hình pfSense
Sau khi VPN hoạt động ổn định, nên backup configuration của pfSense để có thể phục hồi khi cần.
30. Kết luận
OpenVPN Client-to-Site trên pfSense là một giải pháp phù hợp để cung cấp quyền truy cập mạng nội bộ cho nhân viên từ xa.
Một cấu hình chuẩn nên có:
OpenVPN Server
│
├── CA riêng
│
├── Server Certificate
│
├── User Authentication
│
├── User Certificate riêng
│
├── VPN Tunnel Network
│
├── Firewall Rule
│
└── Client Export
Mô hình SSL/TLS + Username/Password + Certificate riêng cho từng user cung cấp nhiều lớp bảo vệ và thuận tiện cho việc quản lý, thu hồi quyền truy cập. pfSense hiện cũng xem Remote Access (SSL/TLS + User Auth) là lựa chọn bảo mật cao nhất trong các chế độ Remote Access được liệt kê.
Tài liệu tham khảo
- pfSense – OpenVPN Remote Access Configuration Example
- pfSense – OpenVPN Client Export Package
- pfSense – OpenVPN Documentation
- pfSense – Adding OpenVPN Remote Access Users
Gợi ý tiêu đề SEO cho nhanthang.com:
Hướng dẫn cấu hình VPN Client-to-Site trên pfSense bằng OpenVPN từ A-Z
Meta description:
Hướng dẫn cấu hình VPN Client-to-Site trên pfSense bằng OpenVPN: tạo CA, Server Certificate, User Certificate, Firewall Rule, Client Export và kết nối Windows/macOS từ xa vào mạng nội bộ doanh nghiệp.