【逗老师的小技巧】我算是把Windows IPSec L2TP的问题玩明白了

关于这个问题!

网上一顿文章瞎叽霸写的都是些什么叽霸玩意!

在这里插入图片描述

如果你是自己搭建的IPSec L2TP服务器,而且你又在其他地方折腾了半天Windows连接L2TP的问题,那么这篇文章适合你!

今天,我们来好好说说Windows下的L2TP over IPSec的各种问题。

目前看来,默认配置下,几乎所有的windows都无法顺利连接L2TP over ipsec,解决Windows连接L2TP有两种方案,

  • 方案一:直接禁用ipsec协商
  • 方案二:允许L2TP唤醒ipsec,同时修改ipsec协商参数

网上大部分文章给的都是基于方案一,然后再歪七扭八整了一堆注册表修改项,只要你看到下面这个截图,基本就是直接禁用ipsec的套路了。
在这里插入图片描述方案一不能说不对,很多网络小白确实靠着这个办法顺利连上了。但是:
这种办法连接的L2TP是没有经过ipsec加密保护的哟,客户端和服务器是直接使用1701的L2TP端口通信的哟!!!!明文传输数据哟!!!!!!!!
如何检验流量有没有加密呢?防火墙不放通1701,仅放通500和4500 UDP两个IPSec端口,还能建联的,才是真的经过了ipsec加密。

好了,吐槽完了,我们开始正式说一下从服务端,到windows客户端如何配置:

一、防火墙配置

注意,我们绝不在公网侧直接放通UDP 1701端口。
我们希望的是:

  1. 公网流量先经过IPSec加密
  2. 然后在IPSec隧道侧承接L2TP的UDP 1701端口的流量
  3. 让L2TP流量封装在IPSec隧道内,实现真正的L2TP over IPSec的配置。

因此我们的配置类似于下面的截图:

1、WAN口仅放行500+4500 UDP流量

在这里插入图片描述

2、IPsec虚接口放行L2TP UDP 1701流量

在这里插入图片描述

二、服务器端IPSec协商参数

从Microsoft官方找到了唯一的一篇有关Windows的IPSec安全提议的文档。
Default encryption settings for the Microsoft L2TP/IPSec Client
简单总结下来,服务端配置的安全提议

  • 阶段一提议至少应该包含以下组合:
    3DES-SHA1-DH组2
  • 阶段二至少应该包含3DES加密算法和SHA1散列算法
  • 封装方式使用传输模式

实测Windows连接后,确实使用此提议的组合进行连接。
在这里插入图片描述

同时为了更好的兼容MacOS、iOS和安卓,推荐多搞一点各种提议的组合,逗老师我测试了一下,下面这种组合在各种系统连接时,都可以做到最大兼容。
在这里插入图片描述

三、Windows端修改注册表

1、允许IPSec穿越NAT

说明:
正常的IPSec使用500 UDP端口进行通信,但是因为IPSec建联时需要比较IKE包内host id字段与IP包头实际IP,所以需要引入后续版本的NAT穿越技术,由500初次建联,之后交由4500端口进行NAT穿越建联。
默认windows不支持NAT穿越,配置AssumeUDPEncapsulationContextOnSendRule字段用于允许IPSec使用UDP 4500端口进行NAT穿越。
配置方式:
开始,管理员身份运行CMD
复制粘贴下面命令

REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

或者手动进入regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
新建一个 dword类型的键AssumeUDPEncapsulationContextOnSendRule值为2。

2、允许L2TP唤醒IPSec

说明:
这个配置不一定会影响建立连接,但是可能会影响休眠后重新唤醒IPSec加密。
配置:
开始,管理员身份运行CMD
复制粘贴下面命令

REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters /v AllowL2TPWeakCrypto /t REG_DWORD /d 0x1 /f

或者手动进入regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters
新建一个 dword类型的键AllowL2TPWeakCrypto值为1。

3、允许IPSec运行

说明:
我估计大家在看到这篇文章之前,肯定已经照着网上的各种文章搞了一堆乱七八糟的东西了。
大部分文章中都会引导禁用IPSec运行,但这是不对的呀!瞎鸡儿整。
恢复ProhibitIpSec配置

配置:
开始,管理员身份运行CMD
复制粘贴下面命令

REG ADD HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters /v ProhibitIpSec /t REG_DWORD /d 0x0 /f

或者手动进入regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters
删除ProhibitIpSec键值。

4、神仙操作,禁用Xbox网络服务

这是redit上一个神仙网友发现的操作,玄学操作,但是有用。
进入【服务】,找到Xbox Live 网络服务,给他禁用掉。
在这里插入图片描述

5、确认L2TP身份验证方式和加密

从服务器端确认L2TP身份验证方式,例如是CHAP还是MSCHAPv2,并在Windows客户端正确配置相应的身份验证方式。
不知道是啥身份验证方式的话,就在Windows客户端把所有的身份验证方式都勾上。
同时,务必确保【数据加密】不要选择“不允许加密”,否则又不会协商IPSec了。

在这里插入图片描述

  • 13
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逗老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值