series OpenVPN Bài 3: Quản Lý Người Dùng Và Nghệ Thuật Định Tuyến (Split Tunneling)
Ở bài trước, chúng ta đã dựng thành công một "đường hầm" OpenVPN và kết nối thành công với một Client đầu tiên. Tuy nhiên, trong môi trường thực tế—ví dụ như khi bạn cần cấp quyền truy cập cho một đội ngũ dev hoặc vận hành hệ thống—bạn không thể dùng chung một file .ovpn cho tất cả mọi người. Nếu ai đó nghỉ việc, chả lẽ bạn lại đổi cấu hình của cả Server?
Bài viết hôm nay sẽ giúp bạn làm chủ hai kỹ năng tối quan trọng: Quản lý User (Thêm/Xóa quyền) và Cấu hình Định tuyến (Routing) để tối ưu hóa băng thông.
1. Quản lý User: Nguyên tắc "Mỗi người một lối đi"
Trong kiến trúc bảo mật của OpenVPN (sử dụng hạ tầng khóa công khai PKI), mỗi Client kết nối vào hệ thống bắt buộc phải sở hữu một cặp Private Key và Certificate (Chứng chỉ) riêng biệt.
Thêm một User mới Nếu bạn sử dụng bộ script từ bài học số 2, việc thêm User cực kỳ đơn giản. Bạn chỉ cần chạy lại file script:
sudo ./openvpn-install.sh
Hệ thống sẽ nhận diện OpenVPN đã được cài đặt và đưa ra menu lựa chọn. Bạn chọn option Add a new user, nhập tên (ví dụ: dev_hieu) và script sẽ tự động dùng Easy-RSA để ký một chứng chỉ mới, xuất ra file dev_hieu.ovpn.
Thu hồi quyền truy cập (Revocation) – Khi nhân sự rời dự án
Đây mới là chỗ các Admin hay quên. Khi một ai đó không còn quyền truy cập mạng nội bộ, bạn phải "khai tử" chứng chỉ của họ ngay lập tức.
- Khi chạy script và chọn option
Revoke an existing user, OpenVPN sẽ đưa tên User đó vào một danh sách đen gọi là CRL (Certificate Revocation List). - Bản chất là Server sẽ cập nhật file
crl.pem. Mỗi khi có Client kết nối, OpenVPN Server sẽ check xem chứng chỉ của Client có nằm trong file "sổ bìa đen" này không. Nếu có, kết nối sẽ bị từ chối ngay lập tức mà không cần phải restart lại Server.
2. Nghệ thuật định tuyến: Full Tunneling vs Split Tunneling
Trong file cấu hình ở Bài 2, chúng ta có dòng lệnh:
push "redirect-gateway def1 bypass-dhcp"
Dòng này kích hoạt cơ chế Full Tunneling. Nghĩa là khi Client bật VPN lên, tất cả mọi traffic (từ việc vào server nội bộ cho đến xem YouTube, lướt Facebook) đều bị ép phải đi qua con VPS OpenVPN rồi mới đi ra Internet.
Vấn đề là gì?
- Nghẽn băng thông: VPS của bạn sẽ phải gánh toàn bộ traffic giải trí của User, gây chậm hệ thống một cách lãng phí.
- Trải nghiệm kém: User sẽ phàn nàn vì mạng của họ bị chậm đi khi bật VPN (do phải đi đường vòng qua VPS).
Để giải quyết, chúng ta sử dụng Split Tunneling (Chia tách đường hầm). Ý tưởng rất đơn giản: Chỉ những traffic nào đi tới dải mạng nội bộ của công ty thì mới đi qua VPN, còn lại traffic lướt web, xem video thì vẫn đi bằng mạng nhà của User như bình thường.
Cách cấu hình Split Tunneling cực nhanh:
Bước 1: Mở file cấu hình server /etc/openvpn/server.conf.
Bước 2: Tìm và Comment (vô hiệu hóa) dòng redirect-gateway:
# push "redirect-gateway def1 bypass-dhcp"
Bước 3: Thêm dòng định tuyến cụ thể dải mạng bạn muốn bảo mật. Ví dụ, nếu bạn chỉ muốn User đi qua VPN khi họ truy cập vào dải IP nội bộ của hệ thống (ví dụ: 192.168.1.0/24 hoặc mạng nội bộ của Cloud):
push "route 192.168.1.0 255.255.255.0"
Bước 4: Khởi động lại dịch vụ OpenVPN để áp dụng thay đổi:
sudo systemctl restart openvpn-server@server
Bây giờ, hãy thử ngắt kết nối và kết nối lại trên máy Client. Bạn sẽ thấy một điều kỳ diệu: Kiểm tra IP trên trang whoer.net thì vẫn là IP mạng nhà mạng của bạn, nhưng bạn vẫn kết nối mượt mà vào các IP nội bộ 192.168.1.x của hệ thống.
Tóm lại là...
Quản lý User bằng cơ chế thu hồi chứng chỉ (CRL) giúp hệ thống của bạn luôn an toàn trước các biến động nhân sự. Trong khi đó, việc làm chủ tư duy Split Tunneling giúp bạn tiết kiệm hàng tá băng thông cho Server và đem lại trải nghiệm "bật VPN như không bật" cho người dùng cuối.
Bài học tiếp theo chúng ta sẽ tiến tới một cấp độ tối cao về bảo mật và giám sát: Cấu hình Multi-Factor Authentication (MFA) với Google Authenticator cho OpenVPN và cách đọc hiểu Log để truy vết sự cố kết nối.
All rights reserved