我正在尝试在 AWS VPC 内设置 l2tp,但遇到了问题。
我在 MAC OS 上,一直收到错误“无法与 PPP 服务器建立连接。请尝试重新连接。如果问题仍然存在,请验证您的设置并联系您的管理员。” Mac 上的其他 l2tp 连接可以正常工作,所以我认为这是与 AWS 网络有关的服务器端配置问题。
服务器确实有 EIP,并且安全组对流量开放。我也设置了 UDP 封装,但没有任何效果。
编辑:
我已经确认它在 Windows 机器上也无法工作。错误是:“L2TP 连接尝试失败,因为安全层在与远程计算机的初始协商期间遇到处理错误”
以下是我的 Mac 的日志:
Tue Mar 2 21:06:53 2021 : publish_entry SCDSet() failed: Success!
Tue Mar 2 21:06:53 2021 : publish_entry SCDSet() failed: Success!
Tue Mar 2 21:06:53 2021 : l2tp_get_router_address
Tue Mar 2 21:06:53 2021 : l2tp_get_router_address 172.20.10.1 from dict 1
Tue Mar 2 21:06:53 2021 : L2TP connecting to server 'XXXXXXXXXXXX' (XX.XX.XX.XXX)...
Tue Mar 2 21:06:53 2021 : IPSec connection started
Tue Mar 2 21:06:53 2021 : IPSec phase 1 client started
Tue Mar 2 21:06:53 2021 : IPSec phase 1 server replied
Tue Mar 2 21:06:54 2021 : IPSec phase 2 started
Tue Mar 2 21:06:54 2021 : IPSec phase 2 established
Tue Mar 2 21:06:54 2021 : IPSec connection established
Tue Mar 2 21:06:54 2021 : L2TP sent SCCRQ
Tue Mar 2 21:06:54 2021 : L2TP received SCCRP
Tue Mar 2 21:06:54 2021 : L2TP sent SCCCN
Tue Mar 2 21:06:54 2021 : L2TP sent ICRQ
Tue Mar 2 21:06:54 2021 : L2TP received ICRP
Tue Mar 2 21:06:54 2021 : L2TP sent ICCN
Tue Mar 2 21:06:54 2021 : L2TP connection established.
Tue Mar 2 21:06:54 2021 : L2TP set port-mapping for en0, interface: 6, protocol: 0, privatePort: 0
Tue Mar 2 21:06:54 2021 : using link 0
Tue Mar 2 21:06:54 2021 : Using interface ppp0
Tue Mar 2 21:06:54 2021 : Connect: ppp0 <--> socket[34:18]
Tue Mar 2 21:06:54 2021 : sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x312e33e6> <pcomp> <accomp>]
Tue Mar 2 21:06:57 2021 : sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x312e33e6> <pcomp> <accomp>]
Tue Mar 2 21:06:57 2021 : rcvd [LCP ConfReq id=0x0 <mru 1400> <auth eap> <magic 0x7ad21b17> <pcomp> <accomp> <callback CBCP> <mrru 1614> <endpoint 13 17 01 4f 48 20 23 13 c3 46 18 8f aa 74 9e ef 65 fe 3a 00 00 00 00>]
Tue Mar 2 21:06:57 2021 : lcp_reqci: rcvd unknown option 13
Tue Mar 2 21:06:57 2021 : lcp_reqci: returning CONFREJ.
Tue Mar 2 21:06:57 2021 : sent [LCP ConfRej id=0x0 <callback CBCP> <mrru 1614>]
Tue Mar 2 21:06:57 2021 : rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x312e33e6> <pcomp> <accomp>]
Tue Mar 2 21:06:57 2021 : rcvd [LCP ConfReq id=0x1 <mru 1400> <auth eap> <magic 0x7ad21b17> <pcomp> <accomp> <endpoint 13 17 01 4f 48 20 23 13 c3 46 18 8f aa 74 9e ef 65 fe 3a 00 00 00 00>]
Tue Mar 2 21:06:57 2021 : lcp_reqci: returning CONFNAK.
Tue Mar 2 21:06:57 2021 : sent [LCP ConfNak id=0x1 <auth chap MS-v2>]
Tue Mar 2 21:06:57 2021 : rcvd [LCP ConfReq id=0x2 <mru 1400> <auth chap MS-v2> <magic 0x7ad21b17> <pcomp> <accomp> <endpoint 13 17 01 4f 48 20 23 13 c3 46 18 8f aa 74 9e ef 65 fe 3a 00 00 00 00>]
Tue Mar 2 21:06:57 2021 : lcp_reqci: returning CONFACK.
Tue Mar 2 21:06:57 2021 : sent [LCP ConfAck id=0x2 <mru 1400> <auth chap MS-v2> <magic 0x7ad21b17> <pcomp> <accomp> <endpoint 13 17 01 4f 48 20 23 13 c3 46 18 8f aa 74 9e ef 65 fe 3a 00 00 00 00>]
Tue Mar 2 21:06:57 2021 : sent [LCP EchoReq id=0x0 magic=0x312e33e6]
Tue Mar 2 21:06:58 2021 : rcvd [CHAP Challenge id=0x0 <74364045b7347b39c5b1dfc36728e117>, name = "XXX"]
Tue Mar 2 21:06:58 2021 : sent [CHAP Response id=0x0 <734347e818645e3291e5aadb64eba088000000000000000068b867912db9f4098b52051c0e350df91af72a1774b6708700>, name = "XXXXX"]
Tue Mar 2 21:06:58 2021 : rcvd [LCP EchoRep id=0x0 magic=0x7ad21b17]
Tue Mar 2 21:06:58 2021 : rcvd [CHAP Success id=0x0 "S=FB69C2CC6DD794FF835AF55ED91E9DBAB6278C81"]
Tue Mar 2 21:06:58 2021 : sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
Tue Mar 2 21:06:58 2021 : sent [IPV6CP ConfReq id=0x1 <addr fe80::167d:daff:fece:57fd>]
Tue Mar 2 21:06:58 2021 : sent [ACSCP ConfReq id=0x1 <route vers 16777216> <domain vers 16777216>]
Tue Mar 2 21:06:58 2021 : rcvd [CCP ConfReq id=0x4 <mppe +H -M -S -L -D +C>]
Tue Mar 2 21:06:58 2021 : Unsupported protocol 'Compression Control Protocol' (0x80fd) received
Tue Mar 2 21:06:58 2021 : sent [LCP ProtRej id=0x2 80 fd 01 04 00 0a 12 06 01 00 00 01]
Tue Mar 2 21:06:58 2021 : rcvd [LCP ProtRej id=0x5 80 21 01 01 00 16 03 06 00 00 00 00 81 06 00 00 00 00 83 06 00 00 00 00]
Tue Mar 2 21:06:58 2021 : rcvd [LCP ProtRej id=0x6 80 57 01 01 00 0e 01 0a 16 7d da ff fe ce 57 fd]
Tue Mar 2 21:06:58 2021 : rcvd [LCP ProtRej id=0x7 82 35 01 01 00 10 01 06 00 00 00 01 02 06 00 00 00 01]
Tue Mar 2 21:06:58 2021 : sent [LCP TermReq id=0x3 "No network protocols running"]
Tue Mar 2 21:06:58 2021 : Connection terminated.
Tue Mar 2 21:06:58 2021 : L2TP disconnecting...
Tue Mar 2 21:06:58 2021 : L2TP sent CDN
Tue Mar 2 21:06:58 2021 : L2TP sent StopCCN
Tue Mar 2 21:06:58 2021 : L2TP clearing port-mapping for en0
Tue Mar 2 21:06:58 2021 : L2TP disconnected
以下是来自 Windows 服务器的日志:
"XXX","RAS",03/02/2021,21:07:24,4,"XXXXXX",,"XX.XX.XX.XX","XX.XX.XX.XX",,,"XXX","XXXXX",1,,"XX.XX.XX.XX","XXX",1614737244,,5,,1,2,,,0,"311 1 fe80::edb8:9338:cb73:6adf 03/03/2021 01:54:30 4",,,,,1,,,,"5",2,,,,,"7",1,,3,1,"174.247.13.222","XX.XX.XX.XX",,,,,,,"MSRASV5.20",311,,"0x00504545524C455353",4,,"Microsoft Routing and Remote Access Service Policy",1,,,,
"XXX","RAS",03/02/2021,21:07:26,4,"XXXXX",,"XX.XX.XX.XX","XX.XX.XX.XX",,,"XXX","XX.XX.XX.XX",1,,"XX.XX.XX.XX","XX.XX.XX.XX",1614737244,,5,,1,2,,,0,"311 1 fe80::edb8:9338:cb73:6adf 03/03/2021 01:54:30 4",,,,,2,,292,407,"5",2,0,11,13,1,"7",1,,3,1,"174.247.13.222","XX.XX.XX.XX",,,,,,,"MSRASV5.20",311,,"0x00504545524C455353",4,,"Microsoft Routing and Remote Access Service Policy",1,,,,
我对此完全困惑不已。
答案1
问题的关键是lcp_reqci: rcvd unknown option 13
——显然这与双方配置的身份验证方法有关。
也许这个答案会有所帮助:MacOS/iOS 上的 L2TP 与 PEAP 身份验证
答案2
这似乎是 AWS EC2 服务器本身的路由问题,我关注了 AWS 论坛上的一篇旧帖子:https://forums.aws.amazon.com/thread.jspa?messageID=487251。我遵循了此主题中的最后一篇帖子,一切开始按预期运行,我已在此处添加他的帖子,以便在链接失效时可以保存它。对我来说,诀窍是添加静态路由,因为我之前已经完成了大部分帖子,或者它不适用于我的情况。
有点晚了,因为这篇文章已经快 2 年了;但是,我们刚刚在 Win2012 实例上完成了 RRAS w/L2TP IPSEC VPN 和 NAT 的配置。希望这能帮助其他碰巧找到这个帖子的人。
这个设置非常开放,一旦一切正常,您将需要锁定 ACL 和 SecGroups;但是,这应该可以让您顺利完成:
注意:^ = 右键单击
先决条件:
- 互联网网关
- 具有一个或多个子网的 VPC(我们使用 2 个 - 一个专用于 RRAS,另一个用于 LAN 服务器)。
- 具有 2 个网络接口的 Windows 2012 实例(我们的 RRAS 服务器)。为每个接口分配静态 IP(我们有连续的 IP,但不确定是否需要)。将 EIP 附加到 Eth0。在每个接口上禁用 SRC/DEST 检查(注意:根据我的经验,在实例上禁用 SRC/DEST 只会影响 Eth0。最好在每个接口上手动执行此操作)。
- Windows 2012 实例(我们的 LAN 服务器),具有 1 个网络接口,分配了静态 IP
- RRAS 服务器已加入您的域(非常确定这对于 RRAS 是必需的,但对于我们的设置来说肯定是必需的,因为 VPN 用户需要通过 AD 进行身份验证)。您应该已经配置了 ACL 和 SG 设置,以允许 RRAS 服务器与您的 DC 进行通信。
配置 ACL(为了测试,我们将 ACL 应用于 RRAS 和 LAN 子网)入站:端口 3389(RDP);TCP;您的 IP 或 IP 范围(这用于管理目的;可以在您的 VPN 启动后删除或修改)入站:全部;全部;全部;VPC 子网(用于 NAT)入站:端口 500;UDP;0.0.0.0/0;允许(用于 VPN)入站:端口 4500;UDP;0.0.0.0/0;允许(用于 VPN)入站:全部;ESP(50);0.0.0.0/0;允许(用于 VPN)入站:1701;UDP;0.0.0.0/0;允许(用于 VPN)入站:范围 49152-65535;TCP 和 UDP;0.0.0.0/0;允许(回复 LAN 流量)出站:全部;全部; 0.0.0.0/0;允许(用于 NAT 和 VPN)
为 RRAS 服务器配置安全组 入站:全部;全部;LAN SG ID 入站:TCP;3389 (RDP);您的 IP 或 IP 范围(也用于管理目的;可以在 VPN 启动后删除或修改) 入站:-- 入站:UDP;500;0.0.0.0/0 入站:UDP;1701;0.0.0.0/0 入站:UDP;4500;0.0.0.0/0 入站:ESP (50);全部;0.0.0.0/0 出站:全部;全部;0.0.0.0/0
为 LAN 服务器配置安全组 入站:全部;全部;RRAS SG ID 入站:TCP;3389 (RDP);您的 IP 或 IP 范围(也用于管理目的;可以在 VPN 启动后删除或修改) 出站:全部;全部;0.0.0.0/0
为 RRAS 服务器配置路由表(我们使用主 rtb)VPN 子网;本地;活动 0.0.0.0/0;IGW ID;活动
配置 LAN 服务器的路由表(NAT 所需) VPN 子网;本地;活动 0.0.0.0/0;RRAS Eth1 接口 ID;活动 此时,您应该能够从本地计算机通过 RDP 连接到两台服务器,以及从一台服务器连接到另一台服务器。此外,RRAS 服务器应该能够访问公共站点(例如 Google),而 LAN 服务器则不能。现在让 voo-doo 将所有内容整合在一起:
在 RRAS 服务器上安装路由和远程访问
服务器管理器 > 添加角色和功能 > 基于角色的远程访问(接受默认值)出现提示时,包括路由角色服务
配置路由和远程访问服务注意:我们在本练习中使用 PSK 和静态地址池;您的最终配置可能有所不同路由和远程访问 ^ 服务器名称 > 配置和启用路由和远程服务自定义配置 > VPN 访问、NAT
路由和远程访问 ^ 服务器名称 > 属性安全 > 身份验证方法 > 取消选中 EAP(这会引起不必要的麻烦)检查:允许 L2TP/IKEv2 的自定义 IPsec 策略 > 输入 PSK
路由和远程访问 > 服务器名称 > IPv4 选择静态地址池并输入适当的范围 [注意:我们选择使用来自 RRAS 子网的 IP,尽管任何私有 IP 范围都可以使用,只要 IP 不会与 VPC 中实例的 IP 发生冲突)
路由和远程访问 > 服务器名称 > IPv4 ^ NAT > 新接口 > 以太网(这应该是 Eth0 - 通过 IP 验证)选择:连接到互联网的公共接口检查:在此设备上启用 NAT
路由和远程访问 > 服务器名称 > IPv4 ^ NAT > 新接口 > 以太网 2(这应该是 Eth1 - 通过 IP 验证)选择:连接到专用网络的专用接口好的,这解决了路由和远程服务问题;但是,它现在还不能正常工作。还记得我提到的“voo-doo”吗?是时候调整 RRAS 服务器以使其服从了……
Voo-doo 项目 #1(感谢 AWS 支持,在我第五次拨打支持电话后才提供此项服务)
RegEdit > HKLM\SYSTEM\CurrentControlSet\Services\Tcpip ^ 参数 > 新建 DWORD:DisableTaskOffload ^ DisableTaskOffload > 修改 > 数值数据:1
Voo-doo 项目 #2(感谢 Comcast,这周搞砸了我的家庭网络,让我恍然大悟,终于让 NAT 正常工作)路由和远程访问 > 服务器名称 > IPv4 ^ 静态路由 > 新静态路由 > 接口:以太网(即 Eth0);目的地:0.0.0.0;网络掩码:0.0.0.0;网关:RRAS 服务器的默认网关(从 IPCONFIG/ALL 获取);指标:1 路由和远程访问 > 服务器名称 > IPv4 ^ 静态路由 > 新静态路由 > 接口:以太网 2(即 Eth1);目的地:VPC 子网;网络掩码:VPC 子网掩码;网关:RRAS 服务器的默认网关;指标:1
最后是客户端机器。在我们的例子中是 Win7x64,但也可以在 Win8x64 上运行:
- 创建 VPN 连接 网络和共享中心 > 设置新连接或网络 > 连接到工作场所 创建新连接
使用我的互联网连接 互联网地址:RRAS EIP 目标名称:检查:现在不连接;只需设置它,以便我可以稍后连接(相信我)输入域凭据创建 > 关闭
- 配置 VPN 连接 ^ “AWS L2TP”(或任何您命名的名称)> 属性安全选项卡 VPN 类型:第 2 层数据加密:需要取消选择:CHAP 高级选项卡使用 PSK
Voo-doo 项目 #3(什么……你以为已经结束了吗?)RegEdit > HKLM\SYSTEM\CurrentControlSet\services\PolicyAgent ^ AssumeUDPEncapsulationContextOnSendRule > 修改 > 值数据:2
您现在应该能够 [a] 建立与 RRAS 服务器的 L2TP VPN 连接并通过私有 IP 和 FQDN 访问 LAN 服务器(假设您的 VPC 之前已配置为允许 RRAS 与您的 DC 之间的通信);建立从 LAN 服务器到公共资源的连接。Tracert 应确认流量正在穿越 RRAS 服务器。
就是这样。很简单,VPC...对吧?
最后说一句:正如我之前提到的,ACL 和 SG 设置目前相当松懈。这里的目标不是拥有一个完全安全的网络,而是一个概念验证。我强烈建议您调整 ACL 和 SG 设置以加强您的 VPC,并在过程中测试您的连接。换句话说,我不负责 - 您负责。;)