pfSense L2TP和IPsec的设置
L2TP / IPsec是一种常见的×××类型,它将L2TP(一种不安全的隧道协议)包含在使用IPsec传输模式构建的安全通道内。从pfSense 2.2-RELEASE开始支持L2TP / IPsec。 本文将介绍如何配置服务器和设置客户端。
L2TP设置
配置 L2TP 服务器
· 导航到××× > L2TP
· 选择启用L2TP服务器
· 选择WAN接口
· 将Server Address (服务器地址)设置为未使用的专用子网IP,如192.168.32.1 注意: 这不是公共IP地址或L2TP服务的"监听"IP,它是一个本地IP地址,用作客户端上的"网关"
· 将 Remote Address Range (远程地址范围)设置为未使用的专用子网,如192.168.32.128
· 将Subnet Mask(子网掩码)设置为客户端地址范围的适当值,例如25
· 将Number of L2TP Users (L2TP用户数)设置为预期的L2TP用户的最高并发数,例如8个
· 把Secret(密码)选项留空
· 设置Authentication Type (认证类型)为CHAP
· 设置L2TP DNS 服务器或留空
· 如果需要,设置RADIUS选项
添加 L2TP 用户
如果未使用RADIUS,请将L2TP用户添加到pfSense。
· 导航到××× > L2TP, Users(用户)选项卡
· 单击 "+"添加新用户
· 填写 Username(用户名), Password/Confirmation(密码和确认密码)
· 如果需要,在所选择的子网中设置静态IP address (IP地址)
· 单击保存
· 根据需要重复添加更多用户
IPsec设置
设置好L2TP服务器后,我们来进行IPsec的设置。 以下设置已经过测试并有效,但是其他类似的设置也可能会起作用。
Mobile Clients Tab(移动客户端)
· 导航到××× > IPsec, Mobile Clients(移动客户端)选项卡
· Enable IPsec Mobile Client Support(启用IPSec移动客户端支持)
· 将User Authentication (用户身份验证)设置为本地数据库
· 不要选中Provide a virtual IP address to clients(为客户端提供虚拟IP地址)
· 不要选中Provide a list of accessible networks to clients(提供可访问的网络列表给客户端)
· 单击Save(保存)
Phase 1
· 单击Tunnels(隧道)选项卡
· 设置 Enable IPsec(启用IPsec)
· 单击Save(保存)
· 单击Create Phase1(创建Phase1)按钮,或编辑现有的移动IPsec Phase 1
· 如果没有Phase 1, 并且没有出现创建Phase1按钮,请返回到移动客户端选项卡,然后单击它。
· 设置 Key Exchange version (密钥交换版本)为 1KEv1
· 填写Description(描述说明)
· 设置Authentication method (认证方法)为Mutual PSK
· 设置Negotiation Mode(谈判模式)为 Main
· 设置 My Identifier(我的标识符)为 My IP address
· 设置Encryption algorithm (加密算法)为 AES 256
· 设置 Hash algorithm(哈希算法)为 SHA1
· 设置 DH key group(DH密钥组)为14 (2048 bit)
· 注意: IOS和其他平台可能与DH key group 2 配合使用
· 设置Lifetime(有效期) 为 28800
· 不要选中 Disable Rekey(禁用预授密钥)
· 不要选中Disable Reauth(禁用预认证 )
· 设置 NAT Traversal(NAT穿透)为 Auto
· 设置 Enable DPD(启用失效对等体检测), 设置10秒和5次重试
· 单击 Save(保存)
Phase 2
· 单击 "+"显示Mobile IPsec Phase 2列表
· 单击"+"添加新的 Phase 2 条目,或单击 "e"编辑已有条目
· 设置 Mode(模式)为 Transport
· 填写Description(描述说明)
· 设置Protocol(协议) 为 ESP
· 设置 Encryption algorithms(加密算法)为AES 128
· 设置 Hash algorithms(哈希算法) 为SHA1
· 设置 PFS Key Group(密钥组)为off
· 设置 Lifetime(有效期)为 3600
· 单击 Save(保存)
Pre-Shared Key(预共享密钥)
IPsec隧道已配置完成,现在必须以特殊的方式配置预共享密钥,这对所有客户端都是常见的。
· 导航到 ××× > IPsec, Pre-Shared Keys选项卡
· 单击 "+" 添加新的PSK
· 设置Identifier(标识符)为 allusers
· 注意: "allusers"名称是pfSense用于配置通配符PSK的特殊关键字,这对于L2TP / IPsec来说是必需的。 不要为此PSK使用任何其他标识符!
· 设置Secret Type (加密类型)为PSK
· 输入 Pre-Shared Key(预共享密钥), 如aaabbbccc - 可以比这个更长一些,那将更随机、更安全!
· 单击Save(保存)
· 单击Apply Changes(应用更改)
Firewall Rules and NAT(防火墙规则和NAT)
从客户端主机通过IPsec传输流量以建立L2TP隧道,并且在L2TP内部将实际的隧道×××流量传递到跨×××的系统,必须要设置防火墙规则。
IPsec Rules(IPsec规则)
· 导航到Firewall > Rules, IPsec选项卡
· 查看当前规则。 如果有一个"允许全部"样式规则,则不需要另外添加。 可以继续下一个任务。
· 单击 "+"添加新规则
· 设置 Protocol (协议)为any,设置 Source(源)和 Destination (目标)为any
注意: 这不必通过所有流量,但至少必须通过L2TP(UDP端口1701)到防火墙的WAN IP地址
· 单击Save(保存)
· 单击Apply Changes(应用更改)
L2TP Rules(L2TP 规则)
· 导航到 Firewall > Rules, L2TP ×××选项卡
· 查看当前规则。 如果有一个"允许全部"样式规则,则不需要另外添加。 可以继续下一个任务。
· 单击 "+"添加新规则
· 设置 Protocol (协议)为any,设置 Source(源)和 Destination (目标)为any
注意:这不必传递所有流量,更严格的规则是可以限制客户端可以去的地方
· 单击Save(保存)
· 单击Apply Changes(应用更改)
Outbound NAT(出站NAT)
如果客户端必须通过×××,然后再返回到Internet,则很有可能需要出站NAT。
· 导航到Firewall > NAT, Outbound 选项卡
· 检查规则,看看它们是否适用于L2TP客户端。 在自动或混合模式下,L2TP子网应列在自动规则部分。
· 如果启用手动出站NAT,并且不存在相应规则,则添加规则来覆盖L2TP客户端。
DNS Configuration(DNS配置)
如果DNS服务器提供给客户端,并且如果使用未绑定DNS解析器,则为L2TP客户端选择的子网必须添加到它的访问列表。
· 导航到 Services > DNS Resolver, Access Lists(访问列表) 选项卡
· 单击"+"添加新的访问列表
· 输入 Access List Name(访问列表名称), 如××× Users
· 设置Action(动作)为 Allow(允许)
· 单击 "+"添加Networks(网络)
· 在"网络"框中输入×××客户端子网,例如。192.168.32.128
· 选择正确的CIDR值,例如: 25
· 单击Save(保存)
· 单击Apply Changes(应用更改)
Client Setup(客户端设置)
Windows
现在我来创建客户端×××连接。 根据正在使用的Windows的版本,有几种方法来添加这样的连接。 你可以根据需要来进行调整。
· 在客户端电脑上打开网络和共享中心
· 单击设置新的连接或网络
· 选择连接到工作区
· 单击下一步
· 如果没有就创建一个新的连接
· 单击下一步
· 单击使用我的Internet连接(×××)
· 在Internet地址栏输入IP地址或主机名
· 输入目标名称以标识连接
· 单击创建
连接已创建,但有几个默认值还必须进行修改才能正确使用。 例如,类型默认为自动,如果存在PPTP连接,则会锁定到PPTP连接,这将是非常糟糕的。 所以一定要先修改部分默认:
· 在Windows中的网络连接/适配器设置中,找到刚才创建的连接
· 在连接上单击右键
· 单击属性
单击安全选项
· 设置×××类型为使用IPsec(L2TP / IPsec)的2层隧道协议 IPsec (L2TP/IPsec)
· 单击高级设置
· 选择使用预共享的密钥作身份验证
· 输入密钥,例如: aaabbbccc
· 单击确认
· 设置数据加密为:需要加密(如果服务器拒绝将断开连接)
· 设置身份验证/允许使用这些协议为质询握手身份验证协议 (CHAP) (H)- 以匹配L2TP中的设置
· 单击确认
Try it Out(试试看)
经过上面的设置,现在应该可以连接到×××了。
Troubleshooting(故障排查)
Firewall traffic blocked outbound(防火墙流量阻塞了出站)
如果防火墙日志显示L2TP上的流量阻塞"out",则添加一个浮动防火墙规则来解决该问题发生:
· 导航到 Firewall > Rules, Floating(浮动)选项卡
· 单击 "+"添加新规则
· 设置Action(动作) 为 Pass(通过)
· 设置 Quick(快速)
· 接口选择为L2TP ×××
· 设置 Direction(方向)为 Out
· 设置Protocol (协议)为 TCP
· 根据需要设置 Source/Destination (源和目标),或设置为any
· 高级选项:
· 设置TCP Flags(TCP标识) 为 Any flags
· 设置State Type (状态类型)为Sloppy State
Precautions(注意事项)
如果客户端在NAT后面,Windows客户端将不能连接到服务器。 可以考虑通过IKEv2来实现×××连接(如果你通过路由上网,而不是直接分配外网IP上网,将不能使用L2TP / IPsec类型的×××)。可以参考这篇文章:http://fxn2025.blog.51cto.com/24757/1983419。
原文地址:https://doc.pfsense.org/index.php/L2TP/IPsec
2017年5月31日