Jump to content
  • 2

4.0: нарушение работы Wireguard интерфейсов при выключении Ethernet-портов


dimon27254

Question

@Le ecureuil @sergeyk в свежих 4.0 (я проверял в 4.0 Beta 3, аналогично было и на Beta 2) нашел баг, при котором нарушается работа всех имеющихся на кинетике Wireguard интерфейсов.

Для его проявления достаточно программно (через веб или cli) выключить любой из Ethernet-портов. Помимо сообщений о выключении порта в лог также выводится, что кинетик по каким-то причинам "забывает" всех своих пиров, после чего интерфейсы переходят в режим ожидания:

wireguard: Wireguard0: peer "*" (*) (*.*.*.*:*) destroyed
Network::Interface::Base: "Wireguard0": "wireguard" changed "link" layer state "running" to "pending".
wireguard: Wireguard1: peer "*" (*) (*.*.*.*:*) destroyed
Network::Interface::Base: "Wireguard1": "wireguard" changed "link" layer state "running" to "pending".

Начиная с этого момента удаленные клиенты не могут подключиться к WG-интерфейсам кинетика. Клиентами делаются безуспешные попытки установить хэндшейк, а в кинетике сыпятся пачками записи вида:

wireguard: Wireguard0: invalid handshake initiation from *.*.*.*:*
wireguard: Wireguard1: invalid handshake initiation from *.*.*.*:*

Попытки перезапуска туннеля со стороны клиентов ни к чему не приводят.

Починить сломанные интерфейсы удается только со стороны кинетика - или через выкл/вкл каждого (например, в веб-интерфейсе), или же нужно перевести ранее отключенный Ethernet-порт в любое отличное от "выкл" состояние (например, установить автосогласование, дуплекс, скорость). В логе появляются записи о пересоздании пиров:

wireguard: Wireguard0: peer "*" (*) created
wireguard: Wireguard1: peer "*" (*) created

Далее клиенты успешно выполняют хейндшейк и туннели поднимаются:

wireguard: Wireguard0: receiving handshake initiation from peer "*" (*) (*.*.*.*:*)
wireguard: Wireguard0: sending handshake response to peer "*" (*) (*.*.*.*:*)
wireguard: Wireguard1: receiving handshake initiation from peer "*" (*) (*.*.*.*:*)
wireguard: Wireguard1: sending handshake response to peer "*" (*) (*.*.*.*:*)
Network::Interface::Base: "Wireguard0": "wireguard" changed "link" layer state "pending" to "running".
Network::Interface::Base: "Wireguard1": "wireguard" changed "link" layer state "pending" to "running".

Таким образом, имеется зависимость Wireguard-соединений от установленного режима работы Ethernet-порта.

При этом, экспериментальным путем выяснил, что изменение режима порта в пределах "невыключенного" состояния, т.е. изменение только скорости, дуплекса или автосогласования без полного выключения порта, к проявлению вышеописанной ситуации не приводят.

Посмотрите, пожалуйста, в чем может быть причина такого бага.

  • Thanks 2
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Продолжил эксперименты и обнаружил, что WG-туннели падают при попытке выключения вообще любого интерфейса, а затем восстанавливаются при его включении.

@vst в одной из недавних смежных тем по падению Wireguard вы упоминали тикет NDM-2773. Судя по всему, он относится также и к моему случаю. Есть шанс в ближайших бетах ожидать исправление?

Edited by dimon27254
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...