由于 DHCP 中继丢弃数据包,Windows RRAS VPN 无法在 Mac L2TP 客户端上设置选项

由于 DHCP 中继丢弃数据包,Windows RRAS VPN 无法在 Mac L2TP 客户端上设置选项

在 Windows 路由和远程访问上设置用于远程访问的 L2TP VPN 服务时,我们在连接客户端上设置选项时遇到了一个奇怪的问题。通过 DHCP 向 RRAS 中的 L2TP 客户端提供这些设置的方式(微软文档) - L2TP 客户端发送 DHCPInform 数据包,然后应用 DHCP 选项中的设置(选项 15 用于 DNS 搜索后缀,选项 121 用于拆分隧道路由)。

在大多数 L2TP 客户端 VPN 端点(如 Cisco ASA)中,L2TP 服务使用配置的 DNS 和路由设置来制作 DHCP 响应 - 但在 RRAS 中,您使用内置于 RRAS 中的 DHCP 中继或本地子网上的 DHCP 服务器 - 但这些选项必须在 DHCP 中设置,而不是通过 RADIUS 属性或 RRAS 设置或其他任何方式设置。(有关 DHCPInform 的工作原理及其必要性的详细信息,请关注这个疯狂的线程在我们的几位 Server Fault 常客之间)

我们发现,没有 Mac(或 iOS)客户端能够在我们新配置的 Windows Server 2016 VPN 服务器上成功检索这些选项,而是在尝试从 VPN 服务器获取 DHCP 时超时(从/var/log/ppp.log打开详细日志记录后开始):

...
Fri Dec  1 12:09:18 2017 : sent [IP data <src addr 192.0.2.8> <dst addr 255.255.255.255> <BOOTP Request> <type INFORM> <client id 0x08000000010000> <parameters = 0x6 0x2c 0x2b 0x1 0xf9 0xf>]
Fri Dec  1 12:09:21 2017 : sent [IP data <src addr 192.0.2.8> <dst addr 255.255.255.255> <BOOTP Request> <type INFORM> <client id 0x08000000010000> <parameters = 0x6 0x2c 0x2b 0x1 0xf9 0xf>]
Fri Dec  1 12:09:24 2017 : No DHCP server replied

当这种情况发生时,观察 RRAS 服务器,DHCP 中继似乎这些数据包,但奇怪的是,它们被报告为被丢弃(当客户端记录正在发送的 DHCP 请求时,带圆圈的列中的数字都会立即增加):

DHCP 中继丢弃

在将 RRAS 日志记录旋钮调到最大后,我希望 Windows 事件日志能够揭示丢弃的原因(因为所有这些事件都有记录),但这些事件都没有开始记录。最后,在打开 RRAS 跟踪日志后,C:\Windows\system32\tracing\IPBOOTP.LOG终于提供了有关为什么 Mac 的 DHCP 数据包不可接受的提示:

[9712] 12:09:10: dropping REQUEST with secs-since-boot 0 on interface 42 (192.0.2.8)

为什么 RRAS DHCP 中继不能完成其工作并将这些 VPN 客户端的 DHCP 数据包发送到 DHCP 服务器?

答案1

事实证明,DHCP 中继代理的默认设置对于某些 L2TP 客户端来说根本不起作用。

当您在 RRAS 中设置 DHCP 中继接口(在 VPN 客户端所在的“内部”接口上)时,默认选项如下所示:

DHCP 中继选项

这看上去并不起眼,但整个问题的根源在于“启动阈值”设置。文档听起来很有帮助!

中继代理在转发 DHCP 消息之前等待的秒数。您也可以单击箭头选择新设置。默认值为 4 秒。

当您希望本地 DHCP 服务器首先响应,但如果本地 DHCP 服务器没有响应,您就希望将消息转发到远程 DHCP 服务器时,此选项很有用。

显然这个选项听起来只对你正在做的事情有影响实际的DHCP 中继在您的网络内进行。甚至微软最详细的指南对于使用 DHCP 中继进行 VPN 选项,有没有提到需要注意启动阈值设置。

但是,日志不会撒谎,dropping REQUEST with secs-since-boot 0似乎清楚地表明 DHCP 中继代理本身存在错误。该错误让我想到了一个博客文章来自列支敦士登的一位热心的管理员终于告诉我发生了什么事。

“启动阈值” DHCP 中继选项并不是像文档暗示的那样延迟- 它是一个硬数据包过滤器,将丢弃所有低于阈值的 DHCP 数据包。当使用 DHCP 中继进行 VPN 客户端(在“内部”接口上)时,将其设置为高于 0 的任何值都是没有意义的,并且会破坏许多 L2TP 客户端实现检索 DHCP 选项的能力,尽管文档中没有对此行为的指示。

启动阈值 0

将 DHCP 中继上的启动阈值设置为 0 后,Mac L2TP 客户端成功从 DHCP 选项 15(DNS 后缀)和 121(拆分隧道路由)中检索设置。

相关内容