LINUX.ORG.RU
ФорумAdmin

Подскажите, как выбрать исходящий IP в SSH-туннеле!


0

1

У меня есть сервер, на котором навешано много адресов! Я хочу использовать сервер, как socks5 proxy. Всё получается, подключаюсь с помощью ssh -D, всё отлично работает, но! Я хочу руками выбрать, от какого именно IP-адреса из множества адресов на сервере будут идти мои коннекты. Сейчас они идут от одного и того же адреса, вне зависимости от того, к какому из множества адресов я соединяюсь командой ssh!

Вопрос, наверное, глупый, но я новенький, курил маны в ssh и не нашёл. Отцы, подскажите, как это сделать!


Ответ на: комментарий от zolden

Почему кратко?

Мне нужно ходить по www с разных адресов. Точнее, не мне нужно, а мне поставили задачу сделать так, чтоб это можно было. У компании, которая мне поставила такую задачу, есть сервер, на котором IP-16 адресов. Я подумал, что это легко будет осуществить, если пользоваться socks5 proxy + ssh. Нужно лишь запустить ssh на машине, с которой планируется идти в инет с одного из 16 адресов того самого сервера, а браузер - настроить ходить через socks5 proxy, который, скажем, на localhost:1080 будет слушать (ssh -D1080 user@server).

Но проблема в том, что все коннекты через socks5 идут лишь от одного из тех самых 16 адресов сервера. А как выбрать, от какого именно?

Подскажите пожалуйста!

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

man ssh!

Если уж вы испольуете ssh -D, что мешает прочитать man по ней? Ведь там же написано, что -D может принимать не только порт, но и адрес.

anonymous
()
Ответ на: комментарий от xl743

Давайте уточним - вы цепляетесь на один из 16 публичных адресов этого сервера, а дальше через него ходите в интернет.
И на на конечном хосте, входящие пакеты видны как пакеты с src_ip равным = ip вашего сервера?
Т.е. по сути поменять адрес которым это прокси-сервер светит в интернет.
Если так, то на уровне ssh вы ничего не сможете сделать. Если не так, то я ничего не понял из вашего описания
Если у вас есть рутовый доступ к настройке этого промежуточного сервера, и вы уверены что все 16 адресов открыты в публичный интернет (для меня это кажется странным, ибо непонятно как настроена маршрутизация), то самый простой способ - это поменять исходящий интерфейс(ну или адрес, если все адреса на одном интерфейсе висят) в дефолтном маршруте.
Другой способ - использовать SNAT. Думаю правило будет выглядеть примерно так, если что - гуру поправят:
iptables -t nat -A POSTROUTING -p TCP -o eth0 -s YOUR_CURRENT_IP -j SNAT --to-source IP_YOU_NEED

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

есть сервер, на котором IP-16 адресов.

Нужно лишь запустить ssh на машине, с которой планируется идти в инет с одного из 16 адресов

Адреса на клиентской машине или на сервере?

Почему браузер должен общаться с ssh (localhost:1080), а не с socks5 proxy напрямую на сервере?

И если на сервере socks5 proxy, то с какого адреса он пойдёт в Инет, тот адрес и будте. Его и надо настраивать.

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

Адреса на клиентской машине или на сервере?

На сервере!

Почему браузер должен общаться с ssh (localhost:1080), а не с socks5 proxy напрямую на сервере?

Чтоб не устанавливать лишний софт на сервере и чтобы можно было одновременно с разных рабочих станций ходить будто бы с разных адресов!

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

Точно не смогу? :(

инфа 146%

попробуйте переформулировать изначальную задачу, мне вообще пока непонятно к чему все эти сложности

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

Есть удалённый сервер с несколькими IP-адресами, висящими на одном интерфейсе. Есть необходимость ходить в инет через прокси с нескольких разных IP адресов одновременно. Вот такая задача.

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

IP-адресами, висящими на одном интерфейсе - Это как? subinterfaces?

У вас сервер подключен к разным сетям одновременно? Вообще все будет идти через дефолтный gw который прописан на сервере. Напишите нормально что за разные адреса.

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

Есть необходимость ходить в инет через прокси с нескольких разных IP адресов одновременно

У меня есть смутное ощущение что это надуманная необходимость
Давайте ещё на уровень выше подымемся - для какой задачи понадобилось решение задачи в текущей формулировке, и можно ли решить исходную задачу как-то иначе

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

Есть компания, которая сидит на ADSL с одним белым адресом. У компании есть сервер в Европе, на котором 16 IP-адресов на одном и том же интерфейсе. В компании работают люди, которым нужно писать на каких-то то ли форумах, то ли ещё где-то. Но там с одного адреса нельзя писать, т.к. будет считаться, что это один и тот же человек с нескольких аккаунтов пишет. Поэтому им нужно настроить это хитрое прокси!

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

Таблица роутинга выглядит примерно так:

# netstat -rn Routing tables

Internet: Destination Gateway Flags Refs Use Netif Expire default ***.161 UGS 92922 4931615968 em0 *.128/29 link#1 U 0 0 em0 *.129 link#1 UHS 0 1122102 lo0 *.130 link#1 UHS 0 0 lo0 *.131 link#1 UHS 0 0 lo0 ...

Звёздочками я заменил реальные адреса в целях безопасности! Я не от Вас лично скрываю, но мало ли какие сюда ещё люди заходят или боты!

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

Чтоб не устанавливать лишний софт на сервере

Понятно. Но sshd, насколько я занаю, нельзя указать с какого адреса устанавливать соединение.

Может поставить на сервере socks5 proxy, запустить несколько экзепляров, каждый со своим конфигом, каждый слушает свой порт и каждый «идёт» с заданного ему ip-адреса.

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

у меня такая-же беда, причём IP адрес часто меняется... Но как сделать его постоянным, я не понимаю.

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

каждый слушает свой порт и каждый «идёт» с заданного ему ip-адреса

по дефолтному маршруту
не взлетит думаю

Может сделать через VPN?

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

С клиента этого никак не сделать, потому что вы выходите в сеть с сервера с правами юзера, но можно из под root. В общем, если у вас висит кроме основного еще 15 subinterfaces то пропишите маршруты, можно даже скриптом менять для определенного времени - свой ip.

route add -host {адрес на который нужно выйти} gw {шлюз} dev ethXX
ethXX - соответственно интерфейс на которым указан адрес с которого выходить.

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

В случае ТС, похоже, как раз взлетит. Если я правильно понял, у него не 16 разных каналов в Интернет, а просто 16 разных ip-адресов (скорее всего из одной подсети), и идут они все через один шлюз/маршрут. Правда, ТС исходно не объяснил, что сервер далеко и на нём не желательно устанавливать дополнительный софт.

И ему надо как можно проще сделать чтобы разные компы из локалки выходили в Инет из под разных ip-адресов.

VPN, наверное, можно, но тоже будет достаточно сложно настроить.

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

Если у вас на сервере iptables поддерживат "--uid-owner", то можно будет попробовать SNAT-ить исходящие с сервера пакеты, в зависимости от пользовтеля.

Завести 16 пользователей, в зависимости от того, каким пользователем зашли (по ssh -D), с такого ip и выходить.

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