發佈日期:
如何在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』網站檢查結果。
發佈留言