Linux-Networking

L2TP/IPSec:Linux 無法連接到 Cisco ASA(但 Windows 可以)

  • March 18, 2019

我們的合作夥伴提供的服務只能通過 L2TP/IPSec 隧道獲得。我們成功地從 Windows 連接到它,但連接每週掛斷幾次。因此,我決定從 Linux 建立 L2TP/IPSec 連接。但經過數週的嘗試,我從未成功過。連接建立,但一旦中斷:在 Cisco 一側出現錯誤“ IKE 與遠端對等方失去聯繫,正在刪除連接”,在客戶端“ received DELETE for ESP CHILD_SA with SPI ”。

我嘗試了 CentOS 和 FreeBSD、StrongSwan、LibreSwan 和 Racoon、XL2TPD 和 MPD5 - 結果相同!我試圖在沒有防火牆和 NAT 的具有公共 IP 地址的機器上建立連接 - 結果相同!我在不同的論壇上問過,甚至在思科社區,但他們無能為力。

有趣的是,IPsec 連接的中斷僅發生在 L2TP 連接建立之後。如果 L2TP 沒有啟動,那麼 IPSec 連接仍然有效(這可以從“setkey -D”命令中看到)。

我們成功連接的 Windows 機器在同一個網路上,這意味著我們的 Internet 提供商不應該受到責備。請幫忙!服務提供商擁有 Cisco ASA 5550。

客戶端日誌

思科日誌

ipsec.conf

mpd.conf

借助 Drookie 的提示,我開始進一步探勘,我設法解決了問題!我沒有設法讓 MPD5 工作,但 XL2TPd+LibreSwan(在 CentOS 中)工作正常。我剛剛添加了行

:10.0.0.1

到“/etc/ppp/options.vpn-uz”,一切正常!

根據您的 Strongswan/mpd5 日誌,如果它們來自一個實例 - 您已成功建立客戶端 l2tp/ipsec 連接:

[B_uz] IPCP: LayerUp
[B_uz]   10.10.181.222 -> 195.149.70.70
[B_uz] IFACE: Add address 10.10.181.222/32->195.149.70.70 to ng2
[B_uz] IFACE: Up event
[B_uz] IFACE: Change interface ng2 flags: -0 +1

但隨後壞事開始發生:

EVENT: Processing event EVENT_READ LinkNgDataEvent() done
L2TP: RECV [MESSAGE_TYPE HELLO]
L2TP: rec'd HELLO in state established
EVENT: Processing event EVENT_TIMEOUT TimerExpires()
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout()
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout() done
EVENT: Processing event EVENT_TIMEOUT TimerExpires() done
EVENT: Processing event EVENT_TIMEOUT TimerExpires()
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout()
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout() done
EVENT: Processing event EVENT_TIMEOUT TimerExpires() done
EVENT: Processing event EVENT_TIMEOUT TimerExpires()
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout()
[L_uz] LCP: no reply to 1 echo request(s)
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout() done
EVENT: Processing event EVENT_TIMEOUT TimerExpires() done
L2TP: XMIT [MESSAGE_TYPE HELLO]
EVENT: Processing event EVENT_TIMEOUT TimerExpires()
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout()
[L_uz] LCP: no reply to 2 echo request(s)
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout() done
EVENT: Processing event EVENT_TIMEOUT TimerExpires() done
EVENT: Processing event EVENT_TIMEOUT TimerExpires()
EVENT: Processing timer "FsmKeepAlive" FsmEchoTimeout()
[L_uz] LCP: no reply to 3 echo request(s)

LCP(線路控制協議)迴聲沒有得到應答,因此連接被終止。這要麼是配置錯誤

$$ stateful $$數據包過濾器問題,或者可能是配置錯誤的 DPD(死對端檢測)問題。你需要進一步調查。 另請注意:

  • IPCP(IP 控制協議)有時無法協商 IP,您可能需要在這部分增強您的 mpd5.conf。
  • 您的 mpd5 日誌被嚴重混淆或損壞,在後一種情況下這是一個令人不安的跡象。

引用自:https://serverfault.com/questions/957493