在 Ubuntu 20.04 上安裝和配置 StrongSwan VPN

虛擬專用網絡用於從公共 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 服務器和客戶端。 您現在可以保護您的身份並保護您的在線活動。