У меня такая конфигурация:
a DNS record of X.a.b.c pointing to an ip address I
a DNS record of Y.a.b.c pointing to the same ip I.
Internet---->(RT)--->(FW)--+-->(MN)
L-->(Beh)
RT is a router (which i have no control over) that has I as left-hand IP and 10.4.255.13 as internal IP.
FW is a firewall that has 10.4.255.190 as the left-hand IP and 192.168.0.1 as a right-hand IP.
MN has an IP of 192.168.0.2 and Beh has an IP of 192.168.0.3
FW имеет правила, разрешающие трафик на определенных портах, и в зависимости от этих портов он перенаправляет на определенный IP-адрес. Например, порт 22 перенаправлен на MN (192.168.0.2).
У меня есть 2 сервера, каждый из которых работает на порту 22 на каждом сервере Beh и MN, и я хочу, чтобы, в зависимости от того, к какому URL-адресу вы обращаетесь, вы подключались к определенному серверу:
Если я ssh me@X.a.b.c, я подключаюсь к MN. Если я ssh me@Y.a.b.c, я подключаюсь к Beh.
Могу ли я сделать это с помощью IPtables?
Извините, но это невозможно. В отличие от http, DNS-имя места назначения разрешается на клиенте и не передается как часть протокола каким-либо образом, который может видеть ваш брандмауэр.
Как упомянула Зоредак, это невозможно. В Подтверждение протокола SSH начинается с отправки сервером информации клиенту, поэтому нет даже специального решения, которое можно было бы закодировать для выполнения какого-то трюка с проксированием.
Тем не менее, то, что другие заявили об использовании нескольких портов, отлично работает. У большинства клиентов SSH на основе графического интерфейса есть хороший способ сохранять сеансы, а установка порта тривиальна и не представляет проблемы. Тем не менее, я собираюсь сделать здесь быстрый прыжок и предположить, что большинство клиентов, которые вы ожидаете подключиться к этому серверу, являются текстовыми, и вы не хотите вводить -oPort=
каждый раз, когда вы используете SSH.
Возможно, вот что-то, что немного облегчит жизнь всем участникам. Стандартные инструменты командной строки на основе SSH, доступные в системах * nix, используют один и тот же метод настройки.
На ваших рабочих станциях ' ~/.ssh
каталог, создайте файл config
. Как и почти все разрешения при работе с SSH, для этого потребуется разрешение: 600
. В этом файле настройте следующие строки (при условии, что вы перенаправили порты 2222 и 2223)
Host X.a.b.c
Port 2222
Host Y.a.b.c
Port 2223
Хотя это не совсем то, чего вы надеялись достичь, это должно помочь сделать клиентскую часть более работоспособной, поскольку вам нужно будет настроить ее только один раз. Ваш SSH-клиент будет прозрачно «делать правильные вещи» в зависимости от имени хоста для этой настроенной рабочей станции. Кроме того, инструменты, использующие SSH, также будут делать правильные вещи (git, scp и т. Д.).