+3

Bài 2: Thực Chiến Dựng OpenVPN Server Trên Linux Và Giải Mã File Cấu Hình

Ở bài trước, chúng ta đã hiểu "đường hầm bọc thép" OpenVPN là gì. Hôm nay chúng ta cùng nhau xắn tay áo lên và xây dựng một đường hầm của riêng mình trên con VPS Linux (Ubuntu/Debian).

Đặc biệt mình sẽ không chỉ đưa cho bạn một đoạn script chạy "vèo phát xong" rồi không hiểu gì. Chúng ta sẽ cùng mổ xẻ cấu trúc bên trong để xem một hệ thống OpenVPN thực thụ vận hành ra sao.

1. Chuẩn bị "Vũ khí"

Để thực hành bài này, bạn cần:

  • 1 con VPS Linux (Khuyên dùng Ubuntu 22.04 hoặc 24.04 cho ổn định).
  • Quyền root hoặc tài khoản có quyền sudo.
  • Mở sẵn port trên Firewall của nhà cung cấp Cloud (ví dụ: Port 1194 UDP hoặc 443 TCP).

2. Cài đặt siêu tốc bằng Script (Cách của kỹ sư thực tế)

Trong thực tế, việc tự tạo thủ công từng chứng chỉ bằng Easy-RSA mất rất nhiều thời gian và dễ sai sót. Các DevOps thường dùng các script đã được tối ưu và kiểm duyệt bởi cộng đồng. Chúng ta sẽ dùng script uy tín của Angristan hoặc Nyr.

Hãy chạy lệnh sau trên Terminal của VPS:

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
sudo ./openvpn-install.sh

Màn hình sẽ hiện ra một số câu hỏi tương tác. Bạn cần lưu ý:

  1. IP Address: Chọn IP Public của VPS.
  2. Protocol: Chọn UDP (để tối ưu tốc độ) hoặc TCP (nếu muốn bypass tường lửa nghiêm ngặt).
  3. Port: Mặc định là 1194.
  4. DNS: Chọn Google (8.8.8.8) hoặc Cloudflare (1.1.1.1).

Sau khi chạy xong, script sẽ tự động sinh ra một file client có đuôi .ovpn (ví dụ: client1.ovpn). Hãy tải file này về máy cá nhân của bạn.

3. Mổ xẻ File Cấu Hình server.conf (Nơi phép thuật gọi tên)

Script làm hết cho bạn rồi, nhưng là một kỹ sư, bạn không thể để mình "mù công nghệ" được. Hãy mở file cấu hình server tại đường dẫn /etc/openvpn/server.conf để giải mã những dòng code cốt lõi:

  • port 1194: Port mà OpenVPN Server đang mở để "lắng nghe" các kết nối từ client.
  • proto udp: Giao thức truyền tải. UDP nhanh hơn vì không mất công bắt tay (handshake) nhiều lần như TCP ở tầng vận chuyển.
  • dev tun: Định nghĩa loại card mạng ảo sẽ tạo ra (TUN hoặc TAP).

Phân biệt nhanh TUN vs TAP:

  • TUN (Network Tunnel): Hoạt động ở tầng 3 (Network Layer - IP). Nó chỉ truyền gói tin IP, nhẹ hơn, nhanh hơn, phù hợp cho việc kết nối Internet hoặc Routing thông thường. (95% trường hợp chúng ta dùng TUN).
  • TAP (Network Tap): Hoạt động ở tầng 2 (Data Link Layer - MAC). Nó mô phỏng một switch vật lý thực sự, truyền được cả các gói tin broadcast. Cực kỳ tốn băng thông nhưng cần thiết nếu bạn muốn chơi game LAN hoặc dùng các giao thức không phải IP.
  • server 10.8.0.0 255.255.255.0: Dải IP nội bộ mà Server sẽ cấp cho các máy Client khi kết nối vào. Máy server thường sẽ giữ IP đầu tiên: 10.8.0.1.
  • push "redirect-gateway def1 bypass-dhcp": Dòng lệnh cực kỳ quan trọng. Nó bắt tất cả traffic Internet của Client phải đi qua đường hầm VPN. Nếu không có dòng này, bạn chỉ kết nối được với Server chứ không dùng Server để lướt web an toàn được.

4. Giải mã File Client .ovpn

Quay trở lại file client1.ovpn bạn vừa tải về máy. Nếu mở nó bằng Notepad hoặc VS Code, bạn sẽ thấy nó chứa:

  1. Thông tin kết nối: Dòng remote X.X.X.X 1194 (Địa chỉ IP của Server và Port).
  2. Các thẻ khóa bảo mật: <ca>, <cert>, <key>, <tls-crypt>.
  • Bản chất OpenVPN nhét thẳng toàn bộ chứng chỉ mã hóa vào trong một file duy nhất này để Client chỉ cần import đúng 1 file là chạy được ngay, không cần quản lý rời rạc.
    

5. Kiểm tra thành quả

  • Trên điện thoại/Máy tính: Tải app OpenVPN Connect.
  • Import file .ovpn vào app và ấn Connect.
  • Nếu dòng trạng thái chuyển sang màu xanh và có biểu tượng chiếc chìa khóa trên thanh thông báo -> Bạn đã thành công!
  • Hãy thử truy cập icanhazip.com hoặc whoer.net, bạn sẽ thấy IP mạng của mình lúc này chính là IP của con VPS Linux.

Tóm lại là...

Cài đặt OpenVPN không khó nhờ các công cụ tự động, nhưng hiểu được kiến trúc card mạng ảo (dev tun), cách push gateway và cơ chế đóng gói file cấu hình mới là chìa khóa để bạn làm chủ hệ thống, sẵn sàng cho việc troubleshoot (sửa lỗi) khi mạng chập chờn.

Bài học tiếp theo chúng ta sẽ đi vào phần nâng cao hơn một chút nhưng rất thực tế: Quản lý User (Thêm/Xóa/Thu hồi quyền truy cập) và cấu hình Routing nâng cao để chỉ cho phép truy cập một số IP nhất định.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí