我们在测试 Azure 的 VPN 功能时,通常需要在用户的出口防火墙或者网关上做一些设置,由于这些设备通常属于生产环境,直接测试会造成网络架构的改动,也可能会影响到当前的环境,无法方便地进行测试。因此有时我们会通过内网的 vSphere 环境中部署 Linux 虚机来进行测试,本文描述了如何过 Linux 中使用 Strongswan 来进行 VPN 的测试。
先说一下 Azure 端的测试环境:
虚拟网络 vnet 的 IP 地址空间:172.31.0.0/20
VM 的 IP 地址:172.31.0.5/24
本地环境:
已部署 CentOS 7 作为本地 VPN 网关,IP: 192.168.1.254
用于测试的 VM 的 IP: 192.168.1.2
测试目标,通过 VPN 打通两端的网络 172.31.0.0/20 和 192.168.1.0/24,云上与云下的 VM 互通。
首先来我们进行 Azure 端的设置
1、创建“虚拟网络网关”
部署前需确认虚拟网络中有空余的地址空间用于创建网关子网,点击“创建”按钮后请耐心等待(页面提示需要 45 分钟)。
2. 创建“本地网络网关”
这里的 IP 地址为本地公网出口 IP,地址空间为需要和 Azure 打通 VPN 的子网。
3. 创建 VPN 连接
连接类型选择站点到站点(IPsec)。
此处选择相应的虚拟网络网关和本地网络网关,并指定共享密钥“SharedKey”。
创建完成后,看一眼刚才创建连接的概述,记录虚拟网络网关的 IP 139.219.185.255。
match
现在我们回到本地的 CentOS
1. 禁用防火墙
systemctl disable firewalld
systemctl stop firewalld
2. 禁用 SElinux
sed -i 's/=enforcing/=disabled/g' /etc/sysconfig/selinux
setenforce 0
3. 设置核心参数,允许 ip 转发
sysctl net.ipv4.ip_forward=1
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
4. 安装 Strongswan
yum install -y epel-release
yum install -y strongswan
5. 配置 Strongswan
vi /etc/strongswan/ipsec.conf # 注意修改本地网关 IP、本地子网、Azure VPN 网关 IP、Azure VNET 地址空间
vi /etc/strongswan/ipsec.secrets # 指定与 Azure 端一致的 PSK 共享密钥,Azure VPN 网关 IP
6. 启动 Strongswan
systemctl enable strongswan
systemctl start strongswan
strongswan up azure
终于可以连通性测试了
从本地 192.168.1.2 ping 云上的 172.31.0.5
从云上 172.31.0.5 ping 本地的 192.168.1.2
另外,为了简化本地 CentOS 7 的部署和配置,可通过这个ova 模板(root password: ipsecvpn)在 vSphere 6.5 中部署,可以跳过上述 1-4 步的设置即可进行测试。
作者:周晔,资深工程师,虚拟化、云计算基础架构及Unix 专家
文章来源:Microsoft Azure