Как настроить маршрутизацию через цепочку серверов?
Задача: организовать доступ к строго определенному набору сайтов в зоне «.ru» (задан на уровне клиента «рентгеновского луча» на ядре «вывеска» на роутере Keenetic) через цепочку с заданной точкой выхода.
Есть 3 VPS: первый – точка входа с настроенным по схеме «steal oneself» и вроде бы корректно работающим сервисом «рентгеновский луч», один IPv4 адрес, IPv6 есть, но отключен для минимизации утечек DNS. Второй VPS – промежуточный между первым и третьим, никаких функций, кроме пересылки трафика между ними не выполняющий. Третий VPS – точка выхода.
Как настроить маршрутизацию между этими VPS, чтобы пакеты гарантированно проходили путь до адреса назначения и обратно по цепочке и в трафике с точки выхода (третий VPS) не было никаких «следов» точки входа (первый VPS)? Как-то скрывать содержимое канала от хостингов не обязательно.
Или такую задачу возможно реализовать через Cloudflare WARP так, чтобы адрес выхода был всегда из определенной страны?
Все VPS на Ubuntu 22.04, с белыми IPv4. Если есть решение для другой ОС или вообще любая рабочая схема с аналогичным функционалом – буду признателен.
Ну как вариант - ставите xray на VPS 3
На VPS 2 делаете проброс порта с помощью iptables (для примера 443) на IP VPS 3
На VPS 1 настраиваете outbound на xray на сервере VPS 3, но IP указываете от VPS 2
В итоге клиент подключится к VPS 1 , оутбоунд пойдет на VPS 2 , там с помощью iptables переадресуется на VPS 3, где уже xray его примет....
Либо просто ставите xray на vps 3, а с 1го и 2го делаете переадресацию по цепочке. в клиенте указываете IP для подключения от VPS 1
А использование xray на VPS 3 это обязательно? Проблем с настройкой и бюджетом нет. Просто как я это представлял: все правила уже заданы на VPS 1 и клиенте: на клиенте - что направлять на VPS 1 (определенный набор из зоны .ru + несколько заблокированных сервисов), на VPS 1 - все, кроме набора напрямую, набор на VPS 2 по IP. Думал, что можно как-то штатными средствами Ubuntu весь трафик как-то с VPS 2 направить на VPS 3, чтобы для стороннего наблюдателя все выглядело так, как будто источник запросов сам VPS 3. При этом, чтобы VPS 3 не занимался логикой, а просто пересылал запросы/ответы с/на VPS 2.
e31r129, я чет не понял схему. если обынчый xray, то у тебя freedom и выйдет из VPS 1...
ты не можешь направить штатными средствами весь исходящий с vps 2 на vps 3. как минимум локалка и шлюз у тебя должны идти по стандартному пути, иначе на vps 2 не будет инета.
но ты можешь переадресовать какой то входящий порт, с помощью iptables. либо надо использовать любой впн, чтобы трафф пошел через vps 3
Я, видимо, не совсем понятно формулирую) весь трафик, действительно не нужно.
Как я это понимаю и хотел бы настроить в общих чертах: когда клиент в локальной сети без каких-либо дополнительных настроек и ПО используя любой браузер пытается получить доступ к сайту из определенного набора, клиент xray на роутере направляет его запрос на сервер xray на VPS 1, с этого сервера запрос перенаправляется на VPS 2, с VPS 2 на VPS 3, с VPS 3 на сайт. Только http/https, никаких других сервисов.
Я пробовал насколько знания позволяют настраивать через iptables/nftables, но в результате или доступ к серверу пропадал или не работало совсем. Пробовал xray reverse-proxy - не осилил, да и как я понял, цепочку из двух reverse-proxy невозможно реализовать. Тройной vpn или reverse-proxy + vpn - думаю работать будет так себе в плане скорости и стабильности соединения.
Отдельный вопрос: если использовать переадресацию порта с помощью iptables, VPS 1 где-то будет светиться? WebRTC не критично, клиенты и VPS 3 в одном часовом поясе.
e31r129, ну у меня такая же схема, из 2х VPS,
Я бы поставил xray server на vps3, а с остальноых просто сделал передаресацию порта для подключения к xray
Для перадресации надо -
включить nat
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
sysctl -p