方案需求
在某些工作室及企业业务的应用中,需要将多个设备分别走不同的l2tp线路出去,实现指定设备走指定线路,要求实现不同的IP。而且当指定的l2tp线路断线后,指定的设备就立马断网,不让走路由原先默认的线路出去,以防设备IP变动影响业务。
申明:此文件纯属Routeros软路由技术性文章,请勿用于非法用途,由此产生的后果请自行承担,与本人无关。
实现原理
在 RouterOS v7.18.2新版本中,要实现多条l2tp vpn线路拨入,然后内网设备根据 IP 绑定到指定 L2TP 线路,并在 L2TP 线路断开时设备无法上网,一种更可靠的解决方案是彻底放弃依赖防火墙过滤来阻断绕过(因新版RouterOS v7.18.2中 对出接口匹配不再如预期工作),具体实现及配置方法如下说明。
环境说明
假设我这里有二台客户端ip分别为192.168.188.221 192.168.188.222
二条L2tp线路,要让192.168.188.221设备走l2tp1,让192.168.188.222设备走l2tp2
当l2tp1线路断线192.168.188.221设备就直断网,当l2tp2线路断线192.168.188.222设备就直断网。也就是说l2tp线路断线后设备都不能访问互联网,也不能走软路由默认的上网线路出去。
配置方法
一,配置l2tp客户端
配置2个 L2TP 客户端连接到不同的服务器。假设我们有两条 L2TP 线路,分别连接到 123.123.123.1 和 123.123.123.2
通过终端命令如下:
/interface l2tp-client
add name=l2tp1 connect-to=123.123.123.1 user=vpn password=vpn ipsec-secret=vpn use-ipsec=yes
add name=l2tp2 connect-to=123.123.123.2 user=vpn password=vpn ipsec-secret=vpn use-ipsec=yes
name:L2TP 接口的名称,便于后续引用。
connect-to:L2TP 服务器的地址(可以是域名或 IP)。
user 和 password:登录凭据。
ipsec-secret:IPsec 预共享密钥(如果服务器要求 IPsec)。
use-ipsec=yes:启用 IPsec 加密。
通过winbox菜单操作如下:
Interfaces----Interface----+号----L2TP Client
打开L2TP Client菜单----General标签页中 Name填写l2tp1
总结
- 放弃防火墙过滤阻断:新版RouterOS对出接口匹配已不稳定,不适用于阻断绕过。
- 采用lookup-only-in-table规则:强制让设备仅查找专用路由表,不回落到主路由表。
这种方法避免依赖防火墙过滤,并充分利用新版RouterOS的策略路由和动态检测能力,实现设备与L2TP线路的绑定和断链断网效果。
参考部分论坛反馈和文档建议(例如 ),这种组合方法在新版RouterOS中被认为更可靠。