Инициировать связть через WireGuard
От: cppguard  
Дата: 05.07.23 01:27
Оценка:
Дано: устройство в локальной сети, имеющее выход в интернет через маршрутизатор, маршрутизатор использует мобильный интернет в качестве внешнего соединения. Получается двойной NAT — внутри локальной сети, и от мобильного оператора. Соответственно, изначально ни устройство, ни маршрутизатор не доступны из внешней сети.
Решение: настроить удалённый сервер WireGuard и подключить к нему оба узла.
Проблема: WireGuard на маршрутизаторе настраивается через WEB UI (Zyxel Keenetic OS) и работает как и ожидается, а вот устройство не хочет выходить на связь.
Возможное решение: как я полагаю, проблема кроется в NAT-e локальной сети, который не пускает пакеты от WG сервера до устройства — их перехватывает маршрутизатор и не знает, что с ними делать.

Возможно ли каким-то стандартными настройками заставить устройство в локальной сети первым связываеться с сервером? Или проблема в чём-то другом?

UPD: проще говоря — нужно обеспечить возможность удалённого подключения к устройству из внешней сети без всяких сложных пробросов портов и правил маршрутизации.
Отредактировано 05.07.2023 1:29 cppguard . Предыдущая версия .
Re: Инициировать связть через WireGuard
От: aik Австралия  
Дата: 05.07.23 01:54
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Возможно ли каким-то стандартными настройками заставить устройство в локальной сети первым связываеться с сервером? Или проблема в чём-то другом?


(ничего про WireGuard не знаю)
Я б выключил этот впн на роутере и отлаживал только устройство. Мало ли там везде одни и те же ключи, и сервер не может различить устройство и роутер, выдал ip первому, а второго игнорирует. tcpdump на устройстве+роутере+сервере покажет кто не пускает пакеты.

C>UPD: проще говоря — нужно обеспечить возможность удалённого подключения к устройству из внешней сети без всяких сложных пробросов портов и правил маршрутизации.


ssh -R123:localhost:123 и на сервере открыть порт 123 — это выглядит проще, чем vpn и настройка nat на сервере
Или устройство получает внешний ip?
Re[2]: Инициировать связть через WireGuard
От: cppguard  
Дата: 05.07.23 02:17
Оценка:
Здравствуйте, aik, Вы писали:

aik>(ничего про WireGuard не знаю)

aik>Я б выключил этот впн на роутере и отлаживал только устройство. Мало ли там везде одни и те же ключи, и сервер не может различить устройство и роутер, выдал ip первому, а второго игнорирует. tcpdump на устройстве+роутере+сервере покажет кто не пускает пакеты.

aik>ssh -R123:localhost:123 и на сервере открыть порт 123 — это выглядит проще, чем vpn и настройка nat на сервере

aik>Или устройство получает внешний ip?

Всё оказалось проще — нужно было PersistentKeepalive включить на устройстве.
Re[3]: Инициировать связть через WireGuard
От: aik Австралия  
Дата: 05.07.23 02:27
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Всё оказалось проще — нужно было PersistentKeepalive включить на устройстве.


Звучит странно для vpn, оно должно было работать и без этого, хоть и недолго, это роутер настолько нетерпелив? Ну да ладно.
Re[4]: Инициировать связть через WireGuard
От: cppguard  
Дата: 05.07.23 04:09
Оценка: 3 (1)
Здравствуйте, aik, Вы писали:

aik>Звучит странно для vpn, оно должно было работать и без этого, хоть и недолго, это роутер настолько нетерпелив? Ну да ладно.


На нескольких ресурсах было написано, что с PersistentKeepalive=0 (это по-умолчанию) если клиент сам не инициировал передачу пакетов, то соединение не открывается. Даже если пинговать этого клиента с сервера. То есть, оно работает конечно, но очень странно. Я оставил бесконечный работающий ping с сервера до клиента, пинг висел без пакетов. Я ишёл на обед на полчаса, а когда вернулся, то клиент пинговался. Получается, что без того параметра соединение установится рано или поздно, но когда это будет —
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.