LINUX.ORG.RU

Сервер VPS с несколькими IP, как соединившись по SSH выходить с разных IP?

 ,


0

1

Здравствуйте, подскажите пожалуйста. Есть сервер VPS на нем 5 дополнительных IP, настроил 3proxy всё работает. При коннекте по socks5 на IP1 выходит в интернет по IP1, на IP2 выходит в интернет по IP2 и т.д. Но при коннекте по SSH на любой из 5 IP в интернет выходит только через основной IP. Как сделать чтоб при коннекте по SSH на IP2 выходить в интернет по IP2 и т.д.


начнем с

mtr -a <IP1> 8.8.8.8
mtr -a <IP2> 8.8.8.8

затем предлагаю двигаться в сторону формализации критерия

при коннекте по SSH на IP2

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

На локальной Win7 создаю SSH тунель. Коннекчусь по SSH к VPS. На VPS 5 разных IP. При коннекте по SSH на любой из пяти IP, в интернете Win7 все равно виден как IP1. Как и где на VPS сделать так, чтоб при коннекте по SSH на IP2, IP3 и т.д мой Win7 был виден как IP2, IP3 и т.д.?

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

По ссылкам выше вроде нашел, но я не спец в Linux и в некоторых моментах боюсь ошибиться, не поможите?

First, create two tables (Replace <NAME1> and <NAME2> with sensible names for your two providers, same with IP1, DEV1, and so on): Cоздаю таблицу для каждого IP <NAME1> and <NAME2> можно переименовать а можно оставить так. тогда ничего не меняем тут

echo 200 <NAME1> >> /etc/iproute2/rt_tables echo 201 <NAME2> >> /etc/iproute2/rt_tables echo 203 <NAME2> >> /etc/iproute2/rt_tables

Add a gateway to each routing table (if needed): Добавить путь если надо. А как узнать когда оно надо?

ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1> ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2> ip route add <NET3> dev <DEV2> src <SRC2> table <NAME3>

Then a default route: Оставляем по умолчанию. Тут вместо IP1,IP2,IP3 вставляю свои IPv4

ip route add default via <IP1> table <NAME1> ip route add default via <IP2> table <NAME2> ip route add default via <IP3> table <NAME3>

Then the rules to select the route table based on the source address: Тут тоже, вместо IP1,IP2,IP3 вставляю свои IPv4

ip rule add from <IP1> table <NAME1> ip rule add from <IP2> table <NAME2> ip rule add from <IP3> table <NAME3>

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

По ссылкам выше вроде нашел, но я не спец в Linux и в некоторых моментах боюсь ошибиться, не поможите?

First, create two tables (Replace <NAME1> and <NAME2> with sensible names for your two providers, same with IP1, DEV1, and so on): Cоздаю таблицу для каждого IP <NAME1> and <NAME2> можно переименовать а можно оставить так. тогда ничего не меняем тут

echo 200 <NAME1> >> /etc/iproute2/rt_tables
echo 201 <NAME2> >> /etc/iproute2/rt_tables
echo 203 <NAME2> >> /etc/iproute2/rt_tables

Add a gateway to each routing table (if needed): Добавить путь если надо. А как узнать когда оно надо?

ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>
ip route add <NET3> dev <DEV2> src <SRC2> table <NAME3>

Then a default route: Оставляем по умолчанию. Тут вместо IP1,IP2,IP3 вставляю свои IPv4

ip route add default via <IP1> table <NAME1>
ip route add default via <IP2> table <NAME2>
ip route add default via <IP3> table <NAME3>

Then the rules to select the route table based on the source address: Тут тоже, вместо IP1,IP2,IP3 вставляю свои IPv4


ip rule add from <IP1> table <NAME1>
ip rule add from <IP2> table <NAME2>
ip rule add from <IP3> table <NAME3>
MOTOP
() автор топика
Ответ на: комментарий от MOTOP

чтоб при коннекте по SSH на IP2, IP3 и т.д мой Win7 был виден как IP2, IP3 и т.д.?

Нет такого критерия «при коннекте по SSH на IP2, IP3». Я не знаю, как тебе это объяснить. Вот ты все правильно читаешь, это нормально и понятно. И может даже сподобишься все сделать, кроме одного: критерия.

Вот поставь себя на место ядра. Надо отправлять пакет на 8.8.8.8. Надо выбрать исходящий интерфейс. На основании, блин, чего? Того, что «это потребовалось для обработки dynamic forwarding запроса, обслуживаемого SSH-сервером в рамках работы с соединением, установленным именно на этот IP-адрес» не канает. Мало ли с какого перепугу это потребовалось, какой программе и какое именно соединение было в тот момент в ее userspace'ном ввиду.

СПВ, как это решается? Не изобрели ли какие-нибудь свежие network groups для распихивания туда пяти инстансов SSH-сервера? Как назначать исходящий интерфейс per process instance? Или это есть у ssh? Или это все как-то проще решается?

Когда я такое делал (только я интерфейсы накрест использовал), мне пришлось юзать два инстанса SOCKS-прокси, где можно было указывать source IP.

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

Вот например, для 3proxy в конфиге прописано условно так, при коннекте на интерфейс IP2 выходить в интернет через IP2 и т.д. Порт socks5 на всех IP один и тот же. Почему при подключении по SSH нельзя сделать подобное. Сервер видит что к нему подключились по SSH на интерфейс IP2 и он исходя из этого направляет соединение в интернет по IP2. Или при соединении по SSH сервер не видит на какой IP пришел коннект?

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

ssh должен назначить соответствующий адрес порту перед установлением исходящего соединения. Я думаю, надо патчить sshd, если там нет такого кода.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от MOTOP

socks-прокси в ssh это нашлёпка сбоку. ssh это не полноценный прокси-сервер, поэтому не надо ждать от него богатого функционала.

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

Как назначать исходящий интерфейс per process instance?

Цель подстроки процесса из iptables уже выкинули. Точно есть цель uid, так что можно создать пользователя ethX, маркировать все его пакеты файерволом и потом в процессе маршрутизации отправлять их через определённый интерфейс.

В такой конфигурации можно логиниться на машину ssh ethX@hostname и быть у веренным, что дальше генерируеый траффик пойдёт через ethX.

aidaho ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.