Ubuntu在Ubuntu 20.04上安装和配置StrongSwan VPN

VPN用于通过公共Internet连接创建专用网络,以保护您的数据。

VPN使用加密的隧道安全地发送和接收数据。

strongSwan是最著名的VPN软件之一,支持各种操作系统,包括Linux,OS X,FreeBSD,Windows,Android和iOS。

它使用IKEv1和IKEv2协议安全地建立连接。

您可以使用内置插件扩展其功能。

在本指南中,我们将逐步说明在Ubuntu 20.04上使用StrongSwan设置KEv2 VPN服务器的说明。

先决条件

  • 两个系统运行Ubuntu 20.04服务器
  • 两台服务器上配置的根密码

StrongSwan安装

默认情况下,StrongSwan在默认的Ubuntu 20.04存储库中可用。

您可以使用以下命令将其与其他必需的组件一起安装:

apt-get install 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

添加以下配置和conn设置:

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

保存并关闭/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

保存并关闭文件,然后使用以下命令重新加载新设置:

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/

使用/etc/ipsec.secrets文件配置VPN客户端身份验证:

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服务器和客户端。

现在,您可以保护自己的在线活动。

Sidebar