Cách thiết lập IKEv2 IPSec VPN bằng strongSwan và Let's Encrypt trên Rocky Linux 9

theanh

Administrator
Nhân viên
Nếu bạn đang tìm kiếm giải pháp VPN từ máy khách đến trang web, thì bạn có thể thích giải pháp IKEv2 EAP hơn OpenVPN hoặc Wireguard. Một giải pháp như vậy cực kỳ hữu ích nếu bạn liên tục di chuyển và cần một giải pháp VPN mà bạn có thể dễ dàng kết nối mà không cần tải xuống máy khách hoặc cần khóa. strongSwan là VPN dựa trên IPSec đa nền tảng mã nguồn mở có thể hữu ích trong trường hợp như vậy. Nó có thể cung cấp xác thực dựa trên chứng chỉ X.509 hoặc xác thực người dùng IKEv2 EAP an toàn.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách thiết lập VPN IKEv2 IPSec bằng strongSwan bằng cách sử dụng xác thực EAP-MSCHAPv2 cùng với chứng chỉ SSL Let's Encrypt trên máy chủ Rocky Linux 9. Bạn cũng sẽ học cách kết nối với VPN bằng các máy khách Windows, macOS, Linux và Android.

Điều kiện tiên quyết​


  • Một máy chủ chạy Rocky Linux 9. Tùy thuộc vào số lượng người dùng kết nối với máy chủ, bạn phải nâng cấp thông số kỹ thuật của máy chủ.

  • Một người dùng không phải root có quyền sudo.

  • Một tên miền đủ điều kiện (FQDN) như vpn.example.com.

  • Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo dnf update
[*]
Một số gói mà hệ thống của bạn nhu cầu.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

Bước 1 - Cấu hình Mạng và Tường lửa​

Bật chuyển tiếp Gói IP trong tùy chọn hạt nhân.
Mã:
$ echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
$ sudo sysctl -p
Thêm dịch vụ IPSec vào Firewalld tường lửa.
Mã:
$ sudo firewall-cmd --permanent --add-service=ipsec
Chúng ta cũng cần các cổng HTTP và HTTPS để hoạt động. Mở chúng.
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Cho phép chuyển tiếp gói tin NAT, còn được gọi là ngụy trang IP.
Mã:
$ sudo firewall-cmd --permanent --add-masquerade
Tải lại tường lửa để áp dụng thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 2 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL.

Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho việc đó. Vì Rocky Linux không đi kèm với nó, hãy cài đặt trình cài đặt Snapd. Yêu cầu kho lưu trữ EPEL để hoạt động.
Mã:
$ sudo dnf install -y epel-release
Cài đặt Snapd.
Mã:
$ sudo dnf install -y snapd
Bật và khởi động Snap dịch vụ.
Mã:
$ sudo systemctl enable snapd --now
Cài đặt gói lõi Snap và đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
Tạo các liên kết cần thiết cho Snapd để làm việc.
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Phát hành lệnh sau để cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Xác minh cài đặt.
Mã:
$ certbot --version
certbot 2.3.0
Chạy lệnh sau để tạo Chứng chỉ SSL.
Mã:
$ sudo certbot --key-type rsa certonly --standalone --agree-tos --no-eff-email --preferred-challenges http -m [emailprotected] -d vpn.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /etc/letsencrypt/live/vpn.example.com thư mục trên máy chủ của bạn.

Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 3 - Cài đặt strongSwan​

strongSwan yêu cầu kho lưu trữ EPEL để cài đặt nhưng vì chúng ta đã cài đặt nó ở bước trước nên bạn có thể bỏ qua. Cài đặt strongSwan bằng lệnh sau.
Mã:
$ sudo dnf install strongswan
Tạo liên kết tượng trưng cho các chứng chỉ trong thư mục /etc/strongswan/swanctl.
Mã:
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/fullchain.pem /etc/strongswan/swanctl/x509
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/privkey.pem /etc/strongswan/swanctl/private
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/chain.pem /etc/strongswan/swanctl/x509ca
Tạo tệp cấu hình strongSwan và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/strongswan/swanctl/conf.d/my_vpn.conf
Dán mã sau vào nó.
Mã:
connections { ikev2-eap-mschapv2 { version = 2 proposals = aes256-sha256-modp4096,aes256-sha256-modp2048,aes256gcm16-sha256-modp1024 rekey_time = 0s pools = pool-ipv4 fragmentation = yes dpd_delay = 30s send_cert=always unique = never local { id = vpn.example.com certs = fullchain.pem } remote { auth = eap-mschapv2 eap_id = %any } children { ikev2-eap-mschapv2 { local_ts = 0.0.0.0/0 rekey_time = 0s dpd_action = clear esp_proposals = aes256-sha256-sha1 } } }
}
pools { pool-ipv4 { addrs = 10.1.1.0/24 dns = 1.1.1.1, 8.8.8.8 }
}
secrets { eap-User1 { id = username1 secret = "password1" }
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Nếu bạn muốn tạo đường hầm cho cả IPv4 và IPv6 thông qua VPN, bạn cần chỉ định một nhóm IPv6, DNS và mạng con cục bộ. Thay thế các giá trị của các biến local_ts, addrsdns với các giá trị sau.
Mã:
local_ts = 0.0.0.0/0,::/0
....
addrs = 10.1.1.0/24,2a00:1450:400c:c05::/112
dns = 8.8.8.8,2001:4860:4860::8888
Vô hiệu hóa plugin OpenSSL vì OpenSSL trên Rocky Linux 9 không cho phép chữ ký RSA với SHA-1 gây ra xác thực lỗi.
Mã:
$ sudo sed -i "s/load = yes/load = no/" /etc/strongswan/strongswan.d/charon/openssl.conf
Bật và khởi động dịch vụ strongSwan.
Mã:
$ sudo systemctl enable strongswan
$ sudo systemctl start strongswan

Bước 4 - Kết nối qua Windows​

Mở ứng dụng Cài đặt và chọn tùy chọn menu Mạng và Internet. Chọn menu VPN rồi nhấp vào nút Thêm kết nối VPN.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22667%22%20height=%22750%22%3E%3C/svg%3E


Nhấp vào nút Lưu rồi chọn VPN bạn đã thêm và nhấp vào nút Kết nối để khởi động VPN.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22490%22%20height=%22266%22%3E%3C/svg%3E

Bước 5 - Kết nối qua macOS​

Mở Tùy chọn hệ thống >> Mạng và nhấp vào dấu cộng (+) ở trên cùng bên phải để thêm dịch vụ mới.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22669%22%20height=%22382%22%3E%3C/svg%3E


Chọn VPN làm Giao diện, IKEv2 làm Loại VPN và đặt tên cho dịch vụ của bạn. Nhấp vào nút Tạo để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22667%22%20height=%22561%22%3E%3C/svg%3E


Nhập tên miền của bạn làm Địa chỉ máy chủID từ xa. Để trống trường ID cục bộ. Nhấp vào nút Cài đặt xác thực để mở một cửa sổ bật lên mới.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22666%22%20height=%22563%22%3E%3C/svg%3E


Chọn Tên người dùng làm Cài đặt xác thực rồi nhập thông tin xác thực đã tạo trước đó. Nhấp vào nút Ok để lưu cài đặt. Nhấp vào nút Áp dụng ở cuối để lưu cài đặt. Sau đó nhấp vào nút Kết nối để kết nối với VPN.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22374%22%20height=%2242%22%3E%3C/svg%3E


Sau khi bạn đã thêm, macOS sẽ tạo một phím tắt cho VPN trên thanh menu. Bạn có thể kết nối trực tiếp với VPN từ đó.

Bước 6 - Kết nối qua Android​

Mở menu Cài đặt Android >> Mạng và Internet >> VPN. Nhấp vào dấu cộng (+) ở góc trên bên phải màn hình để thêm cấu hình VPN.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22337%22%20height=%22750%22%3E%3C/svg%3E


Đặt tên cho kết nối. Chọn IKEv2/IPSec MSCHAPv2 làm loại VPN. Nhập tên miền của bạn làm địa chỉ máy chủ. Cung cấp bất kỳ chuỗi ngẫu nhiên nào làm Mã định danh IPSec. Nhập tên người dùng và mật khẩu bạn đã cung cấp trước đó. Nhấp vào nút Lưu để hoàn tất.

Chọn Tên kết nối và nhấp vào Kết nối để bắt đầu sử dụng VPN.

Bước 7 - Kết nối qua iOS​

Mở cài đặt iOS và nhấp vào menu Chung. Nhấp vào menu VPN và bạn sẽ nhận được menu tương tự như hiển thị bên dưới. Chọn IKEv2 làm Loại VPN.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22650%22%20height=%22573%22%3E%3C/svg%3E


Mô tả VPN của bạn. Nhập tên miền của bạn làm giá trị cho các trường Máy chủID từ xa. Để trống trường ID cục bộ. Chọn Xác thực người dùng làm Tên người dùng và nhập thông tin xác thực của bạn. Chọn Xong khi hoàn tất và chạm vào công tắc để kết nối với VPN.

Kết luận​

Đây là kết thúc hướng dẫn của chúng tôi về cách thiết lập IKEv2 VPN bằng strongSwan và Let's Encrypt SSL trên máy chủ Rocky Linux 9. Bạn cũng đã kết nối với VPN bằng nhiều máy khách. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên