Pritunl VPN – Phần 1 – Hướng dẫn triển khai VPN bằng Pritunl trên Ubuntu 18.04

Pritunl là phần mềm được sử dụng để ảo hóa VPN server trên hạ tầng các trung tâm dữ liệu. Đồng thời cung cấp phương thức truy cập từ xa đơn giản trong vòng vài phút. Pritunl có bản miễn phí và bản trả phí. Trong các bài viết về Pritunl, mình sẽ làm về Pritunl bản miễn phí.

Trang chủ Pritunl: https://pritunl.com

Trong bài viết đầu tiên này, mình sẽ hướng dẫn cách cài đặt và cấu hình cho mô hình cơ bản của Pritunl trên Ubuntu 18.04 Server LTS.

I. Mô hình và phân hoạch IP

Khi sử dụng một hệ thống nhiều máy chủ hoặc máy ảo, người dùng có thể xây dựng 1 hệ thống LAN private giữa các máy với nhau. Người dùng có thể sử dụng Pritunl Server làm VPN server để các Client kết nối tới, sau đó kết nối với các máy trong mạng LAN.

Mục tiêu theo mô hình lab: Từ Client ping được tới VM-Local

Mô hình cài đặt:

IP planning:

II. Cài đặt, thiết lập OS

2.1. Pritunl Server:

  • Cài đặt OS Ubuntu server 18.04 LTS
  • Set hostname
  • Đặt IP tĩnh theo IP plannning. Mặc định thì Ubuntu 18 sẽ sử dụng Netplan để cấu hình IP. Tuy nhiên, trong bài viết này, mình sử dụng ifupdown để cấu hình IP cho Pritunl server.

Xem thêm: Cách sử dụng ifupdown thay thế cho netplan trên Ubuntu

Update OS:

apt update -y
apt upgrade -y

Disable Firewall:

ufw disable

2.2. VM-Local

  • Cài đặt OS Linux bất kỳ. Ở đây, mình cài CentOS-7
  • Disable Firewalld, Selinux
  • Set IP tĩnh theo IP planning

III. Cài đặt và cấu hình Pritunl server

3.1. Cài đặt Pritunl

Pritunl yêu cầu MongoDB để lưu trữ dữ liệu. Vì vậy, ngoài việc cài đặt Pritunl thì ta cần cài đặt cả MongoDB.

Thêm repo Pritunl, MongoDB và add keys:

sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list << EOF
deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse
EOF

sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb http://repo.pritunl.com/stable/apt bionic main
EOF

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv E162F504A20CDF15827F718D4B7C549A058F8B6B
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A


sudo apt-get update

Cài đặt Pritunl và MongoDB:

sudo apt-get --assume-yes install pritunl mongodb-server
sudo systemctl start pritunl mongodb
sudo systemctl enable pritunl mongodb

3.2. Cấu hình Pritunl

3.2.1. Khởi tạo cấu hình ban đầu

Sau khi Pritunl server đã running. Ta cần cấu hình nó trước khi có thể sử dụng nó.Sinh Setup-key:

sudo pritunl setup-key

Key nhận được sẽ tương tự như sau:

e08df132190f496887f65a104c2f707e

Truy cập bằng trình duyệt tới địa chỉ IP public của Pritunl server. Nhập key vừa nhận được vào ô Enter setup key, sau đó click chọn Save

Đợi quá trình setup xong, truy cập lại ta sẽ có giao diện dưới đây:

Dưới server, chạy lệnh sudo pritunl default-password để sinh user và password mặc định:

sudo pritunl default-password

[undefined][2021-04-05 00:01:04,012][INFO] Getting default administrator password
Administrator default password:
  username: "pritunl"
  password: "QqviVHN1gjD7"

Sử dụng thông tin vừa sinh dưới server truy cập trên giao diện web:

Sau khi đăng nhập lần đầu, hệ thống sẽ yêu cầu nhập các thông số khởi tạo. Sau đó, click Save

Ta quan tâm đến các thông số sau:
Username: username đăng nhập web của Pritunl. Ở đây, ta sẽ để mặc định là pritunl
Newpassword: Nhập password mới cho user
Public Address: IPpublic v4 của Pritunl Server
Let’s Encrypt Domain: Nhập domain trỏ tới IPpublic của Pritunl server. (Có thể nhập hoặc không. Khuyến khích nên trỏ). Ở đây, mình có sử dụng tên miền vpn.hocchudong.xyz

Đợi quá trình cài đặt hoàn thành, truy cập lại bằng tên miền vpn.hocchudong.xyz

3.2.2. Tạo Organization và User

Trên giao diện web của Pritunl, chọn Users -> Add Organization

Đặt tên cho Organization. Trong bài này, mình sẽ đặt là VPN-hocchudong -> Click chọn Add

Sau khi tạo xong Organization, tiến hành tạo User bằng cách click chọn Add User

Nhập thông tin user -> click Add

  • Name: Tên đăng nhập cho user
  • Select an organization: Chọn Organization cho user. Ở đây, ta chỉ tạo 1 Organization nên ta chọn là VPN-hocchudong
  • Email (optional): Nhập email cho user. Có thể nhập hoặc không
  • PIN: Mã PIN của user dùng để truy cập VPN. Mã PIN chỉ có thể là các ký tự số

Sau khi tạo, ta sẽ thấy user vừa tạo ở trạng thái offline.

3.2.3. Tạo VPN server

Chọn Server -> Add Server

Mặc định, 1 cổng UDP ngẫu nhiên và 1 dải mạng private sẽ được chọn để cấp cho Client. Ta có thể đổi port và dải mạng này. Tuy nhiên, cần phải lưu ý chọn port chưa sử dụng và dải mạng cần chọn đủ lớn để đủ cho nhu cầu số lượng client và tránh bị hiện tượng trùng các dải mạng khác.

  • Name: Tên của VPN server. Ở đây, mình để là hcd-server
  • DNS Server: mặc định sẽ là DNS của Google (8.8.8.8). Ta có thể đổi nếu cần
  • Virtual Network: Dải mạng dùng để cấp IP cho Client kết nối tới


Sau khi khởi tạo VPN Server thành công. Ta chọn Attach Organization

Ở đây chỉ có 1 Organization và 1 VPN server nên click chọn Attach:

3.2.4. Cấu hình Route

Để client có thể kết nối tới dải mạng local của hệ thống, ta cần cấu hình route.

Mặc định, sau khi khởi tạo server, Pritunl sẽ tạo 1 route tới 0.0.0.0/0. Ta sẽ remove route này để cấu hình theo nhu cầu của mình.

Chọn Remove route 0.0.0.0/0

Chọn Remove để xác nhận:

Trên giao diện, click chọn Add Route:

Nhập dải mạng local của hệ thống để Client có thể truy cập tới. Ở đây là dải 172.16.70.0/24, chọn đúng server. -> click Attach

Chọn Attack Organization:

Chọn đúng Organization và server. Trong bài viết này, ta chỉ có 1 Organization và 1 server VPN nên hệ thống sẽ chọn mặc định. Sau đó, click chọn Attach

3.2.5. Start Pritunl Server

Click chọn Start Server để khởi chạy:

Sau khi start, ta sẽ thấy log của server hiện trên giao diện cũng như trạng thái, uptime, số user online, số device connect, ….

3.3. Tạo nhiều user

Để tạo nhiều user cùng 1 lúc, ta truy cập phần User -> chọn Bulk Add Users

Tạo hàng loạt user theo cấu trúc. Mỗi user trên 1 dòng:

<username>,<email user>

Tuy nhiên, cách này thì mã PIN sẽ cần set lại cho từng user mới.

Trong các bài viết sau, mình sẽ hướng dẫn cách kết nối VPN trên 3 hệ điều hành thông dụng là Windows, Linux, MacOS. Vì vậy, mình tạo sẵn 3 user tương ứng như dưới đây. Dán đoạn sau tạo ô nhập text để tạo 3 user:

hcd-win,[email protected]
hcd-linux,[email protected]
hcd-macos,[email protected]

Chọn đúng Organization. Trong bài viết này là VPN-hocchudong -> click chọn Add

Kết quả, ta sẽ thấy 3 user được tạo:

Set mã PIN cho từng user. Click chọn user:

Nhập mã PIN cho user. Sau đó, click Save

Thực hiện tương tự với các user còn lại.

3.4. Cấp tài khoản cũng như Profile cho người dùng

Khi cần cấp VPN cho 1 người dùng, người quản trị cần gửi các thông tin sau cho người dùng để cài đặt và cấu hình:

  • Thông tin tài khoản: username, mã PIN
  • Profile (File cấu hình VPN): có thể là link tải hoặc file cấu hình.

Để gửi link tải Profile của Client, người quản trị truy cập giao diện quản lý Pritunl server, chọn User -> Chọn biểu tượng Get temporary profile links của đúng user cần cấp:

Copy đường link tải file Profile (file cấu hình) – dòng thứ 2 hoặc tải về rồi gửi file cấu hình cho người dùng:

Gửi thông tin tài khoản cho người dùng. Ở đây là:

  • username: hcd-user
  • Password: ************

3.5. Cấu hình xử lý lỗi DNS trên iOS:

Nếu hệ thống VPN bạn cài đặt cho phép người dùng truy cập từ các thiết bị di động như Smart phone, Máy tính bảng, … thì bạn cần chú ý đến phần này.

Trên Client là hệ điều hành iOS (trên iPhone), sau khi kết nối tới Pritunl Server sẽ có hiện tượng không thể truy cập đến các trang web bằng tên miền do lỗi không phân giải được tên miền.

Lỗi không thể truy cập trang web bằng tên miền sau khi kết nối tới Pritunl Server

Để xử lý lỗi này, ta cần add thêm route tới DNS server. Ở đây, mình sẽ add thêm Route tới DNS của Google 8.8.8.8/32 như dưới đây:

Lưu ý: Cần tắt VPN server trước khi cấu hình.

Sau đó, thực hiện bật lại VPN server:

Trên đây là cách triển khai VPN bằng Pritunl trên Ubuntu 18.04.

Để kết nối từ Client tới VPN server, mời các bạn hãy cùng theo dõi tiếp các bài về Pritunl của mình.

  1. Hướng dẫn cài đặt Pritunl client trên Linux
  2. Hướng dẫn cài đặt Pritunl client trên Windows
  3. Hướng dẫn cài đặt Pritunl client trên MacOS
  4. Hướng dẫn kết nối tới Pritunl VPN trên iOS

Rất mong những đóng góp ý kiến từ mọi người.

Trân trọng cảm ơn.