之前写过一篇文章,介绍了RouterOS上OpenVPN的配置:使用Mikrotik的RouterOS搭建OpenVPN服务器,以及配置内网互连。
因为是在网关上进行了配置,只要身处家庭或者公司内网,无需在设备上运行VPN。
我的需求是在外出的时候,也能通过VPN连接到家里的内网。但是OpenVPN对于很多设备来讲,并不是自带的VPN方案,需要安装单独的客户端。所以此篇介绍一个更加通用的VPN方案L2TP/IPsec。Mac/iPhone/Widows/Linux均默认支持。
创建IP地址池
IP地址池用于给连接到L2TP的客户端分配IP地址。
由于我使用的Mikrotik没有配置桥接,所以需要配置一个独立的网段,通过路由来实现和内网的通讯。
我这里保留了10.10.11.1地址作为服务端的地址。
/ip/pool/add name=l2tp-pool \
ranges=10.10.11.2-10.10.11.254 \
comment="l2tp peers pool"
创建L2TP配置文件
配置文件用于配置L2TP使用的地址,地址池,加密等必要信息。
我这边设置的参数比较少,因为大部分参数直接用默认就可以了。
/ppp/profile/add name=l2tp \
local-address=10.10.11.1 \
remote-address=l2tp-pool
开启L2TP服务
启用L2TP服务,使用之前步骤中创建的配置,并且启用IPsec,设置IPsec密钥。
/interface/l2tp-server/server/set enabled=yes \
default-profile=l2tp \
use-ipsec=yes \
ipsec-secret=123456
为L2TP创建用户
/ppp/secret/add name=simaek \
password=123456 \
service=l2tp \
profile=l2tp \
comment="l2tp user for mac"
为L2TP创建接口
创建接口可以和用户连接进行绑定,便于配置路由,防火墙等规则。
/interface/l2tp-server/add name=l2tp-simaek \
user=simaek \
comment="l2tp for Mac"
添加防火墙允许规则
L2TP/IPsec使用UDP 500,1701,4500端口,需要放行。如果有拦截规则,此规则必须放在拦截规则之前。
/ip/firewall/filter/add chain=input \
action=accept \
protocol=udp \
in-interface=wan1 \
dst-port=500,1701,4500 \
place-before=0 \
comment="Allow L2TP"
连接测试
iPhone:
我使用的版本为IOS 15。
设置 -> 通用 -> VPN与设备管理 -> VPN -> 添加VPN配置...
- 类型:L2TP
- 描述:兮陌的家
- 服务器:RouterOS的公网IP
- 账户:simaek
- 密码:123456(用户的密码)
- 密钥:123456(IPsec密钥)
- 发送所有流量:勾选
点击完成,选中新添加的配置,点击连接。
连接成功后,使用浏览器访问家庭内网的路由网关进行连通性测试。
在服务端也可以查看建立的连接。
/ppp/active> print
;;; L2TP for Mac
1 simaek l2tp 43.91.17.116 10.10.11.101 58s cbc(aes) + hmac(sha1)
Mac和QWinows配置就省略了,大致相同的。
在外面通过L2TP连接到家里,又因为家里和公司建立了互联,最终可以同时访问家庭和公司的网络。
关于IPsec
我们在配置的时候启用了IPsec,但是并不需要进行IPsec的配置,因为IPsec有默认的配置。一般没有特殊需要,不必折腾。
默认的配置很好的兼容大部分设备,如果更改,可能导致部分设备连接不上,尤其是加密算法,验证算法等,根据设备尝试不同的组合。