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