Рейтинг:0

WireGuard, объединяющий Hub и Spoke с точкой на сайт

флаг us

Мне нужна топология «точка-сайт», но, поскольку «клиентский» и «серверный» хосты находятся в своих собственных сетях NAT, мне нужно полагаться на третий хост в топологии Hub and Spoke.

визуализация

Хост А (концентратор)

[Интерфейс]
Приватный ключ = 
Адрес = 10.201.50.1/32
Порт прослушивания = 51820

PreUp = sysctl -w net.ipv4.ip_forward=1

[Вглядеться]
ПубличныйКлюч = 
Разрешенные IP-адреса = 10.201.50.2/32

[Вглядеться]
ПубличныйКлюч = 
Разрешенные IP-адреса = 10.201.50.3/32

Хост Б (сервер)

[Интерфейс]
Приватный ключ = 
Адрес = 10.201.50.2/32

PreUp = sysctl -w net.ipv4.ip_forward=1
PreUp = iptables -t mangle -A PREROUTING -i %i -j MARK --set-mark 0x40
PreUp = iptables -t nat -A РАЗМЕЩЕНИЕ ! -o %i -m отметка --mark 0x40 -j МАСКАРАД
PostDown = iptables -t mangle -D PREROUTING -i %i -j MARK --set-mark 0x40
PostDown = iptables -t nat -A РАЗМЕЩЕНИЕ ! -o %i -m отметка --mark 0x40 -j МАСКАРАД

[Вглядеться]
ПубличныйКлюч = 
Конечная точка = 198.230.220.45:51820
Разрешенные IP-адреса = 10.201.50.0/24
ПостоянныйKeepalive = 15

Хост C (клиент)

[Интерфейс]
Приватный ключ = 
Адрес = 10.201.50.3/32

[Вглядеться]
ПубличныйКлюч = 
Конечная точка = 198.230.220.45:51820
Разрешенные IP-адреса = 10.201.50.0/24, 10.0.0.0/24

Оба узла нормально подключаются к хабу.

интерфейс: WG0
  открытый ключ: 
  закрытый ключ: (скрытый)
  порт прослушивания: 51820

вглядеться: 
  конечная точка: :63882
  разрешенные ips: 10.201.50.3/32
  последнее рукопожатие: 35 секунд назад
  передача: 213,07 КиБ получено, 15,93 КиБ отправлено

вглядеться: 
  конечная точка: :33868
  разрешенные ips: 10.201.50.2/32
  последнее рукопожатие: 1 минута, 6 секунд назад
  передача: 7,19 КиБ получено, 5,12 КиБ отправлено

Я могу пинговать хост B с хоста C, что хорошо, но любое другое соединение не работает. Например, я не могу подключиться по ssh к хосту B, он просто зависает. Я не могу закрутить веб-сервер, работающий на Host B на порту 80, он также зависает. Насколько мне известно, на хосте B не работает брандмауэр. Другие узлы в сети узла B вообще недоступны.

Ценю твою помощь. Ваше здоровье

Рейтинг:0
флаг cn

Главное в этой ситуации убедиться Разрешенные IP-адреса на каждом узле настроен так, чтобы разрешить IP-адреса назначения пакетов, которые вы хотите Отправить (или же отправить через) сверстник.

Таким образом, если блок CIDR для локального сайта, к которому вы хотите получить доступ с хоста C через хост A на хост B, 10.0.0.0/24, убедитесь, что Разрешенные IP-адреса настройка на хосте C для хоста A включает 10.0.0.0/24 (как у вас):

# Конфигурация узла C для узла узла A
Разрешенные IP-адреса = 10.201.50.0/24, 10.0.0.0/24

А также, что Разрешенные IP-адреса настройка на хосте A для хоста B включает 10.0.0.0/24 (что вам не хватает):

# Конфигурация узла A для узла узла B
Разрешенные IP-адреса = 10.201.50.2/32, 10.0.0.0/24

Но из вашего описания работы ping и SSH/HTTP нет, у вас также может быть проблема с MTU (пакеты фрагментированы/отклонены, потому что их размер слишком велик для одного конкретного прыжка по пути). Попробуйте добавить этот параметр в [Интерфейс] раздел каждой конфигурации WireGuard:

МТУ = 1280

И вам не нужно маскироваться на хосте A (только на хосте B, как у вас).


Однако, если вы хотите направить все трафик (0.0.0.0/0) с хоста C через хост A на хост B измените конфигурацию WireGuard хоста A на это:

[Интерфейс]
Приватный ключ = ...
Адрес = 10.201.50.1/24
Порт прослушивания = 51820
Таблица = 123

PreUp = sysctl -w net.ipv4.ip_forward=1
PreUp = ip rule add iif %i таблица 123 приоритет 456
PostDown = ip rule del iif %i таблица 123 приоритет 456

# к хосту Б
[Вглядеться]
Публичный ключ = ...
Разрешенные IP-адреса = 0.0.0.0/0

# к хосту C
[Вглядеться]
Публичный ключ = ...
Разрешенные IP-адреса = 10.201.50.3/32

Это будет использовать пользовательскую таблицу маршрутизации (123) для этого трафика, чтобы избежать проблем с основной таблицей маршрутизации узла А.

(И измените конфигурацию хоста C, чтобы использовать Разрешенные IP-адреса = 0.0.0.0/0 тоже, но без каких-либо других изменений в его конфигурации.)

флаг us
Большое спасибо за указание, теперь я могу подключиться к подсети B. Я не знаю, знаете ли вы, но ваши руководства по Wireguard чрезвычайно полезны для сообщества Wireguard, нигде больше нет ничего подобного. Люди ссылаются на них повсюду. Очень выручил меня. Кроме того, соединение между хостами не работало, потому что на хосте перехода были довольно строгие настройки правил iptables, сейчас я это исправил.
флаг us
У меня есть еще вопрос, если вы не возражаете. Как мне перенаправить весь трафик с хоста C через хост B, не пропуская через него также весь трафик с концентратора? Вот что произойдет, если я просто добавлю 0.0.0.0/0 в AllowedIPs конфигурации однорангового узла B на концентраторе.

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

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