Hướng dẫn cấu hình VPN Client-to-Site trên pfSense bằng OpenVPN

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 EditionOpenVPN để xây dựng mô hình VPN Client-to-Site.

https://images.openai.com/static-rsc-4/s5007bnzJ_f8jrHWpNuiowh2ddQhwFtL8h-ZNbqt7vdMxX0GFI7WqbzAfyrDAMxKWVbdFmS1O1-bJ0fGzQ0Z3k8L4cv1VbPgiFhDITweuO7Tu236MdzzFdKlEtBiMymu8g4lypPJrZVO4Ov6tNnIq1LSoB7rNER9161GRFHHVBK4iebLrVxUl4P-uoNYiRLP?purpose=fullsize
https://images.openai.com/static-rsc-4/Vx8UFe-M6JVCNNVFLc0cgq43-Jkj3I_gFQbihGPubZQa-1I5gHMvG9B81HGnZs_0VIEA92Kn0Y7RNKmOgdeYtlgH6qpGQUaLD-sM-rM6E86EO9YqdlQaLgMj8l115tF3nIZ8jr1sMqmuGRC67KhhDtP3Rd4TordM-TQWjpnwty3o8arPmeil9BFDJlIZ03-j?purpose=fullsize
https://images.openai.com/static-rsc-4/G68-LN1SZxRHqG6iTC_-EdO2bLyta2rg0_vkc5Nd5odgb2NU2X0cUAi_eaHduVgBlpHVDt9BFGN2iyZU3RYlEcn-6VOMytVkBbKQ3yJJqz3ryFuWO5t-cUbXc5U1qtNnTqsK3Dmo9wCWfMtXv0FpdlqQbY7N-f_fVoGy1ilfsWpuD78uqkRl2AldBpDFv4vt?purpose=fullsize

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:

  1. Certificate
  2. 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

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.

💬 Liên hệ với Phú Trần
Zalo