Итак, ради интереса и расширения знаний решил организовать 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, но мне не хватает знаний и умений, чтобы это прописать.
Что было попробовано:
- На VPS1 в конфигурационном файле Wireguard прописан AllowedIPs=0.0.0.0/0. Результат - упал SSH, VLESS-клиент на домашнем компьютере начал отсыпать Errorы.
- На VPS1 в конфигурационном файле Wireguard прописан AllowedIPs=172.17.0.0/24. Результат - перестаёт пинговаться 10.6.0.1, IP-адрес моего домашнего компьютера продолжает подменяться IP-адресом VPS1, то есть трафик из контейнера идёт в eth0.
- На VPS1 в конфигурационном файле Wireguard прописаны AllowedIPs=10.6.0.1, 172.17.0.0/24. Результат - 10.6.0.1 нормально пингуется, IP-адрес моего домашнего компьютера продолжает подменяться IP-адресом VPS1, то есть трафик из контейнера идёт в eth0.
- На VPS1 в ip route прописано перенаправление всего трафика на 10.6.0.2, результат ожидаемо аналогичен первому.
/
- Правильно ли я понимаю, что для правильной работы этой конструкции нужно на VPS1 перенаправлять трафик из интерфейса docker0 в интерфейс wg0?
- Нужно ли прописать аналогичное перенаправление из wg0 в docker0, чтобы «на приём» трафик шёл по тому же пути?
- Если 1 и 2 да, то как правильно это прописать?
- Нужно ли что-либо дополнительно настраивать на VPS2?
То, что удаётся находить по теме с помощью гугла, в том числе, на этом форуме, рассчитано на людей с уверенными знаниями, а я крайне не силён в iptables и маршрутизации. Тем не менее, новую информацию усваиваю быстро.
Прошу помощи у знающих людей. Если для полного понимания будет нужно содержимое конфигурационных файлов и.т.п. - предоставлю.