Рейтинг:0

Можно ли маршрутизировать данные между двумя устройствами wireguard на одном компьютере?

флаг de

Я хочу узнать, сколько накладных расходов Wireguard создает на моей машине с точки зрения задержки. Однако мой сервер удален, поэтому я хотел бы протестировать его исключительно на машине, чтобы не измерять задержку всей сети.

Итак, для измерения задержки я подумал о следующей настройке.

Я добавляю к машине два устройства wireguard, wg0 и wg1. Затем я отправляю пакет на wg0, который шифрует пакет и отправляет его на wg1. Затем Wg1 расшифровывает его и отправляет на локальный порт, чтобы измерить время, которое проходит между отправкой и получением пакета.

Моя конфа WG0:

[Интерфейс]
   Адрес = 10.0.0.1/24
   ListenPort = 51871

[Вглядеться]
   Разрешенные IP-адреса = 10.0.0.1/24, 10.0.1.1/24
   Конечная точка = локальный хост: 51872

Моя конфа WG1:

[Интерфейс]
   Адрес = 10.0.1.1/24
   Порт прослушивания = 51872

[Вглядеться]
   Разрешенные IP-адреса = 10.0.0.1/24, 10.0.1.1/24
   Конечная точка = локальный хост: 51871
Я попытался использовать следующую конфигурацию, но затем не могу настроить wg1, так как установка завершается сбоем в

ip -4 маршрут добавить 10.0.0.0/24 dev wg1
из-за 
RTNETLINK отвечает: файл существует

Это имеет смысл, потому что это диапазон IP-адресов устройства wg0.

Моя конфа WG0:

[Интерфейс]
   Адрес = 10.0.0.1/24
   ListenPort = 51871
   PostUp = добавить маршрут -net 10.0.1.0/24 gw 10.0.0.1 
   PostDown = удаление маршрута -net 10.0.1.0/24 gw 10.0.0.1

[Вглядеться]
   Разрешенные IP-адреса = 10.0.0.1/24, 10.0.1.1/24
   Конечная точка = локальный хост: 51872

Моя конфа WG1:

[Интерфейс]
   Адрес = 10.0.1.1/24
   Порт прослушивания = 51872
   PostUp = маршрут добавить -net 10.0.0.1/24 gw 10.0.1.1 
   PostDown = удаление маршрута -net 10.0.0.1/24 gw 10.0.1.1


[Вглядеться]
   Разрешенные IP-адреса = 10.0.0.1/24, 10.0.1.1/24
   Конечная точка = локальный хост: 51871

Однако я не могу настроить маршрутизацию так, чтобы мой пакет действительно проходил через устройства wg. Устройства также не выполняют рукопожатие. Это вообще возможно? Или вы можете порекомендовать другую установку?.

Моя ОС - сервер Ubuntu 20.04. В качестве примечания я хочу сравнить это с другим измерением, которое я провел, когда одно из устройств wireguard работает на виртуальной машине. В этой настройке я просто запустил wg0 на хосте и wg1 на виртуальной машине. По сути, теперь я хочу выяснить накладные расходы на запуск шлюза wireguard на виртуальной машине по сравнению с его запуском на машине.

Решение:

Как и предполагалось, теперь я запускаю второе устройство wg в другом пространстве имен. Настройка была простой, потому что даже если устройство wg перемещается в другое пространство имен, порт прослушивания остается в исходном пространстве имен. RTT составляет около 2/3 по сравнению с запуском wg1 на виртуальной машине Linux для всех, кто заинтересован.

Спасибо за предложения!

A.B avatar
флаг cl
A.B
Вместо этого используйте сетевые пространства имен (или контейнеры).
user132645 avatar
флаг de
Большое спасибо за совет! Получил работу с пространствами имен. Я новичок в этом.
A.B avatar
флаг cl
A.B
Тогда вы можете ответить на свой вопрос рабочим решением.
A.B avatar
флаг cl
A.B
Еще раз извините, что предлагаю что-то: вы не должны добавлять решение *внутри* вопроса. Вы должны добавить его как ответ на вопрос, даже если это ваш собственный вопрос.
user132645 avatar
флаг de
Не беспокойтесь, я с удовольствием научусь ;)
Рейтинг:1
флаг de

Как было предложено, я использовал сетевые пространства имен. Вот настройки, которые у меня получились, хотя я не использовал файлы конфигурации:

Настройка первого устройства WG:

sudo ip link add dev wg0 type wireguard
IP-адрес sudo добавить dev wg0 10.0.0.1/24
sudo wg set wg0 listen-port 51871 закрытый ключ ./wg0.key peer PEER1_PUBKEY разрешенный ips 10.0.0.0/24 конечная точка localhost: 51872
sudo ip link setup dev wg0

Настройка устройства WG1:

sudo ip netns добавить контейнер
sudo ip link добавить wireguard типа wg1
sudo ip link set контейнер wg1 netns
sudo ip -n адрес контейнера добавить 10.0.0.2/24 dev wg1
sudo ip netns exec container wg set wg1 listen-port 51872 закрытый ключ ./wg1.key peer PEER0_PUBKEY разрешенный ips 10.0.0.0/24 конечная точка localhost: 51871
sudo ip -n контейнерная ссылка установить wg1 up
sudo ip -n container route добавить по умолчанию dev wg1

А затем я просто запускаю эхо-клиент следующим образом:

sudo ip netns exec контейнер ./udp_echo_server

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.