Назад | Перейти на главную страницу

SSH-туннели с несколькими исходящими IP-адресами

У меня есть VPS с несколькими выделенными IP-адресами (мы можем использовать debian, centos или ubuntu). Я могу использовать ssh-туннель через сервер, используя любой из IP-адресов. Однако любой настроенный мной ssh-туннель всегда показывает только один IP-адрес конечного конечного сайта.

me --ssh to IP1 -> | server | ----> http: // whatismyip.com (отображает IP1)

me --ssh to IP2 -> | server | ----> http: // whatismyip.com (отображает IP1)

me --ssh на IP3 -> | server | ----> http: // whatismyip.com (отображает IP1)

Как настроить сервер так, чтобы при ssh-туннеле на IP1 его исходящий IP-адрес был IP1. И когда я использую ssh-туннель в IP2, его исходящий IP-адрес будет IP2?

Что я хочу: меня --ssh на IP1 -> | server | ----> http: // whatismyip.com (отображает IP1)

me --ssh to IP2 -> | server | ----> http: // whatismyip.com (отображает IP2)

IP-адреса находятся в разных подсетях (на самом деле полностью различаются Class As).

IP-адрес, который вы используете для подключения к серверу SSH, на самом деле не имеет ничего общего с тем, какой IP-адрес используется SSH, когда он инициирует исходящие соединения от вашего имени.

Адрес источника пакетов, передаваемых через туннель, будет намного больше зависеть от таблиц маршрутизации и шлюза по умолчанию для SSH-сервера.

Если все ваши адреса находятся в одной подсети, я не верю, что есть какой-либо способ установить исходный адрес, используя только ssh.

В качестве альтернативы, я считаю, вы можете настроить несколько экземпляров OpenVPN, каждый со своим диапазоном tun и IP-адресов. Затем настройте разные правила NAT для пакетов, поступающих от каждого экземпляра VPN.

это грязное решение и может вызвать проблемы.

> iptables -t nat -A POSTROUTING -j SNAT --to IP2
> 
> so 
> IP1 ---> IP2 
> IP2 ---> IP2 
> IP3 ---> IP2

Если вам нужно изменить и у вас нет других правил iptables, просто перезапустите iptables, после чего все должно быть сброшено.

У меня такие же проблемы, как и у вас, и это лучшее, что я мог узнать.

Это не проблема туннелирования. Если вы находитесь на сервере и используете SSH (именно так вы создаете туннель, верно?), Вы увидите, что эти туннели настроены с использованием одного и того же IP-адреса.

Это проблема маршрутизации TCP. если ты бежишь netstat -rn, вы увидите свою таблицу маршрутизации. Скорее всего, вы маршрутизируете все пакеты через один и тот же интерфейс - ваш маршрут по умолчанию. Вам нужны очень конкретные маршруты, которые имеют более высокий приоритет, чем ваш маршрут по умолчанию, чтобы иметь приоритет.

Извините, это не ответ - я надеялся вместо этого добавить комментарий к приведенному выше, но я новичок на этом сайте.

Я просто хотел добавить, что слышал, что можно установить, какой интерфейс используется для исходящего трафика для каждого пользователя оболочки (UID). Не совсем уверен, как, я пытаюсь понять это сам, потому что уже давно я хотел использовать 3 исходящих IP-адреса на моем VPS (без настройки специального прокси-программного обеспечения).

Вы можете добавить разных пользователей для каждого IP-адреса и сопоставить их с их идентификатором пользователя:

useradd IP1
iptables -t nat -m owner --uid-owner IP1 -A POSTROUTING -j SNAT --to IP1

Пользователь IP1 теперь всегда будет использовать IP1, даже через ssh.