连接到 strongSwan 同级
您可以使用 IBM Cloud VPN for VPC 通过 VPN 通道将 VPC 安全地连接到内部网络。 本主题提供有关如何配置 strongSwan VPN 网关以连接 VPN for VPC 的指导。
这些指示信息基于 Linux strongSwan U5.3.5/K4.4.0-133-generic。
在继续连接到本地同级之前,请阅读 VPN 网关限制。
转到 /etc 目录,创建一个新的自定义隧道配置文件并命名(如 ipsec.abc.conf
)。 通过添加以下行,编辑 /etc/ipsec.conf
文件以包含新的 ipsec.abc.conf
文件:
include /etc/ipsec.abc.conf
当 strongSwan VPN 从 VPN for VPC接收连接请求时,strongSwan 使用 IPsec 阶段 1 参数来建立安全连接并认证 VPN for VPC 网关。 然后,如果安全策略允许连接,strongSwan VPN 将使用 IPsec 第 2 阶段参数建立隧道,并应用 IPsec 安全策略。 密钥管理、认证和安全服务均通过 IKE 协议动态协商。
要支持这些功能,必须在 strongSwan VPN 上执行以下一般配置步骤:
- 定义 strongSwan 验证 VPN for VPC 和建立安全连接所需的第 1 阶段参数。
- 使用 VPN for VPC 定义 strongSwan 创建 VPN 隧道所需的第 2 阶段参数。
将基于 IBM 策略的 VPN 连接到 strongSwan 同级
使用以下配置:
-
在身份验证中选择
IKEv2
。 -
在第 1 阶段提案中启用
DH-group 2
。 -
在第 1 阶段提案中设置
lifetime = 36000
。 -
在第二阶段建议中禁用 PFS。
-
在第 2 阶段提案中设置
lifetime = 10800
。 -
在第 2 阶段建议中输入您的对等网络和子网络信息。
下面的示例定义了内部部署子网
10.160.26.64/26
(其 strongSwan VPN 网关的 IP 地址为169.45.74.119
)和 VPC 子网192.168.17.0/28
(其 VPN for VPC 网关的 IP 地址为169.61.181.116
)之间的连接。vim /etc/ipsec.abc.conf conn all type=tunnel auto=start #aggressive=no esp=aes256-sha256! ike=aes256-sha256-modp2048! left=%any leftsubnet=10.160.26.64/26 rightsubnet=192.168.17.0/28 right=169.61.181.116 leftauth=psk rightauth=psk leftid="169.45.74.119" keyexchange=ikev2 rightid="169.61.181.116" lifetime=10800s ikelifetime=36000s dpddelay=30s dpdaction=restart dpdtimeout=120s
-
在
/etc/ipsec.secrets
中设置预共享密钥:vim ipsec.secrets # This file holds shared secrets or RSA private keys for authentication. 169.45.74.119 169.61.181.116 : PSK "******"
-
在配置文件完成运行后,重新启动 strongSwan VPN。
ipsec restart
将基于路由的 IBM VPN 连接到 strongSwan 对等点
下面的配置示例显示了如何在 strongSwan 和 VPN for VPC 之间设置两个基于路由的隧道。
-
要启用 IP 转发,请输入以下命令:
sudo sysctl -w net.ipv4.conf.all.forwarding=1
-
创建一个名为
/etc/strongswan.d/charon-no-route-install.conf
的文件,并添加以下内容:charon { install_routes = no }
-
要配置 VPN 连接,请更新
/etc/ipsec.abc.conf
文件。 在下面的示例中,VPN 网关有两个公共 IP(135.90.134.86
、135.90.134.87
)。strongSwan 服务器 IP 是169.59.212.125
。 该配置创建了两个连接。leftid
是 strongSwan 服务器的公共 IP,而right
和rightid
代表 VPN 网关的公共 IP。conn peer_135.90.134.86 keyexchange=ikev2 left=%any leftid=169.59.212.125 leftsubnet=0.0.0.0/0 rightsubnet=0.0.0.0/0 right=135.90.134.86 rightid=135.90.134.86 auto=start ike=aes256-aes192-aes128-sha512-sha384-sha256-modp2048s256-modp2048s224-modp1024s160-ecp521-ecp384-ecp256-modp8192-modp6144-modp4096-modp3072-modp2048-x25519! ikelifetime=36000s esp=aes256gcm16-aes192gcm16-aes128gcm16,aes256-aes192-aes128-sha512-sha384-sha256! lifetime=10800s type=tunnel leftauth=psk rightauth=psk dpdaction = restart dpddelay = 10s mark = 1 conn peer_135.90.134.87 keyexchange=ikev2 left=%any leftid=169.59.212.125 leftsubnet=0.0.0.0/0 rightsubnet=0.0.0.0/0 right=135.90.134.87 rightid=135.90.134.87 auto=start ike=aes256-aes192-aes128-sha512-sha384-sha256-modp2048s256-modp2048s224-modp1024s160-ecp521-ecp384-ecp256-modp8192-modp6144-modp4096-modp3072-modp2048-x25519! ikelifetime=36000s esp=aes256gcm16-aes192gcm16-aes128gcm16,aes256-aes192-aes128-sha512-sha384-sha256! lifetime=10800s type=tunnel leftauth=psk rightauth=psk dpdaction = restart dpddelay = 10s mark = 2
-
在
/etc/ipsec.secrets
文件中设置预共享密钥,并将******
替换为真正的预共享密钥值:169.59.212.125 135.90.134.86 : PSK "******" 169.59.212.125 135.90.134.86 : PSK "******"
-
在服务器上创建虚拟接口,并将 VTI 接口状态设置为
up
。 将mark_num
替换为mark
的值(如步骤 3 所定义)。local_ip
是 strongSwan 服务器的 私有 IP,remote_ip
是 VPN 网关公共 IP 地址的 公共 IP。# sample: sudo ip tunnel add vti<mark_num> local <local_ip> remote <remote_ip> mode vti key <mark_num> sudo ip tunnel add vti1 local 10.240.2.11 remote 135.90.134.86 mode vti key 1 sudo ip tunnel add vti1 local 10.240.2.11 remote 135.90.134.87 mode vti key 2 sudo ip link set vti1 up sudo ip link set vti2 up
-
在 strongSwan 服务器上添加路由。 在本例中,
10.240.0.0/24
是要连接的 VPN 网关的子网,VTI 名称是步骤 5 中的 VTI 名称。sudo ip route add 10.240.0.0/24 proto static nexthop dev vti1 nexthop dev vti2
-
在配置文件完成运行后,重新启动 strongSwan VPN。
ipsec restart