Hướng dẫn cấu hình OpenVPN trên Ubuntu

Hôm nay mình cần đến VPN để kết nối đến IP ở Việt Nam thì loay hoay mãi không tìm được cái máy chủ nào miễn phí cả. Sẵn có cái máy chủ để test phần mềm thế là mày mò ChatGPT và Google để tự cấu hình. Mình sẽ sử dụng Ubuntu 20.04 và OpenSSL để cài nhé (nhiều trang hướng dẫn dùng EasyRSA thì phương pháp cũng tương tự)

🧱 Bước 1: Cập nhật và cài đặt OpenVPN

Kiểm tra phiên bản của OpenSSL sau đó cài đặt openvpn như bên dưới, bản Ubuntu 20.04 thì đã được cài đặt sẵn nên không cần phải cài đặt thêm nữa

user@server~: openssl version
OpenSSL 1.1.1f  31 Mar 2020
user@server~: sudo apt update && sudo apt upgrade -y
user@server~: sudo apt install openvpn -y

📖 Bước 2: Cấu hình OpenVNP server

Để cấu hình OpenVPN Server thì các bạn cần tạo ra các file sau để xác thực: Certificate Authority (ca.crt, ca.key), các file chứng chỉ và khóa cho server (server.crt, server.key, server.csr), các file chứng chỉ và khóa cho client (client.crt, client.key), các file tùy chọn khác như dh.pem, ta.key

Tạo các chứng chỉ và khóa CA – lưu ý chạy lần lượt từng lệnh

user@server~: sudo mkdir -p /etc/openvpn/ssl
user@server~: cd /etc/openvpn/ssl
user@server~: openssl genpkey -algorithm RSA -out ca.key -aes256
Enter PEM pass phrase: (Nhập mật khẩu lần 1)
Verifying - Enter PEM pass phrase: (Nhập mật khẩu lần 2)
user@server~: openssl req -x509 -new -key ca.key -out ca.crt -days 3650

Sau khi chạy câu lệnh trên cần phải điền các thông tin như sau. Dưới đây là ví dụ

Quảng cáo

Ủng hộ website

Country Name (2 letter code) [AU]:VN
State or Province Name (full name) [Some-State]:Hanoi
Locality Name (eg, city) []:Dongda
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xehanoi
Organizational Unit Name (eg, section) []:rd
Common Name (e.g. server FQDN or YOUR name) []MyVPN-CA (Lưu ý trường này phải là duy nhất, các lần nhập sau cho server và client phải khác nhau)
Email Address []:xehanoi@gmail.com

Tạo các chứng chỉ và khóa cho server và client – lưu ý chạy lần lượt từng lệnh

user@server~: openssl genpkey -algorithm RSA -out server.key
user@server~: openssl req -new -key server.key -out server.csr
user@server~: openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
user@server~: openssl genpkey -algorithm RSA -out client.key
user@server~: openssl req -new -key client.key -out client.csr
user@server~: openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650
----- Kiểm tra tính hợp lệ của file client -----
user@server~: openssl verify -CAfile ca.crt client.crt
Nếu hiện thông báo client.crt: OK là thành công

Sau khi chạy các lệnh trên và nhập các thông tin cần thiết, chúng ta sẽ tạo thêm file dh.pem và file ta.key Nếu bạn dùng OpenVPN cũ sử dụng TLS 1.1 hoặc thấp hơn thì mới cần tạo file dh.pem

ta.key là một shared secret key giữa client và server.

Được dùng để:

  • Xác thực TLS handshake (trước khi dùng TLS certificate).
  • Ngăn chặn tấn công DoS, brute-force, và scanning từ internet.
  • Chỉ cho phép client nào có đúng ta.key mới có thể bắt đầu bắt tay TLS.
user@server~: openssl dhparam -out dh.pem 2048
user@server~: openvpn --genkey --secret /etc/openvpn/ta.key

Sau đó copy các file sau vào thư mục cấu hình openVPN

user@server~: sudo cp ca.crt server.crt server.key dh.pem ta.key /etc/openvpn/

Tiếp đó các bạn sẽ cấu hình openVPN bằng file server.config

user@server~: sudo nano server.conf

Nhập các tham số sau và ấn Ctrl + O để lưu lại, Ctrl + X để thoát

port 12345
proto tcp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh none
server 192.168.5.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-crypt /etc/openvpn/ta.key
persist-key
persist-tun
status /var/log/openvpn-status.log
cipher AES-256-CBC
auth SHA512
verb 3

Tiếp đó các bạn cấu hình Packet Forwarding

user@server~: sudo nano /etc/sysctl.conf
Comment dòng cũ và thêm dòng sau
net.ipv4.ip_forward=1
user@server~: sudo sysctl -p
Kiểm tra lại xem gói tin đã được forward chưa
user@server~: cat /proc/sys/net/ipv4/ip_forward
Nếu kết quả là 0 thì thực hiện lại, nếu kết quả là 1 thì đã thành công

Cấu hình tường lửa cho phép mở cổng 12345

user@server~: sudo ufw allow 1194/tcp
user@server~: sudo ufw reload
Kiểm tra lại xem cổng đã mở chưa
user@server~: sudo netstat -tulnp | grep 14005
tcp    0    0 0.0.0.0:12345     0.0.0.0:*      LISTEN     39085/openvpn 

Khởi động lại dịch vụ openVPN server

user@server~: sudo systemctl restart openvpn@server
user@server~: sudo systemctl status openvpn@server
Nếu sau lệnh này dịch vụ không báo dòng màu đỏ là thành công, ta chuyển sang bước cấu hình cho client

🎯 Cấu hình cho Client (Mình hướng dẫn cho Windows)

Tải phần mềm OpenVPN về và cài đặt, việc cài đặt các bạn tự tìm hiểu nhé, chỉ vài cái click chuột thôi.

Bạn cần tải các file sau về: client.key, client.crt, ca.crt để chung vào thư mục C:\Program Files\OpenVPN\config\

Dùng Notepad để tạo file client.ovpn và nhập các thông số sau:

client
dev tun
proto tcp
remote YOUR_SERVER_IP 12345
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
verb 3
tls-auth ta.key 1

Add Comment