LINUX.ORG.RU

Отваливается первый клиент wireguard если подключается второй

 , , ,


0

1

Всех с наступающим!

Я рискнул проапгрейдить ROS до 7.1. Вроде все норм. Поднял wireguard сервер, создал два пира - один rpi4 (bullseye), второй десктопный дебиан (bullseye). Ключи и адреса у пиров разные, приватный ключ сервера и интерфейс естественно один и тот же. Проблема - если подключен первый пир, я подключаю второй пир - сначала он не подключается. Точнее в интерфейсе я получаю такое

wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.70.72.3/24 scope global wg0
       valid_lft forever preferred_lft forever

link/none Маршруты добавляются правильные, но пингануть я ничего не могу, потому что шлюз (в моем случае 10.70.72.1 то бишь роутер с wireguard сервером) недоступен. Пару раз вручную перезапустив подключение через wg-quick второй пир поднимается, но тут же падает первый пир. Почему - не понятно. Такое ощущение, что за одним натом может быть только 1 пир, хотя нигде упоминания этого ограничения я не встретил. Как настроить, чтобы работало одновременно несколько пиров? Любую инфу дам, скажите только какую надо.

Примеры конфигов:

Пир 1

[Interface]
Address = 10.70.72.2/24
PrivateKey = client1_priv

[Peer]
PublicKey = server_pub
AllowedIPs = 10.70.72.0/24,192.168.1.0/24
Endpoint = public_ip:13231
PersistentKeepalive = 25

Пир 2

[Interface]
Address = 10.70.72.3/24
PrivateKey = client2_priv

[Peer]
PublicKey = server_pub
AllowedIPs = 10.70.72.0/24,192.168.1.0/24
Endpoint = public_ip:13231
PersistentKeepalive = 25

Сервер

interface/wireguard/print detail 
Flags: X - disabled; R - running 
 0  R name="wireguard1" mtu=1420 listen-port=13231 private-key="server_priv" 
      public-key="server_pub"


 1   ;;; client1
     interface=wireguard1 public-key="client1_pub" endpoint-address=10.70.72.2 endpoint-port=0 
     current-endpoint-address=10.70.72.2 current-endpoint-port=0 allowed-address=10.70.72.0/24,192.168.1.0/24 persistent-keepalive=25s rx=7.7MiB 
     tx=130.3MiB last-handshake=1h51m31s 

 2   ;;; client2
     interface=wireguard1 public-key="client2_pub" endpoint-address=10.70.72.3 endpoint-port=0 
     current-endpoint-address=10.70.72.3 current-endpoint-port=5694 allowed-address=10.70.72.0/24,192.168.1.0/24 persistent-keepalive=25s 
     rx=2421.1KiB tx=45.8MiB last-handshake=2m47s

Update. Хендшейки с обоих клиентов постоянно обновляются, с этим проблем нет. Маршруты тоже правильные и одинаковые на обоих пирах

default via 192.168.2.1 dev eth0 proto dhcp src 192.168.2.24 metric 202 
10.70.72.0/24 dev wg0 proto kernel scope link src 10.70.72.3 
192.168.1.0/24 dev wg0 scope link 
192.168.2.0/24 dev eth0 proto dhcp scope link src 192.168.2.24 metric 202


Последнее исправление: Entmatix (всего исправлений: 1)
Ответ на: комментарий от Sorcus

Мне не нужно заворачивать весь трафик в wireguard, только доступ к пирам и к локалке за сервером. Но это тоже не работает.

Нашел нерешенную тему на форуме поддержки - https://forum.mikrotik.com/viewtopic.php?t=173891 Советуют на сервере указывать в разрешенных ip адрес пира с маской 32, но это тоже не работает.

 1   ;;; client1
     interface=wireguard1 public-key="client1_pub" endpoint-address=10.70.72.2 endpoint-port=0 
     current-endpoint-address=10.70.72.2 current-endpoint-port=0 allowed-address=10.70.72.2/32 persistent-keepalive=25s rx=19.7MiB 
     tx=221.4MiB last-handshake=1m17s
Entmatix
() автор топика
Последнее исправление: Entmatix (всего исправлений: 1)
Ответ на: комментарий от Entmatix

Хм. Ну если даже так не работает…
У меня подобная фигня была, если оба клиента имели одинаковый ListenPort.
Попробуй включить дебаг для wg на сервере echo 'module wireguard +p' | sudo tee /sys/kernel/debug/dynamic_debug/control и поспотри, что происходит при подключении второго клиента.

Sorcus
()
Ответ на: комментарий от Sorcus

Сервер микрот. Там другой дебаг. В логе с дебаг флагом во время подключения ничего, кроме описания процесса хендшейка, не показывает. Хендшейк проходит, дальше глухо. Я пока настроил туннель между двумя роутерами, чтобы соединение было только с одним пиром - работает. Советы, как пофиксить, все равно жду. МБ еще напишу на оф. форум.

Entmatix
() автор топика

Такое ощущение, что за одним натом может быть только 1 пир, хотя нигде упоминания этого ограничения я не встретил.

Точно нет, у меня было несколько пиров за одним натом соединённых с одним сервером снаружи.

vitruss ★★★★★
()
Ответ на: комментарий от vitruss

Да, видимо проблема не массовая. В той же теме писали людей, что у них все работает. У меня почему-то не работает на hap lite и hap ac2. Буду тестить с обновлениями.

Entmatix
() автор топика

Я столкнулся с подобной проблемой только на Keenetic. Тоже на нем поднял Wireguard, создал пиров. Проблема в том что дает подключаться только последнему добавленному. Точнее подключиться могут все, а вот ресурсы сети может пинговать только последнесозданный пир.

Jeck1chan
()
4 апреля 2023 г.

Была аналогичная проблема: при редактировании настроек пира на сервере, ранее подключенный пир отваливался.

Разрешил сделав разные allowed-address у разных пиров. Попробуйте:

 1   ;;; client1
allowed-address=10.70.71.0/24

 2   ;;; client2
allowed-address=10.70.72.0/24

Вероятно при редактировании (или подключении) пиров WG создает маршруты на основании allowed-address и если у разных пиров одинаковые маршруты, то на сервере приоритетней становится маршрут, который был создан последним.

sewernyi
()
Ответ на: комментарий от sewernyi

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

Entmatix
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.