FortiGate IPsec VPN 搭建
[toc]
简介
该博客主要记录,在FortiGate上搭建IPsec VPN的过程,主要最终实现了对于site-to-site(FortiGate-to-FortiGate)和host-to-site(Windows10-to-FortiGate)的搭建
整体的网络拓扑结构

FortiGate 1:网络适配器1设置为NAT(192.168.152.0/24),网络适配器2设置为VMnet1(192.168.159.0/24)FortiGate 2:网络适配器1设置为NAT(192.168.152.0/24),网络适配器2设置为VMnet3(192.168.200.0/24)pc1:网络适配器设置为VMnet1(192.168.159.0/24)pc2:网络适配器设置为VMnet3(192.168.200.0/24)
在配置host-to-site时,会在NAT上再连接一个windows10的机器
注: pc1的网关需要设置为192.168.159.3,pc2的网络需要设置为192.168.200.3,否则pc1会通过192.168.159.2直接ping到pc2
FortiGate1的配置
配置 port1 和 port2
首先对于port1和port2有如下设置
port1不用设置DHCP Server

port2设置DHCP Server

配置 NAT 和 Firewall
接下来我们需要使得内网的流量能走出去,因此设置NAT和流量的转发


注: 这里的NAT有一些并不在Central SNAT的地方开启,而在Firewall Policy中开启
配置 IPSec VPN site-to-site(FortiGate1-to-FortiGate2)
在IPSec Tunnels中选择Site-To-Site进行配置

我们设置FortiGate2的端口地址以及预共享密钥
注: 这里显示冲突,因为我之前已经配好了,所以才会显示Duplicate entry found.

设置本地的子网和远程的子网

最后会如下显示,如果Create之后,成功了,说明配置暂时(理论上)没问题

这个时候没有连接的话,会显示Inactive,而如果已经连接的话会显示up

我们接下来将其转换成Custom来看看其具体配置是什么,即如果直接用custom配置的话,应该如何做

可以看到远程网关地址,对应端口,认证方法,ike版本,模式,阶段一协商用的算法,DH Groups组数,阶段二的配置

在FortiGate2也如法炮制的配置一遍即可

注: 对于site-to-site中的Inactive图标的地方,可以单击点进去,使用Bring up将其启动
配置 IPSec VPN host-to-site(win10-to-FortiGate1)
在IPSec Tunnels中选择Remote Access进行配置

这里需要提前设置一个L2TP_Group,Group类型是防火墙,设置一个用户win1

注: 这里的Client Address Range是IPSec VPN连接过来之后,这个FortiGate1会给这个用户分配的地址范围是什么,这里我原来设置为子网192.168.159.0/24不成功,所以才如此设置,当然也可以自行再次尝试是否可以为192.168.159.0/24



最终连接的效果会让连接者有一个173.31.1.0/24的IP

PC1 PC2 配置
基本不需要配置,因为FortiGate1和FortiGate2配置好了,但是要注意中间发包是否是ESP的
最主要的配置,需要将PC1的网关设置为192.168.159.3,PC2的网关设置为192.168.200.3
否则PC1要么直接不需要隧道就可以到PC2,要么就是PC1不能通过隧道走到PC2
sudo route add default gw 192.168.159.3
sudo route add default gw 192.168.200.3
内部如果需要真的上网,则需要将fortigate1和fortigate2配置一个静态的路由,从0.0.0.0均走到192.168.152.2(如果不上网,可以直接设置disable),然后再配置pc1和pc2的DNS Server就好了
Win10的配置
对于Windows10,选择VPN的地方,可以直接进行如下设置
但是这个时候我连接失败了,通过抓包和查看FortiGate1的debug log以及支持的协商加密和认证算法,可以推测是因为Win10的加密算法都是AES和DES3,而FortiGate都是DES,所以一直协商失败,于是就需要配置Win10的IPSec属性
在高级安全 Windows Defender 防火墙属性 - IPSec设置中,可以自定义设置IPSec用于建立安全连接的设置
在自定义设置中,将密钥交换(主模式)、数据保护(快速模式)、身份验证方式均设置为高级,最主要的是为了能协商成功


然后还需要配置如下内容的连接安全规则,记得勾选使用IPSec隧道
引用
DHCP NAT配置
https://handbook.fortinet.com.cn/策略与对象/单线路上网配置/DHCP线路上网配置.html
https://blog.csdn.net/meigang2012/article/details/118978718
IPSec VPN配置
https://handbook.fortinet.com.cn/VPN技术/系统原生客户端接入/Windows系统/Windows_IKEv1.html
Win10配置
后续抓包解密
https://blog.csdn.net/rfc2544/article/details/121063565
https://www.golinuxcloud.com/wireshark-decrypt-ipsec-packets-isakmp-esp/
IPSec VPN报文
https://cshihong.github.io/2019/04/03/IPSec-VPN之IKE协议详解
https://handbook.fortinet.com.cn/VPN技术/IPSec_VPN/IPSec_VPN原理.html
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!