更新时间:2025-05-14 GMT+08:00
分享

用户数据中心侧操作步骤

约束与限制

本文操作步骤以运行“CentOS 8.2 64位操作系统”的strongSwan设备为例。其他操作系统,请参考strongSwan官方文档。

操作步骤

  1. 在strongSwan官网下载安装包。

    不同strongSwan版本的安装配置方式可能存在差异,本示例以strongSwan 5.9.10版本为例。

  2. 安装strongSwan软件。

    1. root用户登录CentOS 8.2系统,打开命令行窗口。
    2. 将strongSwan安装包上传到待安装strongSwan的服务器目录,如/opt/
    3. 执行以下命令,进入安装包所在目录。

      cd /opt/

    4. 执行以下命令,安装strongSwan。

      rpm –ivh strongswan-5.9.10-1.el8.x86_64.rpm --force --nodeps

      strongswan-5.9.10-1.el8.x86_64.rpm为安装包的名称,请根据实际替换。

      回显如下粗体信息,表示安装成功。
      Verifying...                          ################################# [100%]
      Preparing...                          ################################# [100%]
      Updating / installing...
         1:strongswan-5.9.10-1.el8          ################################# [100%]
    5. 执行以下命令,查看strongSwan版本。

      strongswan version

      回显如下粗体信息:

      Linux strongSwan U5.9.10/K4.18.0-348.7.1.el8_5.x86_64
      University of Applied Sciences Rapperswil, Switzerland

  3. 放通防火墙策略。

    • 执行以下命令,放通ESP协议(IP协议号50)。

      iptables -I INPUT -p 50 -j ACCEPT

    • 执行以下命令,放通UDP500端口。

      iptables -I INPUT -p udp --dport 500 -j ACCEPT

    • 执行以下命令,放通UDP4500端口。

      iptables -I INPUT -p udp --dport 4500 -j ACCEPT

  4. 开启流量转发功能。

    执行以下命令,开启流量转发功能。

    echo 1 > /proc/sys/net/ipv4/ip_forward

    上述命令为临时性命令,strongSwan设备重启后需重新配置该命令。您可以参见以下内容永久开启strongSwan设备的流量转发功能。

    1. 执行以下命令,打开/etc/sysctl.conf文件。

      vi /etc/sysctl.conf

    2. 在文件中添加如下配置。
      net.ipv4.ip_forward = 1
    3. 按“ESC”后,输入:wq,按“Enter”。

      保存设置并退出编辑器。

    4. 执行以下命令,使配置生效。

      sudo sysctl -p

  5. 配置双隧道。

    1. 执行以下命令,备份原始strongSwan配置文件。

      mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak

    2. 执行以下命令,新建strongSwan配置文件。

      vi /etc/strongswan/swanctl/swanctl.conf

    3. 根据数据规划,添加如下配置。
      connections {
         vco1 {                  #添加IPsec-VPN隧道1的VPN配置
            version = 2          # 指定IKE版本,需与华为云隧道1的IKE版本保持一致,2表示IKEv2。
            local_addrs  = 172.16.0.195         # 本地ip地址
            remote_addrs = 1.1.1.2          # 指定隧道1对端的IP地址为华为云隧道1的网关IP地址,即IPsec地址1。
            dpd_delay = 10
            rekey_time = 86400               # 指定隧道1的SA生命周期,需与华为云隧道1 IKE配置中的SA生命周期保持一致。
            over_time = 1800               
            proposals = aes128-sha1-modp1024   # 指定隧道1的加密算法、认证算法、DH算法,需与华为云隧道1 IKE配置中的加密算法、认证算法、DH算法保持一致,group2对应的是modp1024。
            encap = yes
      
            local {
               auth = psk              # 本端认证方式选择PSK模式,即预共享密钥方式。
               id = 1.1.1.1           # 本地公网出口IP,需与华为云隧道1的公网IP保持一致。
            }
            remote {
               auth = psk              # 对端认证方式选择PSK方式,即华为云使用预共享密钥方式。
               id = 1.1.1.2            # 华为云侧IPsec地址1,需与华为云隧道1的主EIP保持一致。
            }
            children {
               vco_child1 { 
                  local_ts  = 172.16.0.0/16     # 本地侧感兴趣流,填写本地私网网段172.16.0.0/16。
                  remote_ts = 192.168.0.0/24     # 华为云侧感兴趣流,填写VPC网段192.168.0.0/24。
                  mode = tunnel
                  rekey_time = 85500
                  life_time = 86400          # 指定隧道1的SA生命周期,需与华为云隧道1 IPsec配置中的SA生命周期保持一致。
                  dpd_action = restart
                  start_action = start
                  close_action = start
                  esp_proposals = aes128-sha1-modp1024   # 指定隧道1的加密算法、认证算法、DH算法,需与华为云隧道1 IPsec配置中的加密算法、认证算法、DH算法保持一致,group2对应的是modp1024。
               }
            }
         }
        vco2 {                  # 添加IPsec-VPN隧道2的VPN配置
            version = 2          # 指定IKE版本,需与华为云隧道2的IKE版本保持一致,2表示IKEv2。
            local_addrs  = 172.16.0.195        # 本地IP地址
            remote_addrs = 2.2.2.2      # 指定隧道地址,即IPsec地址2。
            dpd_delay = 10
            rekey_time = 84600           # 指定隧道2的SA生命周期,需与华为云隧道2 IKE配置中的SA生命周期保持一致。
            over_time = 1800               
            proposals = aes128-sha1-modp1024       # 指定隧道2的加密算法、认证算法、DH算法,需与华为云隧道2 IKE配置中的加密算法、认证算法、DH算法保持一致,group2对应的是modp1024。
            encap = yes
      
            local {
               auth = psk          # 本端认证方式选择PSK方式,即预共享密钥方式。
               id = 1.1.1.1       # 本地公网出口IP,与华为云隧道2的公网IP保持一致。
            }
            remote {
               auth = psk           # 对端认证方式选择PSK方式,即华为云使用预共享密钥方式。
               id = 2.2.2.2         # 华为云侧IPsec地址2,需与华为云隧道2的备EIP保持一致。
            }
            children {
               vco_child2 {
                  local_ts  = 172.16.0.0/16     # 本地侧感兴趣流,填写本地私网网段172.16.0.0/16。
                  remote_ts = 192.168.0.0/24      # 华为云侧感兴趣流,填写VPC网段192.168.0.0/24。
                  mode = tunnel 
                  rekey_time = 85500
                  life_time = 86400        # 指定隧道2的SA生命周期,需与华为云隧道1 IPsec配置中的SA生命周期保持一致。
                  dpd_action = restart
                  start_action = start
                  close_action = start
                  esp_proposals = aes-sha1-modp1024     # 指定隧道2的加密算法、认证算法、DH算法,需与华为云隧道2 IPsec配置中的加密算法、认证算法、DH算法保持一致,group2对应的是modp1024。
               }
            }
         }
      }
      
      secrets {
         ike-vco1 {
            secret = Test@123   #  指定隧道1的预共享密钥,需与华为云隧道1的预共享密钥保持一致。
         }
         ike-vco2 {
            secret = Test@123   #  指定隧道2的预共享密钥,需与华为云隧道2的预共享密钥保持一致。
         }
      }
    4. 按“ESC”后,输入:wq,按“Enter”。

      保存设置并退出编辑器。

    5. 执行以下命令,重启strongSwan进程。

      systemctl restart strongswan

    6. 执行以下命令,查看隧道状态。

      watch swanctl --list-sas

      回显如下信息:

                                           ecs-b6b4-strongswan: Tue Mar 11 16:51:19 2025
      plugin 'sqlite': failed to load - sqlite_plugin_create not found and no plugin file available
      vco2: #2, ESTABLISHED, IKEv2, c2786dfe3bc7d7e0_i* 75e148eba08c17e1_r
      ......
      ......
      vco1: #1, ESTABLISHED, IKEv2, 3d3396aa3797c86f_i* d89bb869311c580c_r
      ......
      ......

相关文档