Libreswan是IPsec协议的开源实现,它基于FreeSwan项目,可以在RedHat的Linux发行版上使用该软件包。关于Libreswan的IPsec协议的两个部分的简要信息如下所述。
基于IPsec的VPN由Internet密钥交换协议和封装安全有效载荷(ESP)协议组成。
IKE
正如名称所示,IKE协议的目的是认证(使用的预共享密钥,公开密钥加密,自由连接)对等体来动态生成密钥并与对等体共享密钥。IPsec第二阶段的加密密钥也取决于IKE。Libreswan使用pluto程序实现IKE协议。
ESP
ESP协议是在Linux内核(NETEY XFRM)IPsec中实现的对等体约定策略的实际规范。
Libreswan功能
支持基于预共享密钥的认证。
支持基于公钥的认证。
支持IKE v1 v2版本的密钥交换。
支持NSS加密库。
还支持Xauth和DNSSec。
本文我们将使用Libreswan搭建点对点的IPSec网络,实现OP和OCI的内网互通。
1. 安装Libreswan
sudo yum -y install https://download.libreswan.org/binaries/rhel/7/x86_64/libreswan-4.1-1.el7_9.x86_64.rpm
2. 配置系统内核参数.
sudo vim /etc/sysctl.d/50-libreswan.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
net.ipv4.conf.default.accept_redirects =0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
sudo sysctl -p/etc/sysctl.d/50-libreswan.conf
3. 配置防火墙,开放端口4500和500的TCP和UDP协议。
4. 在OCI控制台中,创建指向Libreswan公共IP地址(例如52.118.5.18)的customer premises equipment(CPE)对象。
5. 如果尚未将DRG连接到VCN:在OCI控制台中,创建一个DRG,然后将其连接到VCN(10.155.64.0/18)。
6. 在OCI控制台中,创建IPSec连接,并将其静态路由设置为OP的私有IP网段10.177.159.64/26
对于每个已配置的IPSec连接,Oracle都会创建两个隧道:
7. 在OCI控制台中,配置隧道的IKE版本和共享密码(OCI20210408IBM).说明:共享密码在后续libreswan的ipsec配置中会用到。
8. 在Oracle控制台中,编辑VCN的安全规则,在端口4500和500上启用TCP和UDP流量,同时开启ESP流量。
9. 在OCI控制台中,编辑VCN的路由表以添加一个规则,该规则将OP私网的网段(10.177.159.64/26)作为目标CIDR块,并将先前创建的DRG作为目标。请记住:路由表与子网相关联,因此请编辑与每个需要与OP通信的子网相关联的路由表。
10. 配置Libreswan,Libreswan配置使用left和right的概念来定义本地CPE设备和远程网关的配置参数。连接的任一侧(Libreswan配置中的conn)可以是左侧或右侧,但该连接的配置必须一致。在本例中:
left:OP的Libreswan CPE
right:Oracle VPN IP Address
sudo vim /etc/ipsec.d/oci-ipsec.conf
conn bg-tunnel-ocivpn-1
left=52.118.5.18
right=193.122.161.149
authby=secret
leftsubnet=10.177.159.64/26
rightsubnet=10.155.64.0/18
auto=start
mark=8/0xffffffff # Needs to be unique across all tunnels
vti-interface=vti5
vti-routing=no
ikev2=insist # To use IKEv2, change to ikev2=insist
ike=aes_cbc256-sha2_384;modp1536
phase2alg=aes_gcm256;modp1536
encapsulation=yes
ikelifetime=28800s
salifetime=3600s
conn bg-tunnel-ocivpn-2
left=52.118.5.18
right=193.122.172.220
authby=secret
leftsubnet=10.177.159.64/26
rightsubnet=10.155.64.0/18
auto=start
mark=9/0xffffffff # Needs to be unique across all tunnels
vti-interface=vti6
vti-routing=no
ikev2=insist # To use IKEv2, change to ikev2=insist
ike=aes_cbc256-sha2_384;modp1536
phase2alg=aes_gcm256;modp1536
encapsulation=yes
ikelifetime=28800s
salifetime=3600s
11. 设置密钥文件:/etc/ipsec.d/oci-ipsec.secrets
sudo vim /etc/ipsec.d/oci-ipsec.secrets
52.118.5.18 193.122.161.149: PSK"OCI20210408IBM"
52.118.5.18 193.122.172.220: PSK"OCI20210408IBM"
12. 设置Libreswan配置和密码文件后,必须使用以下命令重新启动Libreswan服务。
sudo service ipsec restart
13. 在OCI控制中,查看两个隧道的连接状态。
14. 在Libreswan所在的服务器上配置路由,使用以下ip命令创建静态路由,通过IPSec隧道向VCN发送流量。
sudo ip route add 10.155.64.0/18 nexthopdev vti5 nexthop dev vti6

作者简介
唐承波,甲骨文云架构团队高级咨询顾问,专注于甲骨文PaaS云平台相关产品及架构解决方案,具有9+年的IT行业从业经验,擅长大数据和分布式系统的架构与开发。熟悉电信,公共安全行业。您可以通过chengbo.tang@oracle.com与他联系。
扫描二维码或点击阅读原文
快速预约精选云解决方案演示