Việc bảo vệ dữ liệu và thông tin cá nhân trở nên ngày càng quan trọng. Khi chúng ta kết nối vào các mạng không an toàn, chẳng hạn như mạng công cộng tại quán cà phê, sân bay, hoặc khách sạn, có nguy cơ thông tin của chúng ta có thể bị đánh cắp hoặc theo dõi. Để giải quyết vấn đề này, IPsec VPN (Virtual Private Network) ra đời, giúp mã hóa lưu lượng mạng và bảo vệ thông tin của bạn khi dữ liệu di chuyển qua Internet.
Trong bài viết này, mình sẽ hướng dẫn bạn cách triển khai một máy chủ IPsec VPN sử dụng Docker trên máy chủ Linux của bạn. Chúng ta sẽ sử dụng hình ảnh Docker hwdsl2/ipsec-vpn-server
, một giải pháp nhẹ và linh hoạt cho việc tạo máy chủ VPN riêng tư. Bạn sẽ được hướng dẫn cách cài đặt và cấu hình VPN, bao gồm tạo tài khoản VPN, bảo vệ dữ liệu và các thao tác triển khai cần thiết.
IPsec VPN giúp mã hóa lưu lượng mạng của bạn hạn chế bị tấn công dữ liệu khi dữ liệu di chuyển qua Internet. Điều này đặc biệt hữu ích khi sử dụng các mạng không an toàn, ví dụ như tại các quán cà phê, sân bay hoặc phòng khách sạn.
Đầu tiên hãy cài đặt Docker trên máy chủ Linux của bạn, với hệ điều hành Ubuntu bạn có thể tham khảo 3 link dưới.
- https://wiki.hoanghd.com/cai-dat-docker-compose-tren-ubuntu/
- https://wiki.hoanghd.com/cai-dat-docker-tren-ubuntu/
- https://wiki.hoanghd.com/bash-script-tu-dong-cai-dat-docker-va-docker-compose-cho-he-dieu-hanh-ubuntu/
Trước khi sử dụng IPsec/L2TP, bạn có thể cần khởi động lại Docker một lần với docker restart ipsec-vpn-server.
Lưu ý:
Image này không hỗ trợ Docker cho Windows.
Có 2 Image như thông tin bảng dưới. Image dựa trên Alpine mặc định chỉ có ~ 17MB.
Alpine | Debian | |
---|---|---|
Image | hwdsl2/ipsec-vpn-server | hwdsl2/ipsec-vpn-server:debian |
Kích thước | ~ 17 MB | ~ 62 MB |
Image gốc | Alpine Linux 3.16 | Debian Linux 11 |
Nền tảng | amd64, arm64, arm / v7 | amd64, arm64, arm / v7 |
Phiên bản Libreswan | 4,7 | 4,7 |
IPsec / L2TP | ✅ | ✅ |
Cisco IPsec | ✅ | ✅ |
IKEv2 | ✅ | ✅ |
Lưu ý: Để sử dụng hình ảnh dựa trên Debian, hãy thay thế hwdsl2/ipsec-vpn-server
bằng hwdsl2/ipsec-vpn-server:debian
.
2. Triển khai.
Tạo các biến môi trường, đầu tiên bạn hãy tạo thư mục chứa file biến môi trường, nơi đây sẽ lưu các thông tin cơ bản của VPN.
mkdir /home/vpn/
Hãy tạo file vpn.env với nội dung như dưới, bạn hãy thay thế thông tin của bạn vào nhé
$ echo """VPN_IPSEC_PSK=mb@834228
VPN_USER=hoanghd
VPN_PASSWORD=mb@834228
# VPN_ADDL_USERS=additional_username_1 additional_username_2
# VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2
# VPN_DNS_NAME=8.8.8.8
VPN_DNS_SRV1=8.8.8.8
VPN_DNS_SRV2=8.8.4.4
# VPN_PROTECT_CONFIG=yes
""" > /home/vpn/vpn.env
Thao tác này sẽ tạo tài khoả đăng nhập VPN, 1 tài khoản này có thể được sử dụng bởi nhiều thiết bị của bạn.
Người dùng VPN bổ sung được hỗ trợ và có thể được tùy chọn khai báo trong vpn.env của bạn như dưới. Tên người dùng và mật khẩu phải được phân tách bằng dấu cách và tên người dùng không được trùng lặp. Tất cả người dùng VPN sẽ chia sẻ cùng một IPsec PSK.
VPN_ADDL_USERS=additional_username_1 additional_username_2
VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2
Lưu ý: Trong vpn.env bạn không đặt ""
hoặc ''
xung quanh các giá trị hoặc thêm khoảng trống xung quanh =
. và không sử dụng các ký tự đặc biệt này trong các giá trị \ " '
:. Một PSK IPsec an toàn phải bao gồm ít nhất 20 ký tự ngẫu nhiên.
Người dùng nâng cao có thể tùy chọn chỉ định tên DNS cho địa chỉ máy chủ IKEv2. Tên DNS phải là một tên miền đủ điều kiện (FQDN). Thí dụ
VPN_DNS_NAME=vpn.example.com
Theo mặc định, các ứng dụng khách được đặt để sử dụng Google Public DNS khi VPN hoạt động. Bạn có thể chỉ định (các) máy chủ DNS tùy chỉnh cho tất cả các chế độ VPN. Thí dụ:
VPN_DNS_SRV1=8.8.8.8
VPN_DNS_SRV2=8.8.4.4
Theo mặc định, không cần mật khẩu khi nhập cấu hình máy khách IKEv2. Bạn có thể chọn bảo vệ các file cấu hình máy khách bằng mật khẩu ngẫu nhiên.
VPN_PROTECT_CONFIG=yes
Trong lệnh này, chúng ta sử dụng -v tùy chọn docker run tạo một ổ đĩa Docker mới có tên ikev2-vpn-data và gắn nó vào /etc/ipsec.d. Dữ liệu liên quan đến IKEv2 như chứng chỉ và khóa sẽ vẫn tồn tại trong ổ đĩa và sau này khi bạn cần tạo lại vùng chứa Docker, chỉ cần chỉ định lại cùng một ổ đĩa.
Bạn nên bật IKEv2 khi sử dụng hình ảnh này. Tuy nhiên, nếu bạn không muốn bật IKEv2 và chỉ sử dụng chế độ IPsec/L2TP và IPsec/XAuth (“Cisco IPsec”) để kết nối với VPN, hãy xóa -v tùy chọn đầu tiên khỏi docker run lệnh trên.
docker run --name ipsec-vpn-server \
--env-file /home/vpn/vpn.env \
--restart=always \
# -v ikev2-vpn-data:/etc/ipsec.d \
-v /lib/modules:/lib/modules:ro \
-p 500:500/udp \
-p 4500:4500/udp \
-d --privileged \
hwdsl2/ipsec-vpn-server
Sau khi docker run xong, ta chạy docker logs để nhận thông tin kết nối VPN
$ docker logs ipsec-vpn-server
================================================
IPsec VPN server is now ready for use!
Connect to your new VPN with these details:
Server IP: 103.138.89.236
IPsec PSK: mb@834228
Username: hoanghd
Password: mb@834228
Write these down. You'll need them to connect!
VPN client setup: https://vpnsetup.net/clients2
================================================
Sau khi bạn đã thực hiện các bước trong hướng dẫn này, máy chủ IPsec VPN của bạn sẽ được triển khai và sẵn sàng để sử dụng. Bạn sẽ có một máy chủ VPN riêng tư cho phép bạn truy cập Internet một cách an toàn và bảo mật, đặc biệt khi bạn sử dụng các mạng không an toàn như mạng công cộng tại các quán cà phê, sân bay hoặc khách sạn.
Hãy nhớ lưu giữ thông tin quan trọng như IPsec PSK, tên người dùng và mật khẩu, vì chúng sẽ được sử dụng để kết nối vào VPN. Nếu bạn muốn tạo thêm người dùng VPN, bạn có thể thực hiện thêm bước tạo tài khoản trong tệp vpn.env của bạn.
Bằng cách triển khai máy chủ IPsec VPN riêng tư này, bạn đã đảm bảo tính riêng tư và bảo mật của dữ liệu của mình khi truy cập Internet từ bất kỳ đâu. Đây là một công cụ mạnh mẽ để bảo vệ thông tin cá nhân của bạn và tránh các nguy cơ mạng không mong muốn.