一、背景
之前做过两个类似主题的文档,第1贴是使用Cloudformation从零开始搭建实验环境创建出来2个VPC,然后配置VPN对接。第2贴是讲述海外AWS的托管VPN服务的配置。这部分文档讲解是按照学习和做实验的角度,对于配置环境可能过于复杂。因此这里又整理了一个简化版。
本文是个简化版文档,不搭建学习实验环境,只部署用于生产系统,使用Libreswan 3.0(Openswan 2.6的分支)部署VPN路由器。
本配置文档使用使用范围:
- 如果与IDC对接,本文在Checkpoint路由器上测试通过
- 如果远端是其他云,推荐使用云上的托管VPN网关服务,也可以被选使用云上虚拟机部署软路由器
注意:只能用于国内,不能跨境。跨境请使用合法跨境专线。
二、对接环境
1、创建EC2
创建一台使用Amazon Linux 2系统的EC2,配置2vCPU 4GB,分配EIP可远程登录。
2、开启网络转发
在EC2更多操作下拉框下,找到网络,将这台EC2的“目标地址和源地址检查”选项设置为禁用。
3、配置安全规则组
承担路由器的EC2需要配置安全组,开放如下端口:
- UDP协议,端口500
- UDP协议,端口4500
- 选择
Custom Protocol
,输入ESP
,Source填写为远端路由器地址
将此安全组应用到EC2上。
4、安装软件包
为这个EC2操作系统安装包:
yum update -y
yum install openswan -y
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.eth0.send_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.eth0.accept_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.eth0.rp_filter = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.lo.rp_filter = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.ip_vti0.rp_filter = 0" >> /etc/sysctl.conf
sysctl -p
echo "iptables -t mangle -A FORWARD -o eth0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360" >> /etc/rc.d/rc.local
iptables -t mangle -A FORWARD -o eth0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360
chmod +x /etc/rc.d/rc.local
5、创建Libreswan配置和认证文件。
将以下内容保存为/etc/ipsec.d/cisco.conf
文件。
conn cisco
authby=secret
auto=start
leftid=LOCALEIP
left=%defaultroute
leftsubnet=10.1.0.0/16
leftnexthop=%defaultroute
right=REMOTEEIP
rightsubnet=192.168.0.0/16
keyingtries=%forever
ike=aes128-sha1;modp1024
ikelifetime=86400s
phase2alg=aes128-sha1
salifetime=3600s
pfs=no
替换以上文档中:
LOCALEIP
为AWS云上EC2路由器的EIPleftsubnet
参数为AWS云上VPC网络的CIDRREMOTEEIP
为远端路由器公网IPrightsubnet
参数为云下IDC或其他云上VPC的CIDR。
修改后保存退出。
将以下内容保存为/etc/ipsec.d/cisco.secrets
文件。
LOCALEIP REMOTEEIP: PSK "aws123@@@888"
替换以上文档中:
LOCALEIP
为AWS云上EC2路由器的EIPleftsubnet
参数为AWS云上VPC网络的CIDR- 双引号内的是认证的密钥
替换后注意保持冒号、空格、引号的准确性。
三、启动服务
1、 启动服务
运行如下命令
systemctl enable ipsec
ipsec start
ipsec verify
所有返回信息的状态都是绿色的OK表示配置成功。
2、修改AWS一侧VPC的路由表
配置步骤如下:
- 进入AWS控制台的VPC模块
- 从左侧菜单找到路由表,找到要配置的VPC所对应的路由表,如果有多张路由表,需要分别修改
- 选中路由表,点击页面下半部分,第二个标签页Route Table路由表,点击Edit Route编辑路由按钮
- 现有路由条目不要修改,点击Add Route添加路由按钮增加一行新的路由
- Destation目标填写为远端IDC或者其他云的VPC的CIDR网段,例如
192.168.0.0/16
,在Targe目标从下拉框中选择Instance,然后从Instance菜单下会自动加载出来刚才配置为路由器的EC2,选中它,点击保存路由按钮
3、修改IDC/其他云上路由表
此过程根据不同产品和服务有所不同,配置的目的是在增加对AWS上VPC的路由条目。本文不再描述。
4、测试
至此配置完成,分别在AWS云上和另一侧网络内可以发起ping命令测试。