跳到内容

使用strongSwan在Ubuntu和Debian服务器上设置站点到站点的IPSec VPN

更新时间
连续6年不跑路的安全速度最适合国人VPN
连续6年不跑路的安全速度最适合国人VPN

strongSwan是一个开源、跨平台、功能齐全且广泛使用的基于IPsec的VPN(虚拟私人网络)实现,能够在Linux、FreeBSD、OS X、Windows、Android和iOS上运行。它主要是一个密钥守护程序,支持互联网密钥交换协议(IKEv1和IKEv2),以在两个对等方之间建立安全关联(SA)。

本文将介绍如何在Ubuntu和Debian服务器上使用strongSwan设置站点到站点的IPSec VPN网关。这里的站点到站点意味着每个安全网关后面都有一个子网。此外,对等方将使用预共享密钥(PSK)相互认证。

测试环境

请记得用您实际的IP地址替换以下IP,以配置您的环境。

站点1网关(tecmint-devgateway)
操作系统:Debian或Ubuntu
公共IP:10.20.20.1
私有IP:192.168.0.101/24
私有子网:192.168.0.0/24

站点2网关(tecmint-prodgateway)
操作系统:Debian或Ubuntu
公共IP:10.20.20.3
私有IP:10.0.2.15/24
私有子网:10.0.2.0/24

第一步:启用内核数据包转发

  1. 首先,您需要通过在两个安全网关的/etc/sysctl.conf配置文件中添加适当的系统变量来启用数据包转发。 bash sudo vim /etc/sysctl.conf 找到以下行,取消注释并设置其值,如下所示(有关更多信息,请阅读文件中的注释)。 plaintext 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

  2. 接下来,通过运行以下命令加载新设置。 bash sudo sysctl -p

  3. 如果您启用了UFW防火墙服务,您需要在任一安全网关的/etc/ufw/before.rules配置文件中,在过滤规则之前添加以下规则。

站点1网关(tecmint-devgateway) plaintext *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.2.0/24 -d 192.168.0.0/24 -j MASQUERADE COMMIT

站点2网关(tecmint-prodgateway) plaintext *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE COMMIT

  1. 添加防火墙规则后,通过以下命令重新启动UFW以应用新更改。 bash sudo ufw disable sudo ufw enable

第二步:在Debian和Ubuntu中安装strongSwan

  1. 在两个安全网关上更新您的软件包缓存,并使用APT包管理器安装strongswan包。 bash sudo apt update sudo apt install strongswan

  2. 安装完成后,安装程序脚本将启动strongswan服务,并使其在系统启动时自动启动。您可以使用以下命令检查其状态及是否已启用。 bash sudo systemctl status strongswan.service sudo systemctl is-enabled strongswan.service

第三步:配置安全网关

  1. 接下来,您需要使用/etc/ipsec.conf配置文件配置安全网关。

站点1网关(tecmint-devgateway) bash sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig sudo nano /etc/ipsec.conf 将以下配置复制并粘贴到文件中。 plaintext config setup charondebug="all" uniqueids=yes conn devgateway-to-prodgateway type=tunnel auto=start keyexchange=ikev2 authby=secret left=10.20.20.1 leftsubnet=192.168.0.101/24 right=10.20.20.3 rightsubnet=10.0.2.15/24 ike=aes256-sha1-modp1024! esp=aes256-sha1! aggressive=no keyingtries=%forever ikelifetime=28800s lifetime=3600s dpddelay=30s dpdtimeout=120s dpdaction=restart

站点2网关(tecmint-prodgateway) bash sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig sudo nano /etc/ipsec.conf 将以下配置复制并粘贴到文件中。 plaintext config setup charondebug="all" uniqueids=yes conn prodgateway-to-devgateway type=tunnel auto=start keyexchange=ikev2 authby=secret left=10.20.20.3 leftsubnet=10.0.2.15/24 right=10.20.20.1 rightsubnet=192.168.0.101/24 ike=aes256-sha1-modp1024! esp=aes256-sha1! aggressive=no keyingtries=%forever ikelifetime=28800s lifetime=3600s dpddelay=30s dpdtimeout=120s dpdaction=restart

  1. 这里是每个配置参数的含义:
  2. config setup – 指定适用于所有连接的IPSec通用配置。
  3. charondebug – 定义应记录多少调试输出。
  4. uniqueids – 指定特定参与者ID是否应保持唯一。
  5. conn prodgateway-to-devgateway – 定义连接名称。
  6. type – 定义连接类型。
  7. auto – 在IPSec启动或重新启动时如何处理连接。
  8. keyexchange – 定义要使用的IKE协议版本。
  9. authby – 定义对等方如何相互认证。
  10. left – 定义左侧参与者的公共网络接口IP地址。
  11. leftsubnet – 说明左侧参与者后面的私有子网。
  12. right – 指定右侧参与者的公共网络接口IP地址。
  13. rightsubnet – 说明右侧参与者后面的私有子网。
  14. ike – 定义要使用的IKE/ISAKMP SA加密/认证算法列表。
  15. esp – 定义要用于连接的ESP加密/认证算法列表。
  16. aggressive – 指定是否使用攻击模式或主模式。
  17. keyingtries – 指定应尝试协商连接的次数。
  18. ikelifetime – 指定连接的密钥通道在重新协商之前应持续多长时间。
  19. lifetime – 定义连接的特定实例应持续多长时间,从成功协商到过期。
  20. dpddelay – 指定发送R_U_THERE消息/信息交换的时间间隔。
  21. dpdtimeout – 指定超时间隔,在此期间如果没有活动,则删除与对等方的所有连接。
  22. dpdaction – 定义如何使用死对等检测(DPD)协议来管理连接。

第四步:配置PSK以进行对等认证

  1. 配置完两个安全网关后,使用以下命令生成用于对等方的安全PSK。 bash head -c 24 /dev/urandom | base64

  2. 接下来,在两个网关的/etc/ipsec.secrets文件中添加PSK。 bash sudo vim /etc/ipsec.secrets 复制并粘贴以下行。 ```plaintext ------- 站点1网关(tecmint-devgateway) -------

    10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

    ------- 站点2网关(tecmint-prodgateway) -------

    10.20.20.3 10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac=" ```

  3. 重新启动IPSec程序并检查其状态以查看连接。 bash sudo ipsec restart sudo ipsec status

  4. 最后,通过运行ping命令验证您是否可以从任一安全网关访问私有子网。 bash ping 192.168.0.101 ping 10.0.2.15

  5. 此外,您可以通过以下方式停止和启动IPSec。 bash sudo ipsec stop sudo ipsec start

  6. 要了解更多有关IPSec命令的信息,以手动启动连接等,请查看IPSec帮助页面。 bash ipsec --help

总结

本文介绍了如何在Ubuntu和Debian服务器上使用strongSwan设置站点到站点的IPSec VPN,两个安全网关配置为使用PSK相互认证。如果您有任何问题或想法,请通过下面的反馈表与我们联系。


希望这篇文章对您有所帮助!如果您有其他问题,欢迎随时提问。

更新时间