×

基于ipsec vpn和双向地址转换的内网穿透方案
  

杨童 3043812人觉得有帮助

{{ttag.title}}
本帖最后由 杨童 于 2023-9-27 17:41 编辑

基于ipsec vpn+双向地址转换的内网穿透方案
应用场景:网络出口没有固定IP地址,但是想把内网的业务系统发布到公网。需要在其他地方有固定公网IP(比如腾讯云或者其他网络出口)。

应用场景举例:石家庄办事处的超融合环境内部署有atrustssl等服务,想实现公网用户通过移动vpn接入到办事处内网中访问超融合环境做实验,由于办事处网络出口公网IP不固定,无法直接使用DNAT将超融合内部的业务系统发布到公网。选择通过腾讯云服务器代理访问atrust

实验案例介绍:当前石家庄办事处超融合环境没有固定公网地址,为了将超融合内部的atrust的地址端口发布到公网,使用腾讯云服务器和超融合内部AF对接ipsec vpn,打通云服务器到办事处内网的网络,然后在云服务器配置双向地址转换,实现将办事处内网的atrust地址端口发布到公网。
本方案实现方式和反向代理类似,都是通过一个单独的具有固定公网IP地址的服务器代理发布内网地址和端口,区别在于---反向代理方式需要在被代理的业务服务器上配置代理客户端和参数,如果有大量业务系统部署在不同服务器设备或者业务系统的软件版本不支持则会出现工作量巨大和无法实现的问题,比如atrustSSL的系统都不一定能适配代理软件。

Q:腾讯云服务器怎么配置ipsec
A:在linux主机安装strongswan软件以支持配置标准ipsec vpn
Q:腾讯云服务器的双转怎么配置?
Aiptables自带地址转换功能,分别配置DNAT+SNAT即可实现双转
Q:为什么要配置双转?
ADNAT是为了将服务端口发布,SNAT是为了使报文能匹配感兴趣流,不转换的话报文源地址是移动用户的公网地址,无法匹配ipsec的感兴趣流,需要先SNAT才能匹配到感兴趣流进行ipsec封装
Q:这种内网穿透方式对业务系统服务器有改动么?
A:没有任何改动,本方案只会配置改动ipsec网关设备,对业务系统设备来说是无感知的
Q:业务系统发布到公网,安全性怎么保证?
A:应避免将普通业务系统端口直接映射到公网,建议通过atrust代理形式发布,即使直接映射出去,也可以用AF做策略保障安全性
Q:两端都使用linux主机部署strongswan来对接ipsec可以吗?
A:可以,因为本案例考虑到安全以及配置复杂度所以在内网选择了使用AF
Q:做实验直接todesk向日葵开远程访问超融合就行了,为什么折腾内网穿透?
A:一般多数实验todesk向日葵确实足够了,但是以atrust举例,其中有对接企业微信,移动安全这种实验,必须要atrust发布到公网,有公网域名才可以完成效果呈现,所以需要内网穿透方案。
实验配置举例:
本案例以石家庄办事处超融合环境举例,实验目标是将超融合内部部署的atrust发布到公网,实现移动用户可以通过atrust访问到办事处内网的SCP等设备。腾讯云有固定公网地址,腾讯云的网络逻辑是外层防火墙公网地址通过DNAT一对一映射给云服务器。
拓扑如下:
配置步骤:
一、IPSEC VPN对接配置
腾讯云服务器操作系统为centos7.6
1、腾讯云服务器配置:关闭SELinux
setenforce 0
2、开启数据转发
vi /etc/sysctl.conf                //编辑文件,添加如下两行

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0

3、关闭icmp重定向
sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf
sysctl -p
4、安装strongswan软件(注意使用的yum源,如果提示yum源找不到软件,需要更换yum源或者离线安装,strongswan软件官网:https://www.strongswan.org/download.html
yum install strongswan -y

5、安装后进入软件配置目录
cd /etc/strongswan/
6、修改ipsec配置文件
vi /etc/strongswan/ipsec.conf                                        //编辑ipsec.conf文件,填写如下配置
conn sangfor                                                                        //sangfor为连接名,随意自定义
      leftsubnet=10.0.16.0/22                                        //本端感兴趣流网段
      left=10.0.16.6                                                        //本端地址,注意是服务器本身配置的地址,不是腾讯分配的公网地址,因为腾讯云是自带一对一的地址映射的
      leftid=@tengxun                                                        //本端fqdn标识
      rightsubnet=10.0.0.0/24,192.168.31.0/24                //对端感兴趣流网段,多网段中间逗号隔开
      rightid=@yangtong                                                //对端fqdn标识
      auto=add                                                                //连接启动方式add表示启动,start表示自动连接,用于主动发起连接
      authby=secret                                                        //预共享秘钥方式
      esp=3des-sha1-modp1536                                        //二阶段算法,modp1536对应group5
      ike=3des-sha1-modp1536                                        //一阶段算法
      keyexchange=ikev2                                                //ike版本
7、预共享秘钥配置
vi /etc/strongswan/ipsec.secrets                //编辑此秘钥文件
# ipsec.secrets - strongSwan IPsec secrets file
: PSK "123456789"                                        //配置秘钥为123456789,此处表示适用于所有连接,可以在冒号前加具体的源目ip,比如1.1.1.1 2.2.2.2 : PSK "123456789"        
8、启动和检查vpn状态
每次配置或修改第67步的配置文件后都需要重启vpn服务,不然配置不生效
systemctl status strongswan                //查看vpn服务状态和隧道建立日志
systemctl start strongswan                //启动vpn服务
systemctl restart strongswan                //重启vpn服务
9、AF端配置(当前深信服设备只有AF支持ikev2
此处对端IP地址为腾讯云服务器的公网地址,所有配置与strongswan配置对应即可,没有的就按默认
由于AF端没有固定IP地址,所以选择使用FQDN标识,注意和腾讯云服务器配置对应
AF检查日志,隧道建立成功
以上是IPSEC VPN对接的配置
二、云服务器和AFNAT配置
1、云服务器的双转配置
DNAT配置
因为腾讯云本身是有地址转换的,服务器本身配置的是私网地址,腾讯云平台自带DNAT将云服务器的私网地址映射成公网地址,在服务器上配置NAT时注意应该使用服务器本身配置的地址,而非公网地址
映射atrust接入地址,将云服务器本身地址10.0.16.6:44300映射为sdpc10.0.0.1:443
iptables -t nat -A PREROUTING -i eth0 -d 10.0.16.6 -p tcp --dport 44300 -j DNAT --to-destination 10.0.0.1:443
映射代理网关隧道接入地址,将云服务器本身地址10.0.16.6:44100映射为proxy10.0.0.2:441
iptables -t nat -A PREROUTING -i eth0 -d 10.0.16.6 -p tcp --dport 44100 -j DNAT --to-destination 10.0.0.2:441
SNAT配置
将报文源是所有目的是办事处私网10.0.0.0/24网段的报文,源地址转换为云服务器接口地址10.0.16.6
iptables -t nat  -A POSTROUTING -s 0.0.0.0/0 -d 10.0.0.0/24 -j SNAT --to-source 10.0.16.6
NAT配置检查
iptables -t nat  -nvL                \\nat规则
2AFSNAT配置(根据场景可选)
为了保证代理网关到scp的来回路径一致,需要在AFWAN口配置SNAT,如果没有地址转换,那SCP回包下一跳会直接到出口网关,所以选择在AFWAN口配置SNAT,将从vpnLAN区域来的报文进行源转,转换成AFWAN口地址,这样scp在回包时就会回复给AF了,在源地址转换配置中源区域选择vpn区域即可(vpntun默认没有区域,需要手动配置)

最终用户访问atrust流程:
1、用户连接atrust接入地址43.xxx.xx.136:44300
2、报文到达腾讯云出口,匹配腾讯云自身的DNAT,把目的地址转成了10.0.16.6:44300
3、报文到达云服务器,匹配iptablesDNAT,目的地址转换成10.0.0.1:443
4、报文在被转发前会匹配iptablesSNAT,源地址转换成10.0.16.6
5、匹配ipsec感兴趣流,报文被封装ipsec并转发到办事处的AF
6、AF解包并转发到atrust设备,报文到达控制中心,访问代理网关同理


PS
1、云服务器注意做好防护,建议把除了ipsecatrust接入端口都关掉,特别是ssh
2、出现过连续两天每天固定时间隧道中断然后就建立不起来的问题,af端日志显示超时,云服务器端日志显示找不到ike配置,做过的排查有:1、更换其他AF发起隧道连接,建立正常;2、更换AF地址也建立正常;3、把这个地址给其他AF设备也无法建立。无法确定具体根因,但是修改地址确实能解决问题,之后也没再复现过。
3、ipsec软件除了strongswan还有openswan,在bbs上也有大量案例,但是我照着配置没有配置成功,总是提示ike配置问题,其中的ipsec.conf文件的配置是关键,在这两个软件的官网都有配置案例,其他的参数比如DPD参数都可以通过配置文件修改
4、本案例是以野蛮+nat穿越场景配置的,其他场景可以通过调整ipsec.conf中参数灵活配置

打赏鼓励作者,期待更多好文!

打赏
88人已打赏

发表新帖
热门标签
全部标签>
安全效果
西北区每日一问
每日一问
【 社区to talk】
技术盲盒
干货满满
技术笔记
产品连连看
新版本体验
功能体验
技术咨询
信服课堂视频
标准化排查
2023技术争霸赛专题
每周精选
GIF动图学习
玩转零信任
社区帮助指南
答题自测
云计算知识
通用技术
天逸直播
秒懂零信任
自助服务平台操作指引
社区新周刊
每日一记
运维工具
用户认证
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
安装部署配置
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
卧龙计划
华北区拉练
以战代练
技术晨报
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
高手请过招
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列

本版版主

0
2
1

发帖

粉丝

关注

38
7
5

发帖

粉丝

关注

5
3
4

发帖

粉丝

关注

47
4
1

发帖

粉丝

关注

1
4
0

发帖

粉丝

关注

0
0
0

发帖

粉丝

关注

本版达人