NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
12/05/2023
Lượt xem

Hướng dẫn thiết lập VPN IKEv2 Server với StrongSwan trên Ubuntu 20.04

12/05/2023
35 phút đọc
Lượt xem

Đánh giá

5/5 - (96 bình chọn)

VPN cho phép mã hóa lưu lượng một cách an toàn khi truy cập mạng ở nơi công cộng như ở quán cà phê, tại các cuộc hội nghị hoặc ở sân bay. Còn Internet Key Exchange v2, hay IKEv2, là một giao thức cho phép tạo IPSec tunneling trực tiếp giữa server và client. Trong hướng dẫn này, bạn sẽ thiết lập server VPN IKEv2 bằng StrongSwan trên máy chủ Ubuntu 20.04, sau đó kết nối với client Windows, macOS, Ubuntu, iOS và Android.

Yêu cầu để thiết lập VPN IKEv2 Server với StrongSwan trên Ubuntu 20.04

Để thực hiện theo hướng dẫn này, bạn cần một máy chủ Ubuntu 20.04 với user non-root với quyền sudo và firewall UFW.

Bước 1: Cài đặt StrongSwan

Đầu tiên, bạn sẽ cài đặt StrongSwan, một IPSec mã nguồn mở được cấu hình làm server VPN. Đồng thời cài đặt hạ tầng cơ sở khóa công khai PKI để có thể tạo Certificate Authority (CA) nhằm xác thực cho cơ sở hạ tầng này.

Phần mềm StrongSwan
Phần mềm StrongSwan

Bắt đầu bằng cách cập nhật package cache cục bộ:

$ sudo apt update

Sau đó cài đặt phần mềm bằng lệnh:

$ sudo apt install  strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins

Package bổ sung libcharon-extauth-plugins được sử dụng để đảm bảo các client khác nhau có thể xác thực với server bằng username và password dùng chung.

Khi đã cài đặt StrongSwan, hãy chuyển sang tạo chứng chỉ.

Bước 2: Tạo Certificate Authority

Server IKEv2 yêu cầu chứng chỉ để xác định IKEv2 với khách hàng. Package strongswan-pki đi kèm với tiện ích pki sẽ tạo CA và chứng chỉ server cần thiết.

Để bắt đầu, hãy tạo một vài thư mục lưu trữ bằng lệnh:

$ mkdir -p ~/pki/{cacerts,certs,private}

Sau đó khóa quyền truy cập để bảo mật cho các file riêng tư:

$ chmod 700 ~/pki

Khi đã có cấu trúc thư mục để lưu trữ mọi thứ, bạn có thể tạo root key. Hướng dẫn này sử dụng khóa RSA 4096 bit để ký (sign) root CA.

Thực hiện các lệnh dưới đây để tạo khóa:

$ pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem

Sau đó bạn có thể chuyển sang phần tạo root CA , sử dụng khóa trên để đánh dấu chứng chỉ gốc:

$ pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
$  --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem

Cờ --lifetime 3650 đảm bảo rằng chứng chỉ gốc sẽ có hiệu lực trong vòng 10 năm. Chứng chỉ gốc của bên thẩm quyền thường không thay đổi vì chúng sẽ phân phối lại cho mọi server và client, do đó 10 năm là giá trị hết hạn an toàn.

Bạn có thể thay đổi giá trị DN (distinguished name) thành giá trị khác nếu muốn. Tên chung (CN-common name) thường không nhất thiết phải khớp với bất kì thành phần nào trong cơ sở hạ tầng của bạn.

Bây giờ khi đã thiết lập và kích hoạt root CA, bạn có thể tạo chứng chỉ mà server VPN sẽ sử dụng.

Bước 3: Tạo chứng chỉ cho server VPN

Bây giờ bạn sẽ tạo chứng chỉ và khóa cho server VPN. Chứng chỉ này sẽ giúp khách hàng xác minh độ tin cậy của server bằng chứng chỉ CA vừa tạo ở trên.

Đầu tiên, tạo khóa riêng cho server VPN bằng lệnh sau:

$ pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem

Bây giờ hãy tạo và ký (sign) chứng chỉ của server VPN bằng khóa của CA mà bạn đã tạo ở bước 2. Thực hiện lệnh sau, thay đổi trường CN và trường SAN thành DNS hoặc địa chỉ IP của server VPN:

$pki --pub --in ~/pki/private/server-key.pem --type rsa \
$   | pki --issue --lifetime 1825 \
$      --cacert ~/pki/cacerts/ca-cert.pem \
$       --cakey ~/pki/private/ca-key.pem \
$       --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
$       --flag serverAuth --flag ikeIntermediate --outform pem \
$  >  ~/pki/certs/server-cert.pem

Lưu ý: Nếu đang sử dụng địa chỉ IP thay vì tên DNS, bạn cần chỉ định nhiều mục nhập --san. Dòng --dn… chỉ định tên phân biệt cần được sửa đổi với mục bổ sung như sau:

--dn "CN=IP address" --san @IP_address --san IP_address \

Tùy chọn --flag serverAuth xác định chứng chỉ sẽ được sử dụng để xác thực server trước khi thiết lập mã hóa tunnel. Còn tùy chọn --flag ikeIntermediate có thể được dùng để hỗ trợ các client macOS cũ hơn.

Bây giờ bạn đã tạo tất cả các file TLS/SSL mà StrongSwan cần. Tiếp theo, di chuyển các file vào thư mục /etc/ipsec.d  bằng lệnh:

$ sudo cp -r ~/pki/* /etc/ipsec.d/

Trong bước này, bạn đã tạo một cặp chứng chỉ được sử dụng để bảo mật thông tin giữa client và server. Bạn cũng đã ký các chứng chỉ bằng khóa CA, vì vậy khách hàng có thể xác thực độ tin cậy của của server VPN bằng chứng chỉ này. Khi tất cả chứng chỉ đã sẵn sàng, bạn sẽ chuyển sang cấu hình phần mềm.

Bước 4: Cấu hình StrongSwan

StrongSwan có file cấu hình mặc định cho một số trường hợp nhưng bạn sẽ phải tự thực hiện hầu hết các cấu hình. Hãy sao lưu file tham khảo trước khi bắt đầu cấu hình StrongSwan:

$ sudo mv /etc/ipsec.conf{,.original}

Tạo và mở một file cấu hình mới bằng trình soạn thảo văn bản của bạn, ở đây sử dụng nano:

$ sudo nano /etc/ipsec.conf

Lưu ý: Khi thực hiện bước này để cấu hình server VPN, bạn sẽ gặp các cài đặt đề cập đến “left” và “right” của kết nối. Khi làm việc với IPSec VPN, “left” đề cập đến hệ thống cục bộ mà người dùng cấu hình, trong trường hợp này là server. Trong khi đó, “right” đề cập đến các client từ xa, như điện thoại và các máy tính khác.

Trước tiên, bạn sẽ yêu cầu StrongSwan ghi nhật kí trạng thái daemon để gỡ lỗi và cho phép các kết nối trùng lặp. Thêm những dòng dưới đây vào file:

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

Sau đó, bạn sẽ yêu cầu StrongSwan tạo VPN Tunnels IKEv2 và tự động tải phần cấu hình cho VPN khi nó khởi động. Nối các dòng sau vào file:

. . .
conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes

Bạn cũng sẽ cấu hình phát hiện dead-peer để xóa mọi kết nối không ổn định (“dangling” connection) trong trường hợp client ngắt kết nối bất ngờ. Thêm vào file những dòng sau:

. . .
conn ikev2-vpn
    . . .
    dpdaction=clear
    dpddelay=300s
    rekey=no

Tiếp theo, bạn sẽ cấu hình các tham số IPSec bên “left”. Mỗi tham số dưới đây đảm bảo rằng server được cấu hình để nhận dạng chính xác và chấp nhận các kết nối từ client. Bạn sẽ thêm từng tham số này vào file /etc/ipsec.con:

  • left=%any: Giá trị %any đảm bảo server sử dụng các interface nhận kết nối để liên lạc đến client. Ví dụ, nếu bạn đang kết nối với client qua mạng riêng, server sẽ sử dụng địa chỉ IP của mạng riêng để tiếp tục kết nối.
  • leftid=@server_domain_or_IP: Tùy chọn này kiểm soát tên server hiển thị với khách hàng. Khi kết hợp với tùy chọn leftcert, tùy chọn này đảm bảo tên server được cấu hình khớp với DN trong chứng chỉ công khai.
  • leftcert=server-cert.pem: Tùy chọn này là đường dẫn đến chứng chỉ công khai cho server mà bạn đã cấu hình ở Bước 3. Nếu không có tùy chọn này, server không thể tự xác thực với client hoặc hoàn tất thiết lập IKEv2.
  • leftsendcert=always: Giá trị always đảm bảo bất kì client nào kết nối với server đều nhận được bản sao chứng chỉ công khai của server như một phần của thiết lập kết nối ban đầu.
  • leftsubnet=0.0.0.0/0: Tùy chọn này sẽ cho biết các subnet nào có thể truy cập được. Trong trường hợp này, 0.0.0.0/0 đại diện cho toàn bộ địa chỉ IPv4, nghĩa là server sẽ yêu cầu khách hàng gửi tất cả lưu lượng truy cập qua VPN theo mặc định.

Khi đã hiểu rõ về tất cả các tùy chọn bên trái, bạn sẽ thêm chúng vào file cấu hình như sau:

. . .
conn ikev2-vpn
    . . .
    left=%any
    leftid=@server_domain_or_IP
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

Lưu ý, khi cấu hình ID server (leftid), chỉ sử dụng kí tự @ khi server VPN của bạn được xác định bởi một domain:

    . . .    leftid=@vpn.example.com
    . . .

Nếu server được xác định bằng địa chỉ IP, cần đặt địa chỉ IP vào:

    . . .
    leftid=your_server_ip
    . . .

Tiếp theo, bạn có thể cấu hình các tham số IPSec bên phải của client. Mỗi tham số sau đây cho server biết cách chấp nhận kết nối từ client, cách client xác thực với server và dải địa chỉ IP riêng cũng như server DNS mà client sẽ sử dụng. Thêm từng cài đặt này vào file /etc/ipsec.conf:

  • right=%any: Tùy chọn %any cho server biết cách chấp nhận kết nối đến từ các client từ xa.
  • rightid=%any: Tùy chọn này đảm bảo server không từ chối kết nối từ client đã cung cấp danh tính khi thiết lập mã hóa tunnel.
  • rightauth=eap-mschapv2: Tùy chọn này cấu hình phương thức xác thực mà client sử dụng để xác thực với server. eap-mschapv2 với khả năng tương thích rộng có thể hỗ trợ đa dạng hệ điều hành từ các client như Windows, macOS và Android.
  • rightsourceip=10.10.10.0/24: Tùy chọn này hướng dẫn server gán địa chỉ IP riêng cho client từ nhóm IP 10.10.10.0/24 được chỉ định.
  • rightdns= 8.8.8.8,8.8.4.4: Các địa chỉ IP này là trình phân giải DNS công khai của Google. Bạn có thể thay đổi để sử dụng DNS khác.
  • rightsendcert=nerver: Tùy chọn này hướng dẫn server rằng khách hàng không cần gửi chứng chỉ để tự xác thực.

Khi đã hiểu rõ về các tùy chọn bên phải cần thiết cho VPN, hãy thêm các dòng sau vào file:

. . .
conn ikev2-vpn
    . . .
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never

Bây giờ bạn sẽ yêu cầu StrongSwan hỏi về thông tin đăng nhập của người dùng khi được kết nối:

. . .
conn ikev2-vpn
    . . .
    eap_identity=%identity

Cuối cùng, thêm các dòng sau để hỗ trợ client Linux, Windows, macOS, iOS và Android. Những dòng này chỉ định các thuật toán trao đổi khóa, băm, xác thực và mã hóa mà StrongSwan cho phép các client khác nhau sử dụng:

. . .
conn ikev2-vpn
    . . .
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

Mỗi bộ mật mã sẽ phân biệt với các bộ khác bằng dấu phẩy. Các bộ mã được liệt kê ở trên đảm bảo phạm vi tương thích rộng nhất trên các client Windows, macOS, iOS, Android và Linux.

File cấu hình hoàn chỉnh như sau:

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@server_domain_or_IP
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never
    eap_identity=%identity
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

Lưu và đóng file sau khi đã thêm chính xác từng dòng. Nếu bạn sử dụng nano, hãy thoát bằng cách nhấn CTRL+X, Y, sau đó ENTER.

Bây giờ bạn đã cấu hình các tham số VPN, hãy chuyển sang tạo tài khoản người dùng để kết nối với server.

Bước 5: Cấu hình xác thực VPN

Server VPN hiện đã được cấu hình để chấp nhận kết nối từ client, nhưng chưa được cấu hình bất kì thông tin xác thực nào. Bạn cần thiết lập một vài thành phần trong file cấu hình đặc biệt ipsec.secrets. Để server VPN có thể xác thực với khách hàng, StrongSwan cần biết nơi tìm khóa riêng cho chứng chỉ server. Ngoài ra bạn cần thiết lập danh sách người dùng được phép kết nối với VPN.

Hãy mở file riêng để chỉnh sửa:

$ sudo nano /etc/ipsec.secrets

Trước tiên bạn sẽ cho StrongSwan biết vị trí khóa riêng và cách phân tích cú pháp của khóa:

: RSA "server-key.pem"

Sau đó, bạn sẽ xác định thông tin đăng nhập của người dùng, có thể sửa username và password theo ý muốn:

your_username : EAP "your_password"

Lưu và đóng tập tin. Bây giờ bạn sẽ khởi động lại VPN để áp dụng cấu hình:

$ sudo systemctl restart strongswan-starter

Giờ đây, server VPN đã được cấu hình đầy đủ với cả tùy chọn server và thông tin đăng nhập của người dùng. Bạn sẽ chuyển sang cấu hình phần quan trọng nhất – firewall.

Để đảm bảo quá trình cài đặt và thực hiện các thiết lập được diễn ra một cách thuận lợi và không gặp phải các rào cản, bạn cần phải sử dụng một máy chủ có khả năng mở rộng linh hoạt và toàn quyền quản trị. VPS Vietnix là một trong những giải pháp tối ưu cho nhu cầu của bạn, với những ưu điểm vượt trội như:

  • Khả năng mở rộng linh hoạt nhờ đa dạng gói VPS như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU được thiết kế giúp bạn dễ dàng phân chia tài nguyên và nâng cấp hệ thống mà không cần phải mất công cài đặt lại từ đầu.
  • Toàn quyền quản trị hệ thống, từ đó có thể tùy chỉnh và cấu hình máy chủ theo nhu cầu của bạn một cách dễ dàng và thuận tiện.
  • Tốc độ truy cập nhanh khi được trang bị cấu hình mạnh mẽ và các tài nguyên cao cấp, giúp tăng tốc độ truy cập và giảm thiểu thời gian chờ đợi đáng kể.
  • Hỗ trợ chuyên nghiệp, nhanh chóng và luôn túc trực 24/7 giúp bạn giải quyết mọi vấn đề một cách dễ dàng.

Liên hệ với Vietnix để được tư vấn gói cấu hình tối ưu nhất cho bạn.

Bước 6: Cấu hình firewall và chuyển tiếp IP Kernel

Khi hoàn tất cấu hình StrongSwan, bạn cần cấu hình firewall để cho phép lưu lượng VPN đi qua và chuyển tiếp.

Nếu chưa cấu hình UFW, bạn nên thêm quy tắc cho phép kết nối SSH qua firewall để session hiện tại không đóng khi bật UFW:

$ sudo ufw allow OpenSSH

Sau đó kích hoạt firewall:

$ sudo ufw enable

Thêm một quy tắc để cho phép lưu lượng UDP đến các cổng IPSec tiêu chuẩn 5004500:

$ sudo ufw allow 500,4500/udp

Tiếp theo, bạn sẽ mở một trong các file cấu hình của UFW để thêm một số chính sách low-level nhằm định tuyến và chuyển tiếp các packet IPSec. Trước khi mở file cấu hình, bạn cần tìm xem interface nào trên máy chủ được sử dụng để truy cập internet. Tìm interface này bằng cách truy vấn thiết bị được liên kết với đường truyền mặc định:

$ ip route show default

Interface công khai của bạn phải tuân theo từ khóa “dev”. Ví dụ, kết quả của lệnh trên hiển thị interface có tên eth0 như trong output dưới đây:

Output
default via your_server_ip dev eth0 proto static

Khi bạn có interface công khai, hãy mở file /etc/ufw/before.rules trong trình soạn thảo bằng lệnh sau:

$ sudo nano /etc/ufw/before.rules

Trước dòng *filter thêm khối cấu hình sau:

*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT

*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT

*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .

Thay đổi giá trị eth0 trong cấu hình trên để ip route khớp với tên interface bạn tìm thấy. Các dòng *nat tạo quy tắc để firewall có thể định tuyến và thao tác chính xác lưu lượng giữa các client VPN và internet. Dòng *mangle điều chỉnh kích thước tối đa của packet segment giúp ngăn sự cố tiềm ẩn với một số client VPN nhất định.

Tiếp theo, sau các dòng *filter, hãy thêm một đoạn cấu hình nữa:

. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]

-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Những dòng trên yêu cầu firewall chuyển tiếp lưu lượng ESP để các client VPN có thể kết nối. ESP cung cấp bảo mật bổ sung cho các packet VPN khi chúng đi qua mạng không đáng tin cậy.

Đóng file sau khi đã thêm chính xác từng dòng. Nếu bạn sử dụng nano, bấm tổ hợp CTRL+X, Y, sau đó nhấn ENTER để đóng.

Trước khi khởi động lại firewall, bạn cần thay đổi một số tham số trong file /etc/ufw/sysctl.conf để cho phép định tuyến từ interface này sang interface khác. Đầu tiên cần bật tính năng chuyển tiếp packet IPv4 để lưu lượng có thể di chuyển giữa VPN và các interface công khai trên máy chủ. Tiếp theo cần vô hiệu hóa Path MTU để ngăn sự cố phân mảnh packet. Cuối cùng bạn hãy chọn từ chối chuyển hướng ICMP cũng như không gửi chuyển hướng ICMP để ngăn căn tấn công “man-in -the-midle”.

Mở file cấu hình tham số kernel của UFW bằng nano:

$ sudo nano /etc/ufw/sysctl.conf

Thêm các cài đặt sau để bật chuyển tiếp packet giữa các interface:

. . .
net/ipv4/ip_forward=1

Block tiếp theo gửi và nhận các packet chuyển hướng ICMP bằng cách thêm các dòng sau vào cuối file:

. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0

Cuối cùng tắt MTU bằng cách thêm dòng sau vào cuối file:

. . .
net/ipv4/ip_no_pmtu_disc=1

Lưu file khi bạn hoàn tất. Sau đó bạn có thể kích hoạt tất cả các thay đổi của mình bằng cách tắt và bật lại firewall:

$ sudo ufw disable
$ sudo ufw enable

Bạn sẽ nhận được thông báo xác nhận quy trình. Nhập Y để bật lại UFW với cài đặt mới.

Bước 7: Kiểm tra kết nối VPN trên Windows, macOS, Ubuntu, iOS và Android

Sau khi đã hoàn tất thiết lập VPN, bạn sẽ chạy thử server trên các hệ điều hành khác nhau. Trước tiên bạn cần sao chép và cài đặt chứng chỉ CA trên các client sẽ kết nối với VPN. Cách đơn giản nhất để thực hiện là đăng nhập vào server và xuất nội dung của file chứng chỉ:

$ cat /etc/ipsec.d/cacerts/ca-cert.pem

Bạn sẽ có output như sau:

Output
-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE

. . .

H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----

Sao chép output trên vào máy tính của bạn và lưu vào một file có đuôi .pem, chẳng hạn ca-cert.pem. Ngoài ra, có thể sử dụng SFTP để truyền file từ remote ssh system vào máy tính của bạn.

Khi đã tải file ca-cert.pem xuống máy tính của mình, bạn có thể thiết lập kết nối với VPN.

Kết nối từ Windows

Có nhiều cách để nhập chứng chỉ gốc và cấu hình Windows để kết nối với VPN. Phương pháp đầu tiên sử dụng các công cụ đồ họa. Còn phương pháp thứ hai sử dụng các lệnh PowerShell và có thể sửa đổi để phù hợp với cấu hình VPN của bạn.

Lưu ý: Hướng dẫn này được thử nghiệm trên Windows 10, phiên bản 1903 và 1909.

Cấu hình Windows bằng công cụ đồ họa

Đầu tiên, nhập chứng chỉ gốc bằng cách làm theo các bước sau:

  1. Nhấn WINDOW+R để hiển thị hộp thoại Run và nhập mmc.exe để khởi chạy Windows Management Console.
  2. Từ mục File, điều hướng đến Add or Remove Snap-in, chọn mục Certificates từ danh sách các phần đính kèm có sẵn và nhấp vào Add.
  3. Để VPN hoạt động với mọi user, chọn Computer Account và nhấp vào Next.
  4. Chọn Local Computer, sau đó click vào Finish.
  5. Trong mục Console Root, mở rộng mục Certificates (Local Computer), mở rộng Trusted Root Certification Authorities, sau đó chọn mục Certificates.
Cấu hình Windows bằng công cụ đồ họa
Cấu hình Windows bằng công cụ đồ họa
  1. Từ menu Action, chọn All Tasks và click vào Import để hiển thị trình hướng dẫn nhập chứng chỉ. Nhấp vào Next để chuyển qua phần giới thiệu.
  2. Trên màn hình File to Import, nhấn vào nút Browse, đảm bảo bạn đã thay đổi định dạng file từ  “X.509 Certificate (.cer;.crt)” thành “All File (.)” và chọn file ca-cert.pem. Sau đó nhấp vào Next.
  3. Đảm bảo rằng Certificate Store được đặt thành Trusted Root Certificate Authorities và nhấp vào Next.
  4. Nhấp vào Finish để nhập chứng chỉ.

Sau đó cấu hình VPN theo các bước sau:

  1. Khởi chạy Control Panel, sau đó điều hướng đến Network and Sharing Center.
  2. Bấm vào Set up a new connection or network, sau đó chọn Connect to a workplace.
  3. Chọn Use my Internet connection (VPN).
  4. Nhập chi tiết server VPN. Nhập domain hoặc địa chỉ IP của server vào trường Internet address, sau đó điền Destination name bằng nội dung mô tả kết nối VPN. Cuối cùng bấm Done.

Cấu hình Windows bằng PowerShell

Để nhập chứng chỉ gốc CA bằng PowerShell, trước tiên hãy mở PowerShell prompt với đặc quyền admin bằng cách nhấp chuột phải vào biểu tượng Start và chọn Windows PowerShell (Admin). Bạn cũng có thể mở command prompt với tư cách quản trị viên và nhập powershell.

Tiếp theo, bạn sẽ nhập chứng chỉ bằng PowerShell cmdlet Import-Certificate. Trong lệnh sau, đối số -CertStoreLocation sẽ đảm bảo chứng chỉ được nhập vào kho lưu trữ Trusted Root Certificate Authorities nhằm giúp các chương trình và user có thể xác minh chứng chỉ của máy chủ VPN. Đối số -FilePath sẽ trỏ về vị trí người dùng sao chép chứng chỉ. Ví dụ như sau:

Import-Certificate `
    -CertStoreLocation cert:\LocalMachine\Root\ `
    -FilePath C:\users\sammy\Documents\ca-cert.pem

Lệnh trên sẽ xuất ra output sau:

Output
   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root

Thumbprint                                                                      Subject
----------                                                                             -------
DB00813B4087E9367861E8463A60CEA0ADC5F002       CN=VPN root CA

Khi cấu hình VPN bằng PowerShell, hãy chạy lệnh dưới đây, thay thế - ServeAddress bằng DNS hoặc địa chỉ IP của máy chủ:

Add-VpnConnection -Name "VPN Connection" `
    -ServerAddress "server_domain_or_IP" `
    -TunnelType "IKEv2" `
    -AuthenticationMethod "EAP" `
    -EncryptionLevel "Maximum" `
    -RememberCredential `

Nếu lệnh chạy thành công sẽ không có bất kì output nào. Để kiểm tra xem VPN được cấu hình chính xác hay không, sử dụng lệnh ghép:

Get-VpnConnection -Name "VPN Connection"

Bạn sẽ nhận được output như sau:

Output
Name                  : VPN Connection
ServerAddress         : your_server_ip
AllUserConnection     : False
Guid                  : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType            : Ikev2
AuthenticationMethod  : {Eap}
EncryptionLevel       : Maximum
L2tpIPsecAuth         :
UseWinlogonCredential : False
EapConfigXmlStream    : #document
ConnectionStatus      : Disconnected
RememberCredential    : True
SplitTunneling        : False
DnsSuffix             :
IdleDisconnectSeconds : 0

Theo mặc định, Windows sử dụng các thuật toán cũ và chậm hơn. Chạy lệnh ghép sau để nâng cấp các tham số mã hóa mà Windows sử dụng để trao đổi khóa IKEv2 và mã hóa các packet:

Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
    -AuthenticationTransformConstants GCMAES256 `
    -CipherTransformConstants GCMAES256 `
    -DHGroup ECP384 `
    -IntegrityCheckMethod SHA384 `
    -PfsGroup ECP384 `
    -EncryptionMethod GCMAES256

Lưu ý: Nếu muốn xóa kết nối VPN và cấu hình lại với các tùy chọn khác nhau, bạn có thể chạy lệnh sau:

Remove-VpnConnection -Name "VPN Connection" -Force

Cờ -Force sẽ bỏ qua thông báo xác nhận việc xóa. Bạn phải ngắt kết nối khỏi VPN nếu muốn xóa kết nối bằng lệnh trên.

Kết nối với VPN

Khi đã nhập chứng chỉ và cấu hình VPN bằng một trong hai phương pháp trên, kết nối VPN mới của bạn sẽ hiển thị trong danh sách mạng. Chọn VPN và nhấp vào Connect. Bạn sẽ nhập username và password, nhấp vào OK và kết nối đã sẵn sàng.

Kết nối từ macOS

Thực hiện các bước sau để nhập chứng chỉ:

  1. Nhấn đúp vào file chứng chỉ. Keychain Access sẽ khởi động với thông báo “Keychain Access is trying to modify the system Keychain. Enter your password to allow this”.
  2. Nhập mật khẩu của bạn, sau đó nhấp vào Modify Keychain.
  3. Bấm đúp vào chứng chỉ VPN vừa được nhập. Thao tác trên sẽ mở một cửa sổ nơi bạn chỉ định mức độ tin cậy. Đặt IP Security (IPSec) thành Always Trust và bạn sẽ nhận được thông báo nhập lại mật khẩu của mình. Cài đặt này sẽ tự động lưu sau khi nhập mật khẩu.

Bây giờ chứng chỉ đã được nhập và được tin cậy, hãy cấu hình kết nối VPN theo các bước sau:

  1. Chuyển đến System Preferences và chọn Network.
  2. Nhấp vào dấu cộng ở phía dưới bên trái danh sách mạng.
  3. Khi xuất hiện cửa sổ mới, đặt Interface thành VPN, đặt VPN Type thành IKEv2 và đặt tên cho kết nối.
  4. Trong trường ServerRemote ID, hãy nhập domain hoặc địa chỉ IP của máy chủ. Để trống Local ID.
  5. Nhấp vào Authentication Settings, chọn Username và nhập username và password cho user VPN. Sau đó bấm OK.

Cuối cùng, nhấp vào Connect để kết nối với VPN.

Kết nối từ Ubuntu

Để kết nối tới Ubuntu, bạn có thể thiết lập và quản lí StrongSwan dưới dạng dịch vụ hoặc sử dụng lệnh chạy một lần (one-off command) mỗi khi muốn kết nối.

Quản lí StrongSwan như một dịch vụ

Để quản lí StrongSwan như một dịch vụ, bạn cần thực hiện các bước cấu hình sau.

Trước tiên, cập nhật package cache cục bộ:

$ sudo apt update

Tiếp theo, cài đặt StrongSwan và các plugin để xác thực:

$ sudo apt install strongswan libcharon-extra-plugins

Bạn cần một bản sao chứng chỉ CA trong thư mục /etc/ipsec.d/ca-certs để khách hàng của bạn có thể xác minh danh tính của máy chủ. Chạy lệnh sau để sao chép file ca-cert.pem vào vị trí:

$ sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

Để đảm bảo VPN chỉ chạy theo yêu cầu, hãy sử dụng lệnh sau để tắt chạy StrongSwan tự động:

$ sudo systemctl disable --now strongswan-starter

Tiếp theo bạn sẽ cấu hình username và password sử dụng để xác thực với server VPN. Chạy lệnh sau:

$ sudo nano /etc/ipsec.secrets

Thêm dòng sau, chỉnh sửa giá trị username và password để khớp với giá trị bạn đã cấu hình trên server:

your_username : EAP "your_password"

Cuối cùng, chỉnh sửa file /etc/ipsec.conf để cấu hình client phù hợp với cấu hình của server:

config setup

conn ikev2-rw
    right=server_domain_or_IP
    # This should match the `leftid` value on your server's configuration
    rightid=server_domain_or_IP
    rightsubnet=0.0.0.0/0
    rightauth=pubkey
    leftsourceip=%config
    leftid=username
    leftauth=eap-mschapv2
    eap_identity=%identity
    auto=start

Để kết nối với VPN, hãy nhập:

$ sudo systemctl start strongswan-starter

Để ngắt kết nối, nhập lệnh:

$ sudo systemctl stop strongswan-starter

Sử dụng charon-cmd client cho các kết nối một lần

Để quản lí StrongSwan như một dịch vụ, bạn cần thực hiện các bước cấu hình sau.

Trước tiên, hãy cập nhật package cache bằng lệnh sau:

$ sudo apt update

Tiếp theo, cài đặt StrongSwan và các plugin cần thiết để xác thực:

$ sudo apt install strongswan libcharon-extra-plugins

Bạn cần một bản sao chứng chỉ CA trong thư mục /etc/ipsec.d/ca-certs để khách hàng của bạn có thể xác minh danh tính của máy chủ. Chạy lệnh sau để sao chép file ca-cert.pem vào vị trí:

$ sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

Tại thời điểm này bạn có thể kết nối với server VPN bằng charon-cmd sử dụng chứng chỉ CA của server, địa chỉ IP của VPN server và username mà bạn đã cấu hình.

Chạy lệnh sau khi bạn muốn kết nối với VPN:

$ sudo charon-cmd --cert ca-cert.pem --host vpn_domain_or_IP --identity your_username

Khi có thông báo, hãy cung cấp mật khẩu của user VPN và bạn sẽ kết nối thành công với VPN. Để ngắt kết nối, nhấn CTRL+C vào terminal và đợi kết nối đóng lại.

Kết nối từ iOS

Để cấu hình kết nối VPN trên thiết bị iOS, hãy làm theo các bước sau:

  1. Gửi một email có đính kèm chứng chỉ gốc.
  2. Mở email trên thiết bị iOS của bạn và nhấn vào file chứng chỉ đi kèm, sau đó nhấn Install và nhập passcode của bạn. Sau khi cài đặt file chứng chỉ xong, nhấn Done.
  3. Chuyển đến Settings, General, VPN và nhấn Add VPN Configuration. Thao tác này sẽ hiển thị màn hình cấu hình kết nối VPN.
  4. Nhấn vào Type và chọn IKEv2.
  5. Trong trường Description, nhập tên cho kết nối VPN.
  6. Trong trường ServerRemote ID, hãy nhập domain hoặc địa chỉ IP của máy chủ. Trường Local ID có thể để trống.
  7. Nhập username và password vào phần Authentication, sau đó nhấn vào Done.
  8. Chọn kết nối VPN mà bạn vừa tạo, chạm vào switch ở đầu trang để kết nối.

Kết nối từ Android

Thực hiện các bước sau để nhập chứng chỉ ở thiết bị Android:

  1. Gửi một email có đính kèm chứng chỉ CA. Lưu chứng chỉ CA vào thư mục tải xuống của bạn.
  2. Tải xuống ứng dụng StrongSwan VPN client từ Play Store.
  3. Mở ứng dụng. Nhấn vào biểu tượng “thêm” (…) ở góc trên bên phải. Chọn CA certificates.
  4. Nhấn lại biểu tượng “thêm” (…) và chọn Import certificate.
  5. Mở chứng chỉ CA trong thư mục tải xuống của bạn và tải nó lên ứng dụng.

Bây giờ chứng chỉ đã được nhập vào StrongSwan, bạn có thể cấu hình kết nối VPN theo các bước sau:

  1. Trong ứng dụng, chạm vào ADD VPN PROFILE ở trên cùng.
  2. Điền vào mục Server bằng domain hoặc địa chỉ IP công khai của server VPN.
  3. Đảm bảo IKEv2 EAP (Username/ Password) được chọn làm loại VPN.
  4. Điền vào mục UsernamePassword bằng thông tin đăng nhập bạn đã xác định trên server.
  5. Bỏ chọn Select automatically trong phần CA certificate và nhấp vào Select CA certificate.
  6. Nhấn vào tab IMPORTED ở đầu màn hình và chọn CA bạn đã nhập (CA này sẽ có tên là “VPN root CA”) nếu bạn không thay đổi DN trước đó.
  7. Thay đổi Profile name nếu bạn muốn.

Khi bạn muốn kết nối với VPN, hãy nhấn vào cấu hình bạn vừa tạo trong ứng dụng StrongSwan.

Khắc phục sự cố

Nếu bạn không thể nhập chứng chỉ, chỉnh sửa phần mở rộng của file là .pem chứ không phải .pem.txt .

Nếu bạn không thể kết nối đến VPN, hãy kiểm tra tên máy chủ hoặc địa chỉ IP mà bạn đã sử dụng. Domain hoặc địa chỉ IP của máy chủ phải khớp với CN trong khi tạo chứng chỉ. Nếu domain hoặc địa chỉ IP không khớp với CN thì kết nối VPN sẽ không hoạt động. Ví dụ, CN là vpn.example.com thì khi máy chủ cũng phải sử dụng vpn.example.com. Kiểm tra kĩ lệnh bạn sử dụng để tạo chứng chỉ và các giá trị đã sử dụng khi tạo kết nối VPN.

Cuối cùng, hãy kiểm tra kĩ cấu hình VPN để đảm bảo giá trị leftid được cấu hình bằng kí hiệu @ nếu bạn đang sử dụng một domain. Nếu bạn đang sử dụng địa chỉ IP, bỏ @:

    leftid=@vpn.example.com

Ngoài ra, hãy đảm bảo rằng khi bạn tạo file server-cert.pem, bạn đã bao gồm cả hai cờ --san @IP_address--san IP_address.

Vietnix là nhà cung cấp giải pháp hosting, VPS, tên miền,… với hơn 10 năm kinh nghiệm và đã phục vụ cho hơn 50.000 khách hàng cá nhân và doanh nghiệp. Ngoài ra, tới thời điểm hiện tại, chúng tôi đã kích hoạt hơn 100.000 dịch vụ, cho thấy sự đáng tin cậy và chuyên nghiệp của đội ngũ Vietnix.

Không chỉ vậy, sau khi sử dụng dịch vụ tới 97% khách hàng đã giới thiệu Vietnix cho người khác, chứng tỏ chất lượng và dịch vụ của Vietnix được hầu hết khách hàng đánh giá cao. Chính vì vậy, nếu bạn đang cần một giải pháp hosting, VPS, tên miền,… cho doanh nghiệp hoặc cá nhân, Vietnix là một lựa chọn đáng tin cậy và chuyên nghiệp.

Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

Trên đây là toàn bộ hướng dẫn xây dựng server VPN sử dụng giao thức IKEv2. Bên cạnh đó, bạn cũng biết được cách cấu hình để Window, macOS, iOS, Android và Linux kết nối VPN. Chúc các bạn cài đặt thành công và bảo mật mọi hoạt động trực tuyến của mình trên môi trường internet. Hãy để lại bình luận bên dưới bài viết về thiết lập VPN IKEv2 Server với StrongSwan trên Ubuntu 20.04 nếu bạn có thắc mắc trong quá trình cài đặt để được giải đáp nhanh chóng.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG