Почему Wireguard не может подключить клиента после изменения IP адреса?

Здравствуйте! <br/> У меня возникла проблема с работой сервера WireGuard. У меня есть сервер WireGuard в интернете, к которому подключается мой MikroTik из дома, и всё функционирует нормально, пока не произошел сбой. Я не смог точно зафиксировать ситуацию, но, предположительно, дело в том, что, когда у меня отключается питание дома, MikroTik перезагружается и получает другой внешний адрес (LTE). В результате сервер Linux WireGuard перестает его распознавать. После перезагрузки сервера WireGuard на Linux всё вновь начинает работать. У меня есть некоторые временные решения для исправления этой ситуации, но я пока оставлю их на потом, если не найду более подходящее решение.
  • 17 октября 2024 г. 13:22
Ответы на вопрос 2
Проблема, с которой вы сталкиваетесь, возникает из-за того, что WireGuard использует статические пары ключей и IP-адреса для аутентификации клиентов. При изменении IP-адреса вашего MikroTik, сервер WireGuard не может его идентифицировать, если не усовершенствовать настройки. Вот несколько подходов, которые могут помочь решить вашу проблему:

1. **Dynamic DNS (DDNS)**: Используйте службу динамического DNS, чтобы вашему MikroTik был присвоен фиксированный домен, который будет указывать на его изменяющийся IP-адрес. Вы можете настроить на вашем MikroTik клиент DDNS, который будет обновлять DNS-запись в режиме реального времени.

2. **Allowed IPs**: Убедитесь, что ваш сервер WireGuard позволяет IP-адреса, которые изменяются. Можно настроить `AllowedIPs` на сервере так, чтобы он принимал входящие соединения от любого IP-адреса вашего MikroTik (например, используя `0.0.0.0/0`), но будьте осторожны с этого целого адресного пространства, чтобы избежать рисков безопасности.

3. **Persistent Keepalive**: Убедитесь, что у вас настроены параметры `PersistentKeepalive` на клиенте (MikroTik). Это обеспечит регулярные "пинг"-сигналы для поддержания соединения и может помочь при изменении сетевых условий.

4. **Обновление конфигурации на сервере**: После изменения IP-адреса на MikroTik вы можете вручную обновить конфигурацию WireGuard на сервере, добавив новый IP-адрес клиента, чтобы сервер его распознал.

5. **Скрипты и автоматизация**: Разработайте скрипт на MikroTik, который будет автоматически уведомлять сервер о новом IP-адресе при его изменении. Например, вы можете использовать системный вызов для отправки обновлений через API или через регулярные «пинг»-запросы, чтобы обновить конфигурацию сервера.

6. **Мониторинг и восстановления**: Автоматизируйте процесс перезагрузки или восстановления вашего WireGuard-сервера в случае нестабильной ситуации. Это можно сделать через системный мониторинг или планировщик задач.

Каждый из этих вариантов можно настраивать в зависимости от ваших требований и инфраструктуры. Выбор подходящего решения зависит от ваших навыков и того, насколько критично для вас поддерживать стабильность соединения.
Скорее всего обмена трафиком нет, соответсвенно сервер запомнил последний ip откуда пришел пакет. Дальняя сторона перезагрузилась и получила новый адрес но не постучалась на сервер опять потому что трафика не было. Со стороны сервера тыкаешься домой а оно летит на старый адрес несуществующий. 
В общем пропиши persistent keepalive в полминуты-минуту с обоих концов.
Похожие вопросы