Использование NetBird peer как default gateway

Есть несколько вариантов установки NetBird. Один из вариантов подразумевает,  что вы можете использовать его как шлюз по умолчанию для других ваших сетевых устройств (на которых не установлен vpn-клиент). Так вот, из коробки он не работает. Вообще 🙂

Схема сети у нас такая:

  • vm-1 (10.10.109.22) – пользовательская машина на локальной площадке.
  • vm-2 (10.10.109.24) – netbird peer на локальной площадке.
  • vm-3 (x.x.x.x) – netbird peer на удаленной площадке.

 

Проблема

Задача собственно такая: необходимо чтобы весь исходящий трафик с машинки vm-1 выходил в интернет через машинку vm-3. При этом на машинке vm-1 мы не можем использовать никакой софт (прокси, vpn-клиенты, вообще ничего). Мы можем только указать сетевые настройки и все. А может это и не машинка вообще. И это я еще сильно все упрощаю. А вот на машинке vm-2 мы можем ставить что угодно и как угодно. Но она должна быть network gateway для машинки vm-1. При этом мы не можем выпускать трафик с vm-2 в интернет, нам надо, чтобы он роутился через vm-3.

Для решения этой задачи мы поставили Wireguard туннель между vm-2 и vm-3. Дальше начали тестировать с помощью запуска speedtest-cli на vm2.

 

Вариант с –secure используем для тестирования HTTPS, вариант без него для тестирования HTTP. Для машинки vm-1 указываем вот такие сетевые настройки:

То есть для нее роутером будет vm-2. На vm-2 у нас два сетевых интерфейса: eth0 (обычный) и wt0 (wireguard). И вот тут то начинаются проблемы. У нас категорически не хотел работать Интернет на vm-1. При этом пинги шли абсолютно нормально. В общем, довольно долго мы с этим разбирались, пока друг не подсказал мне что возможно тут проблемы с MTU. И начались переборы MTU. Для каких-то значений начинал работать speedtest-cli –secure, для каких-то отрубался и он. Но потом решение нашлось.

Решение

Оказалось, что править надо было не только MTU, но еще и MSS. В результате надо было исполнить такую команду:

на всех NetBird peer-ах по пути следования пакета. В нашем случае vm-2 и vm-3. После этого все заработало. Учтите, что эти значение не сохраняются после перезагрузки и каждый раз их надо применять заново.

Leave a Comment