Подключение к одноранговому узлу Wireguard возможно только после проверки связи с сервером

Итак, у меня один компьютер настроен как сервер, а все остальные - как узлы. Вот конфигурация сервера:

[Interface]
Address = 10.0.0.1/16
SaveConfig = false
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp6s0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o enp6s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp6s0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp6s0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <key>

# ... more peers that work fine ...

[Peer]
PublicKey = <key>
AllowedIPs = 10.0.55.2

А вот конфигурация нового однорангового узла, который вызывает проблемы:

[Interface]
Address = 10.0.55.2
SaveConfig = false
ListenPort = 51820
PrivateKey = <key>

[Peer]
PublicKey = <key>
AllowedIPs = 10.0.0.0/16
Endpoint = my.endpoint.com:51820

Я могу подключиться к этому новому одноранговому узлу только ПОСЛЕ я отправил эхо-запрос на сервер от этого нового однорангового узла. До тех пор я получаю только сообщения Destination Host Unreachable .

Я также пробовал использовать только адреса / 24, но это ничего не изменило.

Кто-нибудь знает, что происходит не так?

Я Думаю, я мог бы добавить команду ping как команду PostUp , но это кажется плохим решением.

0
задан 24 September 2019 в 13:45
2 ответа

В конечном итоге пакеты отправляются на MAC-адрес целевого хоста. Для этого требуется, чтобы MAC-адрес хоста назначения был в таблице ARP хоста-отправителя или чтобы MAC-адрес хоста-отправителя Шлюз по умолчанию был в таблице ARP хостов-отправителей (для нелокальной связи). Если хост-отправитель и хост-получатель находятся в одной сети уровня 3, то хост-отправитель будет транслировать MAC-адрес хоста назначения в локальной сети. Если хост-отправитель и хост-получатель находятся в разных сетях уровня 3, то хост-отправитель будет транслировать для MAC-адреса настроенного им шлюза по умолчанию в локальной сети. Когда он получит ответ, он добавит этот MAC-адрес в свою таблицу ARP.

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

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

0
ответ дан 5 December 2019 в 00:42

Я тестировал WireGuard в домашней лаборатории и обнаружил ту же проблему.

У меня есть два маршрутизатора, один из которых является GW по умолчанию в сети назначения, а другой — за NAT GW — с сервером WireGuard. У меня даже есть маршрут к сети WireGuard в GW по умолчанию, - и пингуется на каждый хост - как вы говорите - в сети назначения из клиента WireGuard, мне нужно было вручную добавить маршрут в сеть WireGuard, на место назначения хост вручную.

Наконец-то это сработало.

Теоретически, если ваш маршрутизатор по умолчанию также действует как сервер WireGuard. Должно работать без проблем, но в моем случае надо было сделать так.

1
ответ дан 31 July 2021 в 10:18

Теги

Похожие вопросы