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

Одинаковый IP-адрес во многих системах в разных средах

Я работаю в среде, где есть несколько местоположений, и в каждом из них у нас одна и та же схема IP-адресации, то есть у нас есть много машин (по одной в каждом месте), которые используют один и тот же IP-адрес (хотя имена хостов разные). Естественно, между этими локациями нет связи, а также нет DNS. Я подключаюсь к каждому месту по очереди, открывая VPN-туннели. Моя рабочая станция - Linux.

Я пытаюсь разработать систему, позволяющую мне работать в этой среде максимально безопасно. Я хотел бы использовать имена хостов вместо IP-адресов напрямую, поскольку у нас есть легко запоминающееся соглашение об именах. Проблемы, с которыми я столкнулся до сих пор: 1) вход по ошибке на другой компьютер, потому что туннель был открыт в неправильном месте, и 2) ssh, имеющий другой хост с тем же IP, но с другим именем хоста в known_hosts, и отказываясь подключаться.

Пока я думаю о создании разных файлов / etc / hosts и ~ / .ssh / known_hosts для каждого местоположения (например, /etc/hosts.location1) и использования сценария переключения местоположения для автоматического переключения между этими файлами путем копирования файла версия настроена для моего целевого местоположения вместо файла по умолчанию (например, cp /etc/hosts.location1 / etc / hosts). В идеале этот сценарий в конечном итоге будет интегрирован с программным обеспечением, которое я использую для открытия виртуальных частных сетей в разных местах.

Мой вопрос: есть ли лучший способ сделать это? Есть ли какие-то функции в ssh или разрешении имен linux, которые мне не хватает?

Большое спасибо.

Редактировать: это производственная среда, и я ищу решение этой проблемы на рабочей станции.

Вы упомянули, что используете VPN для каждого сайта. Может ли каждый сайт иметь DNS-сервер (или два) с собственным доменом сайта (site1.mycorp.com, site2.mycorp.com) и использовать что-то вроде Bind views (http://www.zytrax.com/books/dns/ch7/view.html) для предоставления IP-адресов именованным хостам в сети VPN?

Таким образом, вы можете дать каждому хосту на каждом сайте уникальное полное доменное имя (barney.site1.mycorp.com и rubble.site2.mycorp.com), и эти хосты будут правильно разрешаться только тогда, когда вы подключены к правильному сайту по VPN и откликнетесь на это представление привязки. На каждом сайте barney.site1.mycorp.com и rubble.site2.mycorp.com потенциально может иметь тот же IP-адрес. Но они не разрешились бы извне или если бы вы были подключены к неправильному VPN.

Это не столько решение для "рабочей станции". Но если у вас есть возможность добавлять узлы (виртуальные машины или физические хосты) к каждому сайту (которые не обязательно должны быть частью производственной среды), то это может быть решением. Если у вас уже есть производственный DNS, который вам удобно изменять, то вы, возможно, уже сможете использовать имеющиеся представления и именование.

Можете ли вы делать что-нибудь на удаленных сайтах, например, поместить файл в $ HOME или отредактировать bashrc? Например, у меня есть на одном сайте / etc / bashrc:

  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[SITE1 \u@\h \W]\\$ "

что помогает избежать двусмысленности. Вы можете настроить свое приглашение на включение cat .site_name например, если вы можете установить этот файл.

Также обратите внимание на использование .ssh / config для определений имен хостов. Вы можете иметь:

Host app1.site1
HostName 10.11.12.13
User service

и т.д., а затем используйте ssh app1.site1 и полагайтесь на строгую проверку ключа хоста, чтобы обезопасить себя. Я предполагаю, что sshd было разрешено создавать собственные ключи хоста. Если у машин одинаковые ключи хоста, с этим у вас будут проблемы.

Наконец, вы можете написать сценарий оболочки ssh. См. Таблицу маршрутизации (netstat -nr), чтобы найти конечные точки VPN и запретить неправильное поведение на основе IP-адреса конечной точки. Примерно: safe_ssh site hostname и помимо ротации файлов known_hosts, если место назначения для вашей удаленной сети не соответствует указанному вами значению сайта, выйдите из системы с сообщением об ошибке. Вероятно, вы могли бы что-то сделать с мультиплексированием ssh-соединения, если бы вы хотели, чтобы сценарий также запускал и отключал VPN.

Является ли решение дать каждой машине уникальный IP-адрес (а также общий IP-адрес, предположительно, RFC 1918)? Мы используем этот подход, у нас есть несколько машин с псевдонимом IP RFC 1918, но все они имеют уникальный «общедоступный» IP.