Проверка скорости VPN

У меня есть сервер wg, ограниченный соединением в 100 Мбит/с. У меня есть 2 клиента в одной сети, с которыми я хотел провести тест iperf для своей уверенности.

Когда я запускаю iperf3, используя локальные IP-адреса, предоставленные моим маршрутизатором, я получаю ожидаемые 10 Гбит/с. Когда я запускаю тот же тест, используя vpn 10.8.x.x, я получаю скорости 100 Мбит/с.

Я думал, что когда я подключаю 2 клиента, они соединяются напрямую. Эти скорости заставляют меня думать, что трафик маршрутизируется через сервер.

Я что-то упускаю?

когда я подключаю 2 клиента, они соединяются напрямую.

Вы подключили их напрямую?

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

Это не так работает, они не соединяются автоматически, как DMVPN.

Когда вы использовали адреса туннеля, оба они выходили на сервер и обратно.

Когда вы использовали LAN-адреса, они переключались локально.

Не уверен, где лежит путаница.

Они 10.8.0.2 и 10.8.0.9 соответственно. Я думал, что поскольку у них обоих есть адреса 10.8, когда я пингую один с другого, это прямое соединение. Есть ли что-то, что мне нужно сделать, чтобы подключить их напрямую, кроме как дать им клиентские конфигурации?

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

Вы создали 2 VPN-туннеля. Если вы нарисуете диаграмму этого, она будет выглядеть как V (т.е. 2 стороны треугольника)

если вы хотите, чтобы они могли общаться по третьей стороне треугольника, вам нужно добавить еще один VPN-туннель

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

Если вы ожидаете, что все в вашей сети 10.8 использует определенную вами сеть WG, это не обязательно правда. Это действительно зависит от того, как вы определили сеть WG, как вы настроили своих клиентов, как вы настроили другие сети и каковы приоритеты маршрутов. В простом случае ваша сеть 10.8.0.0/16 - это сеть WG, а ваша сеть 10.9.0.0/16 - это не WG сеть, но ваши тестовые хосты находятся в обеих сетях, маршрут может или не может пересекаться с сетью WG в зависимости от того, как вы настроили пиры. Обычно, если вы запускаете iperf3 с адресами в сети WG, ваш трафик останется в сети WG, но весь другой трафик будет следовать правилам маршрутизации по умолчанию, поэтому iperf3 между хостами за пределами сети WG не будет проходить по этому маршруту, но опять же, это не обязательно в вашем конкретном конфигурации. Трудно ответить без дополнительных деталей.

Это не так работает в Wireguard. Если вы хотите что-то, что сделает это за вас, используйте Tailscale, который установит прямое соединение между пиром A и пиром B через сервер X, действующий как STUN/TURN сервер (серверы Tailscale).

Не уверен, почему это ваши ожидания.

Так что, по сути, вы говорите мне, что если сервер имеет адрес 10.8.0.1, любой клиент в сети 10.8 маршрутизирует трафик через сервер, чтобы добраться до других клиентов?

У меня настроен сервер wireguard для 10.8.0.0/24, и клиенты имеют разделенное туннелирование, так что их разрешенные IP - 10.8.0.0/24. Когда я провожу тесты iperf или ping, это происходит в сети 10.8. Я проводил тест с локальными IP-адресами, чтобы убедиться, что я получал те 10 Гбит, которые настроил, но когда я провожу те же тесты через туннель, я получаю ограничение пропускной способности в 100 Мбит/с.

Не правда. Вы могли бы легко ограничить вашу сеть WG до /28, где ваш сервер находится на .1, ваши пиры на .8 и .9, но ничего выше .15 не использует сеть WG. Это была бы плохая идея, но это абсолютно возможно.

Вы можете настроить дополнительных пир и на каждом клиенте и построить полную сетевую mesh. Это может быть трудно поддерживать вручную.

Если вы хотите полную сетевую mesh, вам также стоит взглянуть на что-то вроде tailscale. Или на другие вещи, построенные на базе wireguard, которые автоматически пытаются создать пир к пир соединения между всеми участниками сети VPN.

Таким образом, все работает как ожидается. Когда ваши хосты подключаются к серверу WG, ваши локальные таблицы маршрутов устанавливаются с предпочтением к 10.8.0.0/24 для туннеля. Поскольку сервер имеет скорость соединения 100 Мбит/с, именно это вы и получите через туннель.

Есть ли что-то еще, что делает это, кроме headscale или tailscale?

Какой самый лучший способ получить полнофункциональный трафик 10 Гбит с wireguard, оставаясь в VPN?

Их много. Тailscale, netbird и netmaker иногда упоминаются здесь, но есть также множество самодельных вариантов, если вы поищете ‘wireguard mesh’. У меня нет никаких мнений о них.

В те немногие случаи, когда мне нужна была функциональность mesh, было всего несколько узлов, и я настроил все вручную.

Для этого вам нужен будет другой сервер на 10Gb магистрали в другой сети, который не проходит через хост с соединением 100 Мбит/с. Вы можете добавить еще один сервер в сеть 10Gb или сделать один из ваших хостов сервером и подключить к нему другой хост (не идеально). Не уверен, зачем вам это делать. Меня обычно не беспокоит туннелирование трафика в не публично маршрутизируемой сети, особенно если у вас есть шифрование на уровне приложений и вы находитесь в каком-то виде VPC.

Существует опция пир к пиру, но я еще не настраивал ее лично.
Сервер действует как ручное соединение и позволяет двум клиентам общаться напрямую, пробивая правильное отверстие через правильный файрвол.

Это та функциональность, которую я ищу. Это возможно с wireguard или мне нужно переходить к чему-то вроде tail scale?