Ubuntu18.04雙網卡環境下安裝L2TP

一、場景

最近遇到一個需要通過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. 重啓服務或重啓機器即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章