
# 用户数据中心侧操作步骤
#### 约束与限制
本文操作步骤以运行"CentOS 8.2 64位操作系统"的strongSwan设备为例。其他操作系统，请参考strongSwan官方文档。
#### 操作步骤
1. 在strongSwan官网下载安装包。 
   不同strongSwan版本的安装配置方式可能存在差异，本示例以strongSwan 5.9.10版本为例。
   
   
2. 安装strongSwan软件。 
   1. 以**root**用户登录CentOS 8.2系统，打开命令行窗口。
   
   2. 将strongSwan安装包上传到CentOS系统目录下，如**/opt/**。
   
   3. 执行以下命令，进入安装包所在目录。 cd /opt/
      
   
   4. 执行以下命令，安装strongSwan。 rpm -ivh strongswan-5.9.10-1.el8.x86_64.rpm --force --nodeps
      ![](https://support.huaweicloud.com/admin-vpn/public_sys-resources/note_3.0-zh-cn.png)
      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。
            }
            remote {
               auth = psk              # 对端认证方式选择PSK方式，即华为云使用预共享密钥方式。
               id = 1.1.1.2            # 华为云连接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      # 指定隧道2对端的IP地址为华为云连接2的网关IP地址，即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。
            }
            remote {
               auth = psk           # 对端认证方式选择PSK方式，即华为云使用预共享密钥方式。
               id = 2.2.2.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生命周期，需与华为云连接2的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
      ......
      ......
      ```
      
   
   
   
   
 
