虛擬專用網絡用於從公共 Internet 連接創建專用網絡以保護您的身份。 VPN 使用加密隧道來安全地發送和接收數據。
strongSwan 是最著名的 VPN 軟件之一,支持不同的操作系統,包括 Linux、OS X、FreeBSD、Windows、Android 和 iOS。 它使用 IKEv1 和 IKEv2 協議來建立安全連接。 您可以使用內置插件擴展其功能。
在本教程中,我們將逐步說明如何在 Ubuntu 20.04 上使用 StrongSwan 設置 KEv2 VPN 服務器。
先決條件
• 兩個系統運行 Ubuntu 20.04 服務器
• 在兩台服務器上都配置了 root 密碼
安裝 StrongSwan
默認情況下,StrongSwan 在 Ubuntu 20.04 默認存儲庫中可用。 您可以使用以下命令將其與其他必需的組件一起安裝:
apt-get install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y
安裝所有軟件包後,您可以繼續生成 CA 證書。
為 VPN 服務器生成證書
接下來,您需要為 VPN 服務器生成證書和密鑰,以在客戶端驗證服務器的真實性。
首先,使用以下命令為根 CA 創建一個私鑰:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/ca.key.pem
接下來,創建一個根 CA 並使用上述密鑰對其進行簽名:
ipsec pki --self --in /etc/ipsec.d/private/ca.key.pem --type rsa --dn "CN=My VPN Server CA" --ca --lifetime 3650 --outform pem > /etc/ipsec.d/cacerts/ca.cert.pem
接下來,使用以下命令為 VPN 服務器創建私鑰:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/server.key.pem
最後,使用以下命令生成服務器證書:
ipsec pki --pub --in /etc/ipsec.d/private/server.key.pem --type rsa | ipsec pki --issue --lifetime 2750 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem --dn "CN=vpn.domain.com" --san="vpn.domain.com" --flag serverAuth --flag ikeIntermediate --outform pem > /etc/ipsec.d/certs/server.cert.pem
此時,所有證書都已準備好用於 VPN 服務器。
配置 StrongSwan VPN
strongswan 的默認配置文件是/etc/ipsec.conf。 我們可以備份主配置文件並創建一個新文件:
mv /etc/ipsec.conf /etc/ipsec.conf-bak
接下來,創建一個新的配置文件:
nano /etc/ipsec.conf
添加以下配置和連接設置:
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
strictcrlpolicy=no
uniqueids=yes
cachecrls=no
conn ipsec-ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
[email protected]
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
rightsendcert=never
eap_identity=%identity
Save 和 close /etc/ipsec.conf 文件。
接下來,您需要定義 EAP 用戶憑據和用於身份驗證的 RSA 私鑰。
您可以通過編輯文件 /etc/ipsec.secrets 來設置它:
nano /etc/ipsec.secrets
添加以下行:
: RSA "server.key.pem"
vpnsecure : EAP "password"
然後重啟StrongSwan服務如下:
systemctl restart strongswan-starter
要使 StrongSwan 在系統啟動時啟動,請鍵入:
systemctl enable strongswan-starter
驗證 VPN 服務器的狀態,鍵入:
systemctl status strongswan-starter
啟用內核數據包轉發
接下來,您需要通過編輯 /etc/sysctl.conf 文件來配置內核以啟用數據包轉發:
nano /etc/sysctl.conf
取消註釋以下幾行:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Save 和 close 然後使用以下命令重新加載該文件:
sysctl -p
安裝和配置 StrongSwan 客戶端
在本節中,我們將在遠程機器上安裝 StrongSwan 客戶端並連接到 VPN 服務器。
首先,使用以下命令安裝所有必需的軟件包:
apt-get install strongswan libcharon-extra-plugins -y
安裝所有軟件包後,使用以下命令停止 StrongSwan 服務:
systemctl stop strongswan-starter
接下來,您需要將 ca.cert.pem 文件從 VPN 服務器複製到 /etc/ipsec.d/cacerts/ 目錄。 您可以使用 SCP 命令複製它,如下所示:
scp [email protected]:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/
要設置 VPN 客戶端身份驗證,請使用 /etc/ipsec.secrets 文件:
nano /etc/ipsec.secrets
添加以下行:
vpnsecure : EAP "password"
然後編輯strongSwan主配置文件:
nano /etc/ipsec.conf
添加以下與您在 /etc/ipsec.secrets 文件中指定的域和密碼相匹配的行。
conn ipsec-ikev2-vpn-client
auto=start
right=vpn.domain.com
rightid=vpn.domain.com
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=vpnsecure
leftauth=eap-mschapv2
eap_identity=%identity
現在使用以下命令啟動 StrongSwan VPN 服務:
systemctl start strongswan-starter
接下來,使用以下命令驗證 VPN 連接狀態:
ipsec status
你應該得到以下輸出:
Security Associations (1 up, 0 connecting):
ipsec-ikev2-vpn-client[1]: ESTABLISHED 28 seconds ago, 104.245.32.158[vpnsecure]...104.245.33.84[vpn.domain.com]
ipsec-ikev2-vpn-client{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: ca6f451c_i ca9f9ff7_o
ipsec-ikev2-vpn-client{1}: 10.10.10.1/32 === 0.0.0.0/0
以上輸出表明客戶端和服務器之間建立了VPN連接,IP地址10.10.10.1分配給客戶端機器。
您還可以使用以下命令驗證您的新 IP 地址:
ip a
你應該得到以下輸出:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:68:f5:20:9e brd ff:ff:ff:ff:ff:ff
inet 104.245.32.158/25 brd 104.245.32.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.10.10.1/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:68ff:fef5:209e/64 scope link
valid_lft forever preferred_lft forever
結論
在上面的指南中,我們學習瞭如何在 Ubuntu 20.04 上設置 StrongSwan VPN 服務器和客戶端。 您現在可以保護您的身份並保護您的在線活動。