随着公有云资源的普及越来越多的人或单位在各种公有云上安了家,云虽然很好,但公有云资源如何安全快捷的访问本地局域网内资源呢?本文的目标是解决你的混合云组网,将公有云网络通过IPSEC-VPN技术打通与本地局域网的互联,实现混合云组网。
混合云组网是大势所趋,各个公有云服务商也都提供了相应的收费服务,我查了一下,在天翼云中利用IPSEC-VPN打通网络实现互联的产品叫做‘云网关’,从亚马逊、阿里都有提供类似的产品,只不过产品名称不同,相同的是都要收费。
那么有没有可能我们自己实现一个基于IPSEC-VPN的云网关来打通内网与云侧资源池,实现混合云组网,共享公有云与私有云的资源呢?下面要做的就是这件事,通过利旧一台CISCO2821路由器与天翼云资源池打通IPSEC-VPN连接,实现混合云组网。
一、主要配置步骤介绍
如上图所示,本地网络与云侧VPC网络需要两个安全网关设备通过NET-TO-NET模式完成IPSEC-VPN设置,才能实现安全网关两侧的网络互通,所以两边各需要一个安全网关设备进行配置,云侧需要提供一台虚拟机、一个公网IP地址,本地侧需要提供一个固定公网IP地址和一个路由器设备或者也可以通过将固定公网IP地址配置到私有云虚拟机上,通过纯软件的方式实现,这两种方式笔者均已实现, 本文只讨论云侧虚拟机内网路由器一种模式。
1、本地侧路由器配置
2、云侧
二、IPSEC-VPN基本原理拓扑
IPsec用一组加密协议来保护IP流量,提供了对IP流量的机密性、完整性和认证。上图展示的是互联网两侧的两台路由器通过IKE的2个阶段实现通过IPSEC隧道来交换信息,即使路由器A\B间传输的数据被劫持也无法了解里面传输的内容,对用户来说实现了安全传输。
三、本地思科路由器详细配置信息
!
crypto isakmp policy 10
encr aes
authentication pre-share
group 2
crypto isakmp key jeicheY4oh address 1.1.1.1
!
crypto ipsec transform-set openswan esp-aes esp-sha-hmac
!
crypto map openswan 10 ipsec-isakmp
set peer 1.1.1.1
set transform-set openswan
match address 100
reverse-route
!
interface GigabitEthernet0/0
description vip_sw01_0/19
ip address 2.2.2.2 255.255.255.0
ip mtu 1400
ip virtual-reassembly
ip tcp adjust-mss 1360
duplex auto
speed auto
crypto map openswan
interface GigabitEthernet0/1.103
encapsulation dot1Q 103
ip address 133.3.103.132 255.255.255.0
!
interface GigabitEthernet0/1.505
encapsulation dot1Q 505
ip address 133.3.5.132 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 61.183.40.217
ip route 133.0.0.0 255.0.0.0 133.3.103.254
!
access-list 100 permit ip 133.3.0.0 0.0.255.255 192.168.1.0 0.0.0.255
access-list 100 permit ip 192.168.1.0 0.0.0.255 133.3.0.0 0.0.255.255
配置说明:
1.1.1.1 是云侧公网接口IP地址
2.2.2.2 是本地公网接口IP地址
133.3.0.0/16 是本地内网网络地址范围
192.168.1.0/24 是天翼云侧网络地址范围
四、云侧关键管理步骤配置
网卡关闭源目的检查开关
源目的检查开关必须通过天翼云控制台进入对应的弹性云主机页面后选择网卡标签人工关闭,该选项不关闭的后果是云端服务器无法访问到客支内网,只能通过客支内网访问云端,形成单通故障现象,其原理是默认情况下对源或目的检查后不符合要求的地址云主机不会转发,通过ipsec连接后建立的网络就属于这种情况,所以当云端服务器向客支内网服务器发包时会被该选项丢弃。
天翼云添加回程路由
该项目需要在vpc配置中的路由表中手工添加,添加该回程路由的目的是实现云端主机无需手工添加静态路由,自动实现对客支网络的互通。
五、云侧虚拟机更新系统内核版本至4.18
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y
设置 GRUB 默认的内核版本
vi /etc/default/grub
GRUB_DEFAULT=0
grub2-mkconfig -o /boot/grub2/grub.cfg
六、配置云侧虚拟机操作系统环境
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
# sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf
# sysctl -p
3、关闭SELinux
# setenforce 0
关闭原生防火墙
systemctl disable firewalld
systemctl stop firewalld
systemctl mask firewalld
安装iptables服务
yum install iptables-services –y
systemctl enable iptables
systemctl start iptables
rpm -qc iptables-services
配置保存iptables策略
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p tcp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p tcp --dport 500 -j ACCEPT
service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
因为要让两侧内网的所有主机设备实现互访,必须要在两台Ipsec主机上配置iptables的nat转换
Iptables -A POSTROUTING -s 133.3.5.0/24 -d 192.168.1.0/24 -j SNAT --to-source 192.168.1.57
Iptables -A POSTROUTING -s 133.3.103.0/24 -d 192.168.1.0/24 -j SNAT --to-source 192.168.1.57
七、安装配置openswan
1、安装
yum install openswan lsof -y
systemctl enable ipsec
systemctl start ipsec
2、配置
[root@ipsec ~]# cat /etc/ipsec.conf
# /etc/ipsec.conf - Libreswan IPsec configuration file
#
# Manual: ipsec.conf.5
version 2
config setup
protostack=netkey
plutodebug=all
plutostderrlog=/var/log/pluto.log
virtual_private=%v4:133.3.0.0/16,%v4:192.168.1.0/24
nat_traversal=yes
oe=off
conn cisco
authby=secret
auto=start
ike=3des-md5
keyexchange=ike
phase2=esp
phase2alg=3des-md5
compress=no
pfs=no
type=tunnel
left=192.168.1.57
leftsourceip=1.1.1.1
leftsubnet=192.168.1.0/24
leftid=1.1.1.1
leftnexthop=%defaultroute
right=2.2.2.2
rightsubnet=133.3.0.0/16