Назад | Перейти на главную страницу

L2TP / IPSec: Linux не может подключиться к Cisco ASA (но Windows может)

Наш партнер предоставляет услугу, которая доступна только через туннель L2TP / IPSec. Мы успешно подключаемся к нему из Windows, но пару раз в неделю соединение зависает. Поэтому я решил настроить L2TP / IPSec соединение из Linux. Но после нескольких недель попыток мне так и не удалось это сделать. Соединение устанавливается, но как только обрывается: на стороне Cisco появляется ошибка "IKE потерял связь с удаленным узлом, соединение удалено", и на стороне клиента"получил DELETE для ESP CHILD_SA с SPI".

Пробовал CentOS и FreeBSD, StrongSwan, LibreSwan и Racoon, XL2TPD и MPD5 - результат тот же! Пытался установить соединение на машине с публичным IP-адресом без межсетевых экранов и NAT - результат тот же! Я спрашивал на разных форумах, даже в сообществе Cisco, но они не могли помочь.

Интересно, что разрыв соединения IPsec происходит только после установления L2TP-соединения. Если L2TP не запущен, то соединение IPSec остается действующим (это видно из команды "setkey -D").

Компьютер Windows, с которым мы успешно подключаемся, находится в той же сети, что означает, что наш интернет-провайдер не виноват. Пожалуйста помоги! У поставщика услуг есть Cisco ASA 5550.

Журналы на стороне клиента

Журнал Cisco

ipsec.conf

mpd.conf

Воспользовавшись подсказкой Друки, я начал копать дальше, и мне удалось решить проблему! Мне не удалось заставить 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 (Line Control Protocol) не отвечают, поэтому соединение разрывается. Это либо проблема неправильно сконфигурированного [с отслеживанием состояния] фильтра пакетов, либо, возможно, неправильно сконфигурированная проблема DPD (обнаружение мертвого узла). Тебе нужно продолжить расследование.

Также обратите внимание:

  • IPCP (протокол управления IP) иногда не может согласовать IP-адреса, вам, вероятно, потребуется улучшить свой mpd5.conf в этой части.
  • ваши журналы mpd5 либо сильно запутаны, либо повреждены, в последнем случае это тревожный знак.