欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ubuntu18.04双网卡环境下安装L2TP

程序员文章站 2022-06-03 21:24:44
...

一、场景

最近遇到一个需要通过IPSec/L2TP来实现本地双网卡的网络转发的测试需求。具体内容就是,在一台Ubuntu18.04的机器上配置了双网卡ens33和ens34,需要通过ens33拨入,然后通过ens34将数据转发出去,使用psk的l2tp协议。

二、遇到问题

安装过程比较简单,很快完成了安装以及iptables和路由表的配置,功能正常,但是始终出现一个奇怪的问题就是,l2tp的连接会在大约25分钟左右中断,并且无法再重新接入,查看了日志具体表现在以下的错误。

xl2tpd[26104]: Maximum retries exceeded for tunnel 33925.  Closing.
xl2tpd[26104]: Connection 0 closed to xxx.xxx.xxx.xxx, port 1701 (Timeout)
xl2tpd[26104]: Unable to deliver closing message for tunnel 33925. Destroying anyway.

经过反复查看日志发现,是在配置网卡之后系统会自动将默认的网卡从ens33切换到ens34,导致该错误。于是通过在l2tp的配置中强制将1701端口的服务绑定到ens33的IP既可以解决该问题。

三、安装及配置

  1. 正常通过一键安装脚本安装即可,这里不赘述。只是需要注意为了避免错误安装是不要接入转发的出口IP网卡,只接入用于拨入的网卡。
  2. 编辑/etc/iptables.rules文件,这个时候该规则已经是配置好的,只需要将无关的规则注释掉, 同时修改已有规则,保证nat转发规则正常即可,可以参考我的另一篇文章使用ubuntu18.04配置ocserv服务
  3. 配置ip route规则,设置默认的转发网卡。
  4. 这一步是解决自动掉线的核心,其实也很简单,只需要在l2tp的配置中增加IP绑定即可,编辑/etc/xl2tpd/xl2tpd.conf文件,作如下修改:
[global]
port = 1701
listen-addr=xxx.xxx.xxx.xxx(这里的IP是用于接入的ens33网卡的绑定的IP)
  1. 重启服务或重启机器即可。