一、写在最前

1. L2TP的优点

  • 预共享密钥类型的L2TP服务搭建非常简单;
  • 支持广泛,绝大多数路由器都支持(不包括50块钱的家用型路由器);
  • 使用场景覆盖较广,既可用于外部设备远程接入,也可用于两个局域网间的互联。

2. L2TP方案的缺点:

  • 兼容性:虽然看上去很多路由器都支持,但是基本都是预共享密钥类型的L2TP,很多终端并不兼容,甚至默认不提供L2TP配置;
  • 稳定性:经常会突然连不上,换个网络甚至同一个网络不同时间就会碰到莫名其妙的错误;
  • 复杂度:由于L2TP本身只负责数据封装,不负责加密,如果有一定的安全需求,还要搭配额外的认证和加密手段来保障,这样一来,部署成本并不比其它类型的方案更低。

3. IKE简单说明

  • 平时IKE见得比较多的地方是ipsec点到点场景,利用IKE进行密钥协商与安全连接建立;
  • 同时也能用来做远程连接服务器,提供客户端接入能力,不过搭建比较麻烦,很多时候并不是首选方案。

4. 为什么写这篇文章

因为我用l2tp拨回家或者拨到公司的网络时,经常会出现各种莫名其妙的错误导致无法连接,所以需要用一种更稳定的备用方案做远程连接。可能是因为pfSense防火墙使用并不多,加上这个方案并不如其它方案常见,所以网上的资料非常少(也可能是因为官方网站已经有非常详尽的指引了),所以在此做一个简单翻译,结合自己的实际操作做个简单分享。

官方链接 – 服务搭建:https://docs.netgate.com/pfsense/en/latest/recipes/ipsec-mobile-ikev2-eap-mschapv2.html

官方链接 – 客户端配置:https://docs.netgate.com/pfsense/en/latest/recipes/ipsec-mobile-ikev2-client-windows.html

二、服务搭建

1. 大致步骤:

  • 创建CA(如果已经有了,可以省略这一步)
  • 为服务端颁发证书
  • 打开IPSEC Mobile Client支持
  • 配置P1和P2
  • 添加用户
  • 配置防火墙放行IPSEC端口,以及IPSEC内部流量
  • 配置客户端(导入CA证书、创建连接)

2. 创建CA:填写一个方便自己识别的名字作为Descriptive name,剩下的可以全部保持默认。

3. 为服务颁发证书

a. System -> Certificate Manager -> Certificates页面,点击Add按钮添加一个新的证书;

b. Method选择 Create an internal certificate;

c. Descriptive Name一栏填上描述文字,比如 ikev2 server;

d. 选择已有的(或上一步创建的)CA;

e. CommonName填写本服务所用域名(甚至可以是DDNS域名);

f. 证书类型:服务器证书(server certificate);

g. Alternative Names:Type栏选择FQDN or Hostname,Value一栏把刚才的Common Name再填一遍

4. 配置IPSEC Mobile Client支持

a. 开启IPSEC

b. 打开IPSec Mobile Client Support,选择本地数据库认证

c. 分配IPV4网段(如果需要ipv6,可以按需配置,其它配置也是如此,我自己这个服务器上只配置了一个ipv4网段,后面的选项全部保持默认)

d. 完成以后点击保存,这时会提示我们创建Phase 1

5. 配置P1

a. 绝大多数配置项都保持默认即可;

b. Phase Proposal(Authentication):

  • Authentication Method选择EAP-MSChapV2
  • My identifier选择Distinguished name,Value处填写刚才签发证书的域名;
  • Peer identifier 选择Any;
  • My Certificate选择刚才签发的证书;

c. 剩下的全部保持默认,并点击保存,此时会回到Tunnel列表。

6. 配置P2

a. 在Tunnel列表中找到刚才创建的Phase1,点击Show Phase 2 Entries,由于并未创建任何Phase2项目,此处为空,直接点击Add P2;

b. 按需设置(我在这儿什么都没有设置,直接保存)

7. 添加用户

a. 导航到IPSEC页面的Preshared Keys标签

b. 填写用户名,加密方式(EAP),和密码,其它的可以全部保持默认。

8. 防火墙策略

a. 在WAN作用域中,放行IKE端口(udp 500, udp 4500)

b. 在ipsec作用域中,放行内部流量(可以粗暴一点直接设置permit any to any,如果希望更精准,需要在此配置策略允许访问内部网段以及从内部网段发起的通信,即P2的Local Network配置项)

9. 客户端(Windows)

a. 下载CA证书到客户端电脑(只需要下载证书即可,不需要私钥)

b. 双击下载的证书,打开证书安装向导,为客户端导入CA证书(存入受信任的根证书颁发机构)

c. 按下面的截图新建IKEV2连接

d. 看一眼连接属性

e. 拨号,结果发现有惊喜

10. Trouble Shooting

a. 提示信息已经很直接了:策略匹配错误,先上防火墙看看情况(pfSense每个页面几乎都有这样的视图按钮,可以快速对本页服务进行控制,查看相关服务状态,查看所关联的日志记录)

b. 可以在日志里看到,客户端请求的IKE算法和防火墙所配置的算法之间没有匹配出任何结果,解决方法也很简单:在防火墙安全提议里添加上与客户端兼容的算法即可(各类客户端支持的算法不尽相同,服务端均需按此步骤处理以进行兼容,ESP也可能出现这个问题,处理方法类似)。

分类: articles