IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

分類:

, ,

如何在Ubuntu 22.04中‧設定IKEv2 VPN伺服器

01. 更新Ubuntu伺服器。

sudo apt-get update
sudo apt-get upgrade

02. 安裝strongSwan軟件及安裝相關程式。

sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins
sudo apt install libtss2-tcti-tabrmd0

03. 建立伺服器證書,我會放在root使用者目錄中。

cd /root
sudo mkdir -p ~/pki/{cacerts,certs,private}

04. 設定目錄權限,只有該使用者可以存取。

sudo chmod 700 ~/pki

05. 建立相關證書。要留意是CA證書中,–dn參數需輸入CN名稱或IP地址,如『CN=AWS VPN Server』或『CN=103.104.105.106』。而CA key中,–dn參數需與CA證書設定一樣,–san參數為VPN伺服器的IP地址。

pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem --type rsa --dn "CN=AWS VPN Server" --outform pem > ~/pki/cacerts/ca-cert.pem
pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem
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=AWS VPN Server" --san <SERVER_IP_ADDRESS> --flag serverAuth --flag ikeIntermediate --outform pem >  ~/pki/certs/server-cert.pem

06. 將產生的證書複製到/etc/ipsec.d目錄。

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

07. 建立VPN伺服器設定檔。其中leftid=@SERVER_DOMAIN or IP_ADDRESS,此位置應與第5部份設定相同。rightsourceip=10.10.10.0/24為VPN客戶端派發的IP地址範圍。rightdns=8.8.8.8,8.8.4.4為VPN客戶端使用DNS伺服器設定參數。

sudo nano /etc/ipsec.conf
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_IP_ADDRESS>
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!

07. 建立VPN伺服器用戶設定檔。

sudo nano /etc/ipsec.secrets
: RSA "server-key.pem"
user1 : EAP "password1"
user2 : EAP "password2"

08. 重新啟動strongSwan伺服器。

sudo systemctl restart strongswan-starter

09. 到此已完成strongSwan IKEv2 VPN伺服器設定。如客戶端在VPN連線後需要連到網絡(Internet),便要以NAT方式,將VPN連線連接到原先的網絡上,否則客戶端連上VPN後,便不能瀏覽網絡(Internet)。

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

10. 因為伺服器重啟後,iptables設定便會消失,所以先將現存設定儲存到檔案。

sudo iptables-save > /opt/ikev2_iptables.conf

11. 開啟NAT轉發(forwarding)設定。

sudo nano /etc/sysctl.conf
將:
#net.ipv4.ip_forward = 1
#net.ipv6.conf.all.forwarding = 1
更改為:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

12. 建立開機執行iptables設定。

sudo nano /etc/systemd/system/iptables_vpn.service
[Unit]
After=network.service
Description=Reload iptables settings for IKEv2 VPN

[Service]
Type=forking
ExecStart=/opt/ikev2_vpn.sh
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

13. 建立開機執行程式內容。就是將上面第10步儲存檔案,重新載入到iptables內。

sudo nano /opt/ikev2_vpn.sh
#!/bin/bash
sudo iptables-restore < /opt/ikev2_iptables.conf

14. 設定檔案為可執行。

sudo chmod +x /opt/ikev2_vpn.sh

15. 啟用開機執行程式。

sudo systemctl reenable iptables_vpn.service

16. 重新啟動伺服器。

sudo reboot

17. 開機後可檢查剛才程式是否已執行。

sudo systemctl status iptables_vpn.service

18. 同時檢查iptables內容,是否已建立NAT轉發(forwarding)設定。

sudo iptables-save

19. 而IKEv2 VPN CA證書,可在『/etc/ipsec.d/cacerts/ca-cert.pem』找到。

20. 客戶端要連接VPN伺服器前,需以SSH連接到伺服器(如Filezilla),取得『/etc/ipsec.d/cacerts/ca-cert.pem』證書。

21. 確認VPN伺服器對外已開啟UDP500及4500埠位(ports)。

21.1 如客戶端為Windows系統,先執行『管理電腦憑證』,在『受信任的根憑證授權單位』、『憑證』位置,執行『動作』、『所有工作』、『匯入』,將第20步下載證書加到Windows系統中。






21.2 完成後,會見到剛才加入的證書。

21.3 在Windows中,建立VPN連線。


21.4 VPN連線後,因VPN伺服器已經NAT連接對外網絡,所以會看到可看到可使用網絡連線。

21.5 用『canyouseeme.org』網站檢查結果,『Your IP』ip應顯示VPN伺服器IP地址。

22.1 如客戶端為Android系統,可在『Play Store』下載『strongSwan VPN Client』APPS及安裝。

22.2 檢查下載證書,如檔案延伸名為server-cert.pem.txt,便需要人手改為server-cert.pem。

22.3 打開證書檔案,系統會問是否會以strongSwan VPN Client打開。

22.4 導入證書憑證。

22.5 導入後,在CA憑證不會看到任何資料,必須『重新載入CA憑證』一次,才會看到導入結果。

22.6 『新增VPN設定檔』、『輸入伺服器』、設定VPN類型為『IKEv2 EAP (用戶名稱/密碼)』,用戶ID及密碼,按『儲存』。


22.7 按『連線』便可以連接到VPN伺服器。

22.8 用『canyouseeme.org』網站檢查結果,『Your IP』ip應顯示VPN伺服器IP地址。

23.1 如客戶端為iOS系統,先下載證書及打開證書檔案(iOS稱呼這叫描述檔)。

23.2 在iPhone『設定』,便會看到『已下載描述檔』選項。

23.3 安裝相關描述檔。



23.4 在iPhone『設定』、『一般』、『VPN』,新增VPN連線。


23.5 輸入VPN資料,要留意『遙距ID(Remote ID)』應輸入VPN伺服器的IP地址。

23.6 測試VPN連線,並到『canyouseeme.org』網站檢查結果。

  1. 「คอลล่า」的個人頭像

    Hi there, just wanted to say, I liked this article. It was helpful.
    Keep on posting!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *