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

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

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

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

Я что-то упустил?

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

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

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

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

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

Когда вы использовали адреса локальной сети, трафик переключается локально.

Не уверен, в чем заключается путаница.

Их адреса 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. Это будет плохой идеей, но это абсолютно возможно.

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

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

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

Существует ли что-то еще, что делает это, кроме headscale или tailscale?

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

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

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

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

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

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