开发者社区> 问答> 正文

如何在strongSwan网关上配置到本地IDC客户端的路由?

如何在strongSwan网关上配置到本地IDC客户端的路由?

展开
收起
邂逅青青 2024-08-13 15:40:13 46 0
8 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    开启IP转发:

    为了使strongSwan设备能够转发数据包,您需要启用系统的IP转发功能。这可以通过临时命令完成:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    为了使这一更改永久生效,编辑/etc/sysctl.conf文件:
    bash
    sudo vi /etc/sysctl.conf
    在文件中添加以下行并保存:
    net.ipv4.ip_forward = 1
    之后,使配置生效:
    sudo sysctl -p
    配置路由规则:

    需要在strongSwan设备上添加路由规则,以确保本地数据中心客户端到阿里云VPC以及从VPC返回的流量能够正确转发。具体命令取决于您的网络配置,但一般形式如下:
    为本地数据中心到阿里云VPC添加路由(假设阿里云VPC的网段为192.168.10.0/24):
    sudo ip route add 192.168.10.0/24 via <阿里云隧道出口IP>
    为阿里云VPC到本地数据中心添加路由(假设本地数据中心的网段为172.16.2.0/24): 这一步通常在阿里云的VPC或VBR上配置,而不是直接在strongSwan设备上,但确保strongSwan设备能正确处理返回流量也是必要的,这通常通过IPsec隧道自动完成。

    2024-10-31 09:29:09
    赞同 展开评论 打赏
  • image.png
    登录strongSwan设备的命令行界面。
    执行以下命令安装strongSwan软件。

    sudo yum install -y strongswan-5.9.10
    

    为strongSwan设备开启流量转发功能。

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

    创建2个虚拟网络接口,用于建立IPsec-VPN隧道。

    sudo ip link add ipsec0 type xfrm dev eth0 if_id 42 # 创建隧道1 XFRM虚拟网络接口,接口ID为42,底层接口为公网接口eth0。
    sudo ip link add ipsec1 type xfrm dev eth0 if_id 43 # 创建隧道2 XFRM虚拟网络接口,接口ID为43,底层接口为公网接口eth0。
    sudo ip link set ipsec0 up # 启动隧道1 XFRM虚拟网络接口。
    sudo ip link set ipsec1 up # 启动隧道2 XFRM虚拟网络接口。
    

    修改strongSwan配置文件。
    执行以下命令打开strongSwan配置文件。

    sudo vi /etc/strongswan/swanctl/swanctl.conf
    

    按下i键,进入编辑模式。
    根据以下信息在配置文件中添加VPN配置,文件中原有的配置需全部删除。

    connections {
       vco1 {                            # 添加IPsec-VPN隧道1的VPN配置
          version = 2                    # 指定IKE版本,需与阿里云隧道1的IKE版本保持一致,2表示IKEv2。
          local_addrs  = 8.XX.XX.99      # 指定需要建立IPsec-VPN连接的公网IP地址。
          remote_addrs = 8.XX.XX.149     # 指定隧道1对端的IP地址为阿里云隧道1的网关IP地址,即IPsec地址1。
          dpd_delay = 10
          rekey_time = 84600             # 指定隧道1的SA生存周期,需与阿里云隧道1 IKE配置中的SA生存周期保持一致。
          over_time = 1800               
          proposals = aes-sha1-modp1024  # 指定隧道1的加密算法、认证算法、DH分组,需与阿里云隧道1 IKE配置中的加密算法、认证算法、DH分组保持一致,group2对应的是modp1024。
          encap = yes
    
          local {
             auth = psk                  # 本段认证方式选择PSK模式,即预共享密钥方式。
             id = 8.XX.XX.99             # 指定本端ID,需与阿里云隧道1的RemoteId保持一致。
          }
          remote {
             auth = psk                  # 对端认证方式选择PSK方式,即阿里云使用预共享密钥方式。
             id = 8.XX.XX.149            # 指定对端ID,需与阿里云隧道1的LocalId保持一致。
          }
          children {
             vco_child1 {
                local_ts  = 0.0.0.0/0    # 阿里云目的路由模式对应的感兴趣流是0.0.0.0/0。
                remote_ts = 0.0.0.0/0    # 阿里云目的路由模式对应的感兴趣流是0.0.0.0/0。
                mode = tunnel
                rekey_time = 85500
                life_time = 86400        # 指定隧道1的SA生存周期,需与阿里云隧道1 IPsec配置中的SA生存周期保持一致。
                dpd_action = restart
                start_action = start
                close_action = start
                esp_proposals = aes-sha1-modp1024   # 指定隧道1的加密算法、认证算法、DH分组,需与阿里云隧道1 IPsec配置中的加密算法、认证算法、DH分组保持一致,group2对应的是modp1024。
    
                if_id_out = 42           # 指定隧道1的出接口和入接口为隧道1 XFRM虚拟网络接口。
                if_id_in = 42
                updown = /root/connect_1.sh         # 根据隧道1的UP和DOWN状态执行/root/connect_1.sh脚本,以配置路由。
             }
          }
       }
      vco2 {                             # 添加IPsec-VPN隧道2的VPN配置
          version = 2                    # 指定IKE版本,需与阿里云隧道2的IKE版本保持一致,2表示IKEv2。
          local_addrs  = 8.XX.XX.99      # 指定需要建立IPsec-VPN连接的公网IP地址。
          remote_addrs = 8.XX.XX.137     # 指定隧道 址,即IPsec地址2。
          dpd_delay = 10
          rekey_time = 84600             # 指定隧道2的SA生存周期,需与阿里云隧道2 IKE配置中的SA生存周期保持一致。
          over_time = 1800               # 
          proposals = aes-sha1-modp1024  # 指定隧道2的加密算法、认证算法、DH分组,需与阿里云隧道2 IKE配置中的加密算法、认证算法、DH分组保持一致,group2对应的是modp1024。
          encap = yes
    
          local {
             auth = psk                  # 本端认证方式选择PSK方式,即预共享密钥方式。
             id = 8.XX.XX.99             # 指定本端ID,需与阿里云隧道2的RemoteId保持一致。
          }
          remote {
             auth = psk                  # 对端认证方式选择PSK方式,即阿里云使用预共享密钥方式。
             id = 8.XX.XX.137            # 指定对端ID,需与阿里云隧道2的LocalId保持一致。
          }
          children {
             vco_child2 {
                local_ts  = 0.0.0.0/0    # 阿里云目的路由模式对应的感兴趣流是0.0.0.0/0
                remote_ts = 0.0.0.0/0    # 阿里云目的路由模式对应的感兴趣流是0.0.0.0/0
                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。
                if_id_out = 43           # 指定隧道2的出接口和入接口为隧道2 XFRM虚拟网络接口。
                if_id_in = 43
                updown = /root/connect_2.sh           # 根据隧道2的UP和DOWN状态执行/root/connect_2.sh脚本,以配置路由。
             }
          }
       }
    }
    
    secrets {
       ike-vco1 {
          secret = 123456****            # 指定隧道1的预共享密钥,需与阿里云隧道1的预共享密钥保持一致。
       }
       ike-vco2 {
          secret = 123456****            # 指定隧道2的预共享密钥,需与阿里云隧道2的预共享密钥保持一致。
       }
    }
    

    按下Esc键,退出编辑模式,然后输入:wq保存配置。

    根据以下信息创建脚本以配置路由,控制从本地数据中心去往阿里云VPC(10.0.0.0/16)的流量传输。

    执行以下命令编辑/root/connect_1.sh脚本。

    sudo vi /root/connect_1.sh
    

    image.png

    image.png
    参考链接
    https://help.aliyun.com/zh/vpn/sub-product-ipsec-vpn/user-guide/configure-strongswan?spm=a2c6h.13066369.0.0.10f0155eJxOJXv
    回答不易请采纳

    2024-10-29 10:25:07
    赞同 展开评论 打赏
  • 深耕大数据和人工智能

    在strongSwan网关上配置到本地IDC客户端的路由,需要经过以下几个步骤:
    安装和配置strongSwan
    安装strongSwan:使用包管理器安装strongSwan。例如,在基于Debian的系统上可以使用命令sudo apt-get install strongswan,在基于Red Hat的系统上可以使用命令sudo yum install strongswan。
    配置ipsec.conf:编辑/etc/strongswan/ipsec.conf文件,添加或修改以下内容:

    plaintext
    复制代码
    config setup
    uniqueids=never
    conn %default
    authby=psk #使用预共享密钥认证方式
    type=tunnel
    conn tomyidc
    keyexchange=ikev1 #IPsec连接使用的IKE协议的版本
    left= #本地网关设备的公网IP地址
    leftsubnet=/ #本地IDC待和VPC互通的私网网段
    leftid= #本地网关设备的标识
    right= #VPN网关的公网IP地址
    rightsubnet=/ #VPC待和本地IDC互通的私网网段
    rightid= #VPN网关的标识
    auto=route
    ike=aes-sha1-modp1024 #IPsec连接中IKE协议的加密算法-认证算法-DH分组
    ikelifetime=86400s #IKE协议的SA生命周期
    esp=aes-sha1-modp1024 #IPsec连接中IPsec协议的加密算法-认证算法-DH分组
    lifetime=86400s #IPsec协议的SA生命周期
    type=tunnel

    配置ipsec.secrets:编辑/etc/strongswan/ipsec.secrets文件,添加或修改以下内容:

    plaintext
    复制代码

    : PSK

    启用IP转发:执行以下命令打开IP转发功能:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    配置静态路由

    添加静态路由:在strongSwan服务器上,使用ip route add命令添加静态路由。例如,如果本地IDC的网络是10.34.0.0/24,网关是192.168.100.1,您可以执行:
    ip route add 10.34.0.0/24 via 192.168.100.1

    重启网络服务

    重启strongSwan服务:执行以下命令重启strongSwan服务,使配置生效:
    systemctl restart strongswan
    重启网络服务(可选):有时候,添加路由后需要重启网络服务以应用更改。
    image.png

    总的来说,通过以上步骤,可以在strongSwan网关上成功配置到本地IDC客户端的路由。需要注意的是,具体的配置可能会根据实际环境和需求有所不同,因此在实际操作中需要根据实际情况进行调整。

    2024-10-22 10:41:46
    赞同 展开评论 打赏
  • image.png

    1、执行以下命令打开ipsec.conf配置文件。

    vi /etc/strongswan/ipsec.conf
    

    2、请参见以下配置,更改ipsec.conf配置文件。

    ipsec.conf - strongSwan IPsec configuration file
    basic configuration
     config setup
         uniqueids=never
     conn %default
         authby=psk                  #使用预共享密钥认证方式
         type=tunnel
     conn tomyidc
         keyexchange=ikev1           #IPsec连接使用的IKE协议的版本
         left=59.XX.XX.70            #本地网关设备的公网IP地址
         leftsubnet=172.16.2.0/24    #本地IDC待和VPC互通的私网网段
         leftid=59.XX.XX.70          #本地网关设备的标识
         right=119.XX.XX.125         #VPN网关的公网IP地址
         rightsubnet=192.168.10.0/24 #VPC待和本地IDC互通的私网网段
         rightid=119.XX.XX.125       #VPN网关的标识
         auto=route
         ike=aes-sha1-modp1024       #IPsec连接中IKE协议的加密算法-认证算法-DH分组
         ikelifetime=86400s          #IKE协议的SA生命周期
         esp=aes-sha1-modp1024       #IPsec连接中IPsec协议的加密算法-认证算法-DH分组
         lifetime=86400s             #IPsec协议的SA生命周期
         type=tunnel
    

    3、配置ipsec.secrets文件。
    执行以下命令打开ipsec.secrets文件。

    vi /etc/strongswan/ipsec.secrets
    

    添加以下配置。
    说明 以下两种配置方式,任选一种即可。
    方式一:

    59.XX.XX.70 119.XX.XX.125 : PSK ff123TT****   #ff123TT****为IPsec连接的预共享密钥,本地IDC侧和VPN网关侧的预共享密钥需保持一致。
    

    方式二:

    119.XX.XX.125 : PSK ff123TT****   #ff123TT****为IPsec连接的预共享密钥,本地IDC侧和VPN网关侧的预共享密钥需保持一致。
    

    4、打开系统转发配置。

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

    5、执行以下命令启动strongSwan服务。

    systemctl enable strongswan
    systemctl start strongswan
    

    6、在您本地IDC侧,设置本地IDC客户端到strongSwan本地网关设备及strongSwan本地网关设备到本地IDC客户端的路由。

    7、如果您使用strongSwan建立了3条(不包含3条)以上的IPsec连接,您需要修改/etc/strongswan/strongswan.d/charon.conf中的配置。
    删除max_ikev1_exchanges = 3 命令前的注释符号,启用此命令,并修改命令中参数的值大于您建立的IPsec连接数。
    例如:您使用strongSwan建立了4条IPsec连接,您可以修改该命令为max_ikev1_exchanges = 5 。

    ——参考链接

    2024-10-19 08:15:33
    赞同 展开评论 打赏
  • 使用IPsec-VPN实现本地数据中心IDC(Internet Data Center)和阿里云VPC之间的网络互通时,在阿里云侧完成VPN网关的配置后,您还需在本地数据中心的网关设备中添加VPN配置才能成功在本地数据中心和阿里云VPC之间建立IPsec-VPN连接。本文介绍如何使用strongSwan在本地网关设备中添加VPN配置。

    image.png

    参考文档https://help.aliyun.com/zh/vpn/sub-product-ipsec-vpn/user-guide/configure-strongswan

    2024-10-15 14:34:10
    赞同 展开评论 打赏
  • 使用strongSwan作为网关来配置到本地IDC客户端的路由,您需要在strongSwan服务器上添加静态路由,以便通过IPsec隧道转发到本地IDC的流量。以下是一个基本步骤:
    确定本地IDC的网络信息:了解本地IDC的IP地址范围和网关。
    配置路由:在strongSwan服务器上,使用ip route add命令添加静态路由。例如,如果本地IDC的网络是10.34.0.0/24,网关是192.168.100.1,您可以执行:
    image.png
    设置IPsec策略:确保IPsec策略允许通过隧道转发到本地IDC的流量。
    重启网络服务:有时候,添加路由后需要重启网络服务以应用更改:
    image.png

    2024-10-15 10:53:58
    赞同 展开评论 打赏
  • 技术浪潮涌向前,学习脚步永绵绵。

    在 strongSwan 网关上配置到本地 IDC 客户端的路由,通常涉及到配置 IPsec 或 IKEv2 隧道,并设置适当的路由规则。以下是一个基本的步骤指南,帮助你在 strongSwan 网关上配置到本地 IDC 客户端的路由。
    1111.png

    1. 安装 strongSwan

    如果你还没有安装 strongSwan,可以通过包管理器进行安装。例如,在基于 Debian 的系统上:

    sudo apt-get update
    sudo apt-get install strongswan
    

    在基于 Red Hat 的系统上:

    sudo yum install strongswan
    

    2. 配置 strongSwan

    strongSwan 的配置文件通常位于 /etc/strongswan/ipsec.conf/etc/strongswan/ipsec.secrets

    a. 编辑 ipsec.conf

    打开 /etc/strongswan/ipsec.conf 文件并添加或修改以下内容:

    config setup
        charondebug="ike 1, knl 1, cfg 0"
        uniqueids=yes
    
    conn my-connection
        left=<your-gateway-ip>
        leftid=@<your-gateway-id>
        right=<local-idc-client-ip>
        rightid=@<local-idc-client-id>
        type=tunnel
        authby=secret
        ike=aes256-sha256-modp2048!
        esp=aes256-sha256!
        keyingtries=%forever
        dpdaction=clear
        dpddelay=30s
        auto=start
    
    • <your-gateway-ip>:你的 strongSwan 网关的公网 IP 地址。
    • <your-gateway-id>:你的 strongSwan 网关的标识符(通常是 FQDN 或 IP 地址)。
    • <local-idc-client-ip>:本地 IDC 客户端的公网 IP 地址。
    • <local-idc-client-id>:本地 IDC 客户端的标识符(通常是 FQDN 或 IP 地址)。

    b. 编辑 ipsec.secrets

    打开 /etc/strongswan/ipsec.secrets 文件并添加预共享密钥(PSK):

    : PSK "<your-pre-shared-key>"
    
    • <your-pre-shared-key>:你和本地 IDC 客户端之间约定的预共享密钥。

    3. 配置路由

    你需要在 strongSwan 网关上配置静态路由,以便将流量转发到本地 IDC 客户端的内网地址。

    a. 编辑路由表

    打开 /etc/iproute2/rt_tables 文件,添加一个新的路由表(可选,但推荐):

    100 my-tunnel
    

    b. 添加路由规则

    使用 ip rule 命令添加路由规则:

    sudo ip rule add from <your-gateway-ip> table my-tunnel
    sudo ip rule add to <your-gateway-ip> table my-tunnel
    

    c. 添加路由条目

    使用 ip route 命令添加路由条目:

    sudo ip route add <local-idc-client-subnet> via <local-idc-client-ip> dev <tunnel-interface> table my-tunnel
    
    • <local-idc-client-subnet>:本地 IDC 客户端的内网子网。
    • <local-idc-client-ip>:本地 IDC 客户端的公网 IP 地址。
    • <tunnel-interface>:IPsec 隧道接口名称(例如 ipsec0)。

    4. 重启 strongSwan 服务

    保存所有配置文件后,重启 strongSwan 服务以应用更改:

    sudo systemctl restart strongswan
    

    5. 验证连接

    你可以使用 ipsec status 命令来检查隧道状态:

    sudo ipsec status
    

    如果一切正常,你应该能看到隧道处于 ESTABLISHED 状态。

    6. 测试连通性

    使用 pingtraceroute 命令测试从 strongSwan 网关到本地 IDC 客户端内网地址的连通性:

    ping <local-idc-client-internal-ip>
    
    • <local-idc-client-internal-ip>:本地 IDC 客户端的内网 IP 地址。

    通过以上步骤,你应该能够在 strongSwan 网关上成功配置到本地 IDC 客户端的路由。如果有任何问题,请检查日志文件 /var/log/syslog/var/log/strongswan.log 以获取更多信息。

    2024-10-14 18:30:45
    赞同 展开评论 打赏
  • system ctl enable strongswan system ctl start strongswan 在您本地IDC侧,设置本地IDC客户端到strongSwan本地网关设备及strongSwan本地网关设备到本地IDC客户端的路由。 如果您使用strongSwan建立了3条(不包含3条)以上的IPsec连接,您需要修改/etc/strongswan/strongswan.d/charon.conf中的配置。

    image.png
    参考文档https://www.ctyun.cn/document/10026758/10238560

    2024-10-14 16:26:41
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
阿里云容器 AHAS Sentinel 网关流控揭秘 立即下载
阿里Tengine网关最佳实践 立即下载
《MSE 微服务网关》 立即下载