0x00 为什么使用L2TP over ipsec

L2TP 协议自身不提供加密协议,所以是不安全的,可以和安全协议搭配使用。通常情况L2TP与IPsec搭配使用。

0x01 Mikrotik L2TP/IPSEC 服务端配置

本文基于Mikrotik 6.40.5

配置 L2TP Server

  • 首先启用 l2tp server
[admin@RouterOS] > /interface l2tp-server server set enabled=yes use-ipsec=required  ipsec-secret=passwd

use-ipsec 的值 required,是为了确保服务器只接受使用了 IPsec 封装的 L2TP 连接。
这个时候,系统会自动配置一条 ipsec 的 peer 规则,如下所示:

[admin@RouterOS] > /ip ipsec peer print 
Flags: X - disabled, D - dynamic, R - responder 
 0  DR address=::/0 passive=yes auth-method=pre-shared-key secret="passwd" generate-policy=port-strict 
       policy-template-group=default exchange-mode=main-l2tp send-initial-contact=yes 
       nat-traversal=yes proposal-check=obey hash-algorithm=sha1 
       enc-algorithm=aes-256,aes-192,aes-128,3des dh-group=modp2048,modp1024 lifetime=1d 
       dpd-interval=2m dpd-maximum-failures=5

注意查看是否已经存在静态的 ipsec peer (对等配置)。
peer 配置其实就是大家常说的第一阶段。

那么第二阶段的参数在哪里呢? MikroTik IPsec 第二阶段的参数有一个默认值,如下所示:

[admin@MikroTik] > /ip ipsec proposal print 
Flags: X - disabled, * - default 
 0  * name="default" auth-algorithms=sha1 
      enc-algorithms=aes-256-cbc,aes-192-cbc,aes-128-cbc,3des lifetime=30m 
      pfs-group=modp1024

如果我们需要自定义这些参数,就直接修改这条规则即可,其他的规则主要是用来做 IPsec 发起者或者做 site-to-site ipsec 的时候才会用到。

  • 创建 VPN 地址池,添加用户:
[admin@RouterOS] > /ip pool add name=vpn-pool range=192.168.99.2-192.168.99.100
[admin@RouterOS] > /ppp profile add name=l2tp-profile local-address=192.168.99.1 remote-address=vpn-pool
[admin@RouterOS] > /ppp secret add name=163stack password=passwd service=l2tp
  • 配置防火墙
    如果路由器配置了严格的防火墙规则,记得添加允许接受 l2tp 和 ipsec 的规则:
[admin@RouterOS] > /ip firewall filter add chain=input protocol=udp port=1701,500,4500 action=accept disabled=no
[admin@RouterOS] > /ip firewall filter add chain=input protocol=ipsec-esp action=accept disabled=no

L2TP IPSEC 客户端配置

  • Windows L2TP 客户端配置方法
  • MacOs L2TP 客户端配置方法