Всех приветствую.
Сразу скажу цель всего моего деяния: хочу подключаться к VPS по VPN, а далее трафик который идет к VPS пусть по второму VPN (сервера Cloudflare, конфиг к которому сгенерен через wgcf). У меня было несколько фундаментально разных попыток сделать это.
Попытка 1:
У меня есть VPS, у нее есть три интерефейса: wg0, wg1, eth0.
К VPS я подключаюсь через wg0, а wg1 - это WireGuard подключаемый к серверам Cloudflare.
То есть я хочу сделать цепочку вида:
Local PC (connects with wg0) → VPS → (connects with wg1) → Cloudflare → Destination.
Мой VPS выступает как будто в роли proxy, но хочу я это сделать через VPNы. Единственная проблема - я могу настроить, только Local PC и VPS.
Когда включаю оба интерфейса wg1 и wg0, то wg0 может совершать хендшейки, но перенаправлять трафик между ними я не осилил. Я каким-то образом видимо должен nat правильно настроить?..
Для настройки интерфейсов, использую я iptables и wg-quick, иногда ip. Если не использовать wg1 и использовать настройку рода iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0, то цепочка становится рабочей и выглядит так:
Local PC (connects with wg0) → VPS (connects with eth0) → Destination.
Возможно ли сделать, то что я хочу (перенаправить трафик далее на второй vpn)? Ну и повторяю проблему - нет доступа к настройкам сервера cloudflare.
Попытка 2:
Вместо того, чтобы поддерживать 2 интерфейса с VPN - я объединил их в один. То есть взял конфиг с wg1 (который к cloudflare подключается), и напихал туда своих пиров, и пирам раскидал публичный ключ этого интерфейса, который легко восстанавливается из приватного.
Тогда конфиг для сервера выглядит следующим образом:
[Interface]
PrivateKey = <key>
Address = 172.16.0.2/32
Address = 2606:4700:110:8f92:848e:9ae:5e1f:db28/128
ListenPort = 33333
DNS = 1.1.1.1
MTU = 1280
#Table = 123
#PostUp = sysctl -w net.ipv4.ip_forward=1
#PostUp = ip rule add iif wg1 table 123 priority 456
#PostDown = ip rule del iif wg1 table 123 priority 456
#PostUp = sysctl -w net.ipv6.conf.all.forwarding=1
#PostUp = ip -6 rule add iif wg1 table 123 priority 456
#PostDown = ip -6 rule del iif wg1 table 123 priority 456
[Peer]
PublicKey = <key>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = engage.cloudflareclient.com:<port>
[Peer]
PublicKey = <key>
AllowedIPs = 172.16.0.3/32
Endpoint = <ip>:<port>
Конфиг для клиента остался тем же (только публичный ключ у пира поменялся):
[Interface]
Address = 172.16.0.3/24
ListenPort = 33333
PrivateKey = <key>
[Peer]
PublicKey = <key>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <ip>:33333
Теперь даже хендшейков не происходит. Пытался делать в аналогии с Multi-Hop WireGuard | Pro Custodibus, но моя проблема естественно, что я не могу настроить что-то на серверах cloudflare. То есть сервер cloudflare для меня черный ящик…
Некоторые настройки закоментированы, потому что, что с ними что без не работает, хотя поведение разное…
====================================
Я не пробовал жестко дебагать, потому что не умею в это, с сетями слаб, если кто-то что может посоветовать буду рад. Про дебагать я имею ввиду следующее: возможно мне хотелось бы уметь полностью отследить пришел ли пакет, прошел ли он через routing table, перешел ли в другой интерфейс, в корректном состоянии он или нет и т.д.
Ну и в целом вопрос можно ли реализовать то, что я хочу? Может я вообще фигню пытаюсь сделать…
Короче нужна ваша помощь. Сам уже не справлюсь, силы на исходе)
Заранее спасибо!