如何在strongSwan网关上配置到本地IDC客户端的路由?
开启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隧道自动完成。
登录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
在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
重启网络服务(可选):有时候,添加路由后需要重启网络服务以应用更改。
总的来说,通过以上步骤,可以在strongSwan网关上成功配置到本地IDC客户端的路由。需要注意的是,具体的配置可能会根据实际环境和需求有所不同,因此在实际操作中需要根据实际情况进行调整。
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 。
——参考链接。
使用IPsec-VPN实现本地数据中心IDC(Internet Data Center)和阿里云VPC之间的网络互通时,在阿里云侧完成VPN网关的配置后,您还需在本地数据中心的网关设备中添加VPN配置才能成功在本地数据中心和阿里云VPC之间建立IPsec-VPN连接。本文介绍如何使用strongSwan在本地网关设备中添加VPN配置。
参考文档https://help.aliyun.com/zh/vpn/sub-product-ipsec-vpn/user-guide/configure-strongswan
使用strongSwan作为网关来配置到本地IDC客户端的路由,您需要在strongSwan服务器上添加静态路由,以便通过IPsec隧道转发到本地IDC的流量。以下是一个基本步骤:
确定本地IDC的网络信息:了解本地IDC的IP地址范围和网关。
配置路由:在strongSwan服务器上,使用ip route add命令添加静态路由。例如,如果本地IDC的网络是10.34.0.0/24,网关是192.168.100.1,您可以执行:
设置IPsec策略:确保IPsec策略允许通过隧道转发到本地IDC的流量。
重启网络服务:有时候,添加路由后需要重启网络服务以应用更改:
在 strongSwan 网关上配置到本地 IDC 客户端的路由,通常涉及到配置 IPsec 或 IKEv2 隧道,并设置适当的路由规则。以下是一个基本的步骤指南,帮助你在 strongSwan 网关上配置到本地 IDC 客户端的路由。
如果你还没有安装 strongSwan,可以通过包管理器进行安装。例如,在基于 Debian 的系统上:
sudo apt-get update
sudo apt-get install strongswan
在基于 Red Hat 的系统上:
sudo yum install strongswan
strongSwan 的配置文件通常位于 /etc/strongswan/ipsec.conf
和 /etc/strongswan/ipsec.secrets
。
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 地址)。ipsec.secrets
打开 /etc/strongswan/ipsec.secrets
文件并添加预共享密钥(PSK):
: PSK "<your-pre-shared-key>"
<your-pre-shared-key>
:你和本地 IDC 客户端之间约定的预共享密钥。你需要在 strongSwan 网关上配置静态路由,以便将流量转发到本地 IDC 客户端的内网地址。
打开 /etc/iproute2/rt_tables
文件,添加一个新的路由表(可选,但推荐):
100 my-tunnel
使用 ip rule
命令添加路由规则:
sudo ip rule add from <your-gateway-ip> table my-tunnel
sudo ip rule add to <your-gateway-ip> table my-tunnel
使用 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
)。保存所有配置文件后,重启 strongSwan 服务以应用更改:
sudo systemctl restart strongswan
你可以使用 ipsec status
命令来检查隧道状态:
sudo ipsec status
如果一切正常,你应该能看到隧道处于 ESTABLISHED
状态。
使用 ping
或 traceroute
命令测试从 strongSwan 网关到本地 IDC 客户端内网地址的连通性:
ping <local-idc-client-internal-ip>
<local-idc-client-internal-ip>
:本地 IDC 客户端的内网 IP 地址。通过以上步骤,你应该能够在 strongSwan 网关上成功配置到本地 IDC 客户端的路由。如果有任何问题,请检查日志文件 /var/log/syslog
或 /var/log/strongswan.log
以获取更多信息。
system ctl enable strongswan system ctl start strongswan 在您本地IDC侧,设置本地IDC客户端到strongSwan本地网关设备及strongSwan本地网关设备到本地IDC客户端的路由。 如果您使用strongSwan建立了3条(不包含3条)以上的IPsec连接,您需要修改/etc/strongswan/strongswan.d/charon.conf中的配置。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。