LINUX.ORG.RU
ФорумAdmin

Double VPN на Marzban/gozargah и Wireguard, маршрутизация трафика

 ,


0

1

Итак, ради интереса и расширения знаний решил организовать Double VPN.

Общий принцип работы: Есть 2 VPS в европейских датацентрах, будем называть их VPS1 и VPS2. На VPS1 поднят Marzban/gozargah, через него домашний компьютер, находящийся внутри границ России, связывается с VPS1 по VLESS. Между VPS1 и VPS2 поднят Wireguard туннель. По логике работы Double VPN российский IP-адрес моего домашнего компьютера должен подменяться IP-адресом VPS2, однако, не работает.

Подробности: На VPS1 Marzban/gozargah работает в контейнере с серым IP-адресом 172.17.0.1. На том же VPS1 без контейнера работает WG сконфигурированный как клиент с серым IP-адресом 10.6.0.2. По команде ifconfig выдаются интерфейсы «docker0», «wg0» и «eth0»

На VPS2 без контейнера работает WG сконфигурированный как сервер с серым IP-адресом 10.6.0.1 и включён NAT.

IPv4 forwarding на обоих VPS включён. Wireguard-туннель поднимается, по команде «wg show» оба VPS показывают признаки установленного соединения. С VPS1 нормально пингуется адрес 10.6.0.1, а с VPS2 - адрес 10.6.0.2.

Российский IP-адрес моего домашнего компьютера подменяется IP-адресом VPS1, то есть VPS2 как-бы пока не при делах. Я логически понимаю, что трафик из контейнера с Marzban/gozargah на VPS1 сейчас отправляется прямо в интернет через eth0, а нужно, чтобы он отправлялся в туннель wg0, но мне не хватает знаний и умений, чтобы это прописать.

Что было попробовано:

  1. На VPS1 в конфигурационном файле Wireguard прописан AllowedIPs=0.0.0.0/0. Результат - упал SSH, VLESS-клиент на домашнем компьютере начал отсыпать Errorы.
  2. На VPS1 в конфигурационном файле Wireguard прописан AllowedIPs=172.17.0.0/24. Результат - перестаёт пинговаться 10.6.0.1, IP-адрес моего домашнего компьютера продолжает подменяться IP-адресом VPS1, то есть трафик из контейнера идёт в eth0.
  3. На VPS1 в конфигурационном файле Wireguard прописаны AllowedIPs=10.6.0.1, 172.17.0.0/24. Результат - 10.6.0.1 нормально пингуется, IP-адрес моего домашнего компьютера продолжает подменяться IP-адресом VPS1, то есть трафик из контейнера идёт в eth0.
  4. На VPS1 в ip route прописано перенаправление всего трафика на 10.6.0.2, результат ожидаемо аналогичен первому.

/

  1. Правильно ли я понимаю, что для правильной работы этой конструкции нужно на VPS1 перенаправлять трафик из интерфейса docker0 в интерфейс wg0?
  2. Нужно ли прописать аналогичное перенаправление из wg0 в docker0, чтобы «на приём» трафик шёл по тому же пути?
  3. Если 1 и 2 да, то как правильно это прописать?
  4. Нужно ли что-либо дополнительно настраивать на VPS2?

То, что удаётся находить по теме с помощью гугла, в том числе, на этом форуме, рассчитано на людей с уверенными знаниями, а я крайне не силён в iptables и маршрутизации. Тем не менее, новую информацию усваиваю быстро.

Прошу помощи у знающих людей. Если для полного понимания будет нужно содержимое конфигурационных файлов и.т.п. - предоставлю.



Последнее исправление: Dmitro_94 (всего исправлений: 2)

Кто осилил дочитать ставьте плюс!
2ТС если вы думаете что по вашей портянке «Правильно ли я понимаю, что для правильной работы», «Нужно ли прописать»... и т.п. вам помогут, то имхо вы сильно заблуждаетесь.

anc ★★★★★
()
Ответ на: комментарий от NyXzOr

Наугад подставляешь?

Подставлял те IP, которые мне казались подходящими исходя из правил написания конфигов WG и общей логики работы.

Чем wg поднимается?

Он прописан в автозапуске на обоих VPS (systemctl enable).

Включение NAT на VPS2 прописано в конфигурационном файле WG по аналогии с https://tavda.net/wireguard.

Dmitro_94
() автор топика
Ответ на: комментарий от Dmitro_94

Если правильно распарсил:

  1. На клиенте прописываем маршрут 10.X для сети 172.X
  2. На VPS1 прописываем SNAT для WG-интерфейса.
  3. На VPS2 инструкция для WG по вашей ссылке в принципе должна работать.
ALiEN175
()