在CentOS上配置IKE/IPSsec实现“云主机---物理机”混合云部署

2017-7-10 杰克 VPN

    最近某集团公司想将物理机房内某些非关键业务迁移部署至共有云上,以实现混合云部署。

    大致拓扑如下:

tp.png

    物理机房服务器私网段 192.168.0.0/24 出口设备配置了华为USG系列做NAT转换及防火墙部署。云端采用国内某知名公有云提供商,已购置云主机并配置了专有网络(云端私网10.10.10.0/24

    云提供商已有成熟的VPN产品,云市场上亦有相关配置好的VPN系统镜像。但使用别人的产品心里总感觉不踏实,且相关开源产品都能支持这种架构没必要再去购买相关商业产品。于是决定自己配置基础网络架构。

    大致思路如下:

    在云端专有网络配置一台CentOS作为NAT转发,并配置使用IPsec与物理机房连接做业务迁移。云端业务主机不购置公有IP所有访问请求均通过123.56.17.X转发。

 

    云端主机如下: 

    注意:用于NATIPsec的云主机实际仅有1片虚拟网卡并通过NAT转发到123.56.17.X这个公网IP

cloul.png

 

一、业务主机server-OA配置很简单,将网关配置为10.10.10.67即可。同时打开测试物理主机的ping测试窗口,以便后面观察IPsec的连接

oa.png

 

二、主要的网络配置在CentOS上,下面逐步分解:

1.选用的操作系统为RHEL的开源版本CentOS6.8是目前6系列比较靠后的一个版本,采用的IPsec软件为OpenSwan由著名的开源项目FreeS/WAN停止开发后的后继分支项目。相关介绍不再赘述,有兴趣自己百度。启动操作系统后安装OpenSwan 我采用的是yum安装

使用root登录执行命令: yum install openswan  回车

运行后会出现软件大小及版本和需要安装的依赖包,输入Y回车。程序会自动安装

yum.png

 

2.OpenSwan安装完成后,输入: vi /etc/ipsec.conf 回车 配置ipsec.conf主配置文件。如果你安装的版本与我一致,则仅在protostack=netkey项下增加  nat_traversal=yes oe=off   如图所示:

ipsec.conf.png

以上2项的意思是开启nat-t 关闭随机加密 有教程说还要增加virtual_private=项,实际在这个版本中默认已经配置。

 

3.ipsec.conf主配置文件配置完成后可配置ipsec连接配置文件,实际连接配置可直接写在主配置文件ipsec.conf
后面,但我喜欢用另写一个文件来完成连接配置,即使出错也不会影响主配置文件

输入:vi /etc/ipsec.d/ike.conf  回车,创建一个名为ike.conf的连接配置文件。将IPsec连接参数填写进去

ike.png

连接配置文件里的各项值其实很好理解,left是本端,right是对端,ike是第一阶段协商参数和加密算法,phase2alg是第二阶段协商参数和加密算法,ikesa生存时间是28800秒,其他基本都是默认参数。如果想知道完成的详细参数,可参阅相关wiki

 

4.完成配置后,输入  vi/etc/ipsec.d/ike.secrets 创建共享秘钥文件,按以下格式输入二端公网IP及秘钥

 x.x.x.x y.y.y.y: PSK "预共享秘钥"

key.png

 

5.秘钥配置完成后,需开启IP转发 关闭重定向 。输入:vi /etc/sysctl.conf
修改或添加以下参数

sysctl.png 

完成后输入 sysctl -p  使刚才的设置生效,并输入 service networkrestart  重启网络。

最后输入:service ipsec start 启动ipsec连接。至此,云端的ipsec配置已经完成。

 

三、物理机房端IPsec配置

1.登录华为USG设备,定位到左侧VPN---IPsec项,单击新建

USG-新建.png

 

2.根据云端的配置填写相关IPsec基础配置及子网参数:

USG-基本.png

 

3.根据云端配置加密方式及算法等高级参数USG-高级.png

在华为USG系列里的高级IPsec参数里有个 基于流量的参数,但在OpenSwan没有找到这个参数项目。我在实际使用中填写了一个20480KB的值也能正常建立协商连接,另外因云提供商所提供的云端专有网络(云端私网)采用的是NAT方式映射公网IP因此在华为USGIPsec里需勾选 NAT穿越,即NAT-T功能需开启。

NAT-T.png 

4.至此,物理机房端的IPsec配置也完成。

在华为USG VPN---IPsec---监控 选项下可看到已与云端的CentOS建立IPsec连接

USG-OK.png

 

5.命令行登录华为USG 查看IPsec的第一阶段IKE的连接协商信息发现采用了NAT-T并使用UDP4500端口通信

USG-4500.png

输入:dis ipsec sa  命令查看第二阶段IPsec连接协商信息

USG-pha2.png

 

6.通过带源ping命令,测试IPsec联通性。云端的二台主机均能通过IPsec隧道ping

USG-ping.png

 

7.在云端的业务主机 server-OA 上亦能ping通物理机房主机,但不能ping www.baidu.com CentOS并未配置开启源地址NAT,即 SNAT  

server-OA-ping.png

 

8.在云端CentOS主机上通过tcpdump抓包,可看到server-OA对物理机房的子网访问数据均通过IPsec加密

tcpdump.png

至此,混合部署的前期工作IPsec搭建已经完成。可以对物理机房的业务进行上云迁移。迁移完成后,可在CentOS主机上进行DNAT配置,即目的地址NAT或者叫虚拟服务器配置。不同厂商叫法不一样,即实现业务的对公网开放。最后配置SNAT让云端的专有网络(云端私网)里的主机访问公网。

关于SNATDNAT属于Linuxiptables配置内容,与本文关系不大。在此仅做简单说明及配置

 

DNAT配置:业务云主机server-OA开放WEB端口至公网IP 让终端能访问云主机server-OAWEB服务

CentOS上输入命令:iptables -t nat -A PREROUTING -i eth0 -d10.10.10.67 -p tcp --dport 80 -j DNAT --to-destination10.10.10.68:80 即可实现通过公网IP访问到云主机server-OAWEB服务

DNAT-80.png

当然,也可以配置:
iptables -t nat -A PREROUTING -i eth0 -d10.10.10.67 -p tcp --dport 65500 -j DNAT --to-destination10.10.10.68:3389

这样的DNAT规则来实现通过123.56.17.X:65500 来访问server-OA云主机的远程桌面服务

 

SNAT配置,让云端专有网络(云端私网)里的云主机通过CentOS实现NAT上网,输入命令:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT--to-source 10.10.10.67

即可实现云端主机NAT上网

SNAT.png

 

在云主机server-OA上打开 www.ip138.com 可以看到公网IP是分配给CentOS的公网IP已实现SNAT转换

ip138.png

 

 

 

    至此,通过CentOS实现IPsec混合云方式的配置已基本完成,在实际实施过程中根据不同公有云提供商,硬件厂商,物理机房环境等情况不同而有所变化。欢迎大家讨论指点。

 

 

标签: ipsec 混合云 VPN iptables openswan 华为USG centOS

发表评论:

Powered by emlog 京ICP备17037512-1 e-mail:jackhkyin@163.com QQ:393147796