Вопрос: Возможно ли псевдоним имени хоста в Linux?


Возможно ли псевдоним имени хоста в Linux?

Его задали jmillikin на различных форумах Ubuntu следующим образом:


Возможно ли создать псевдоним имени хоста? Например, как / etc / hosts, но с другими именами хостов, а не с IP-адресами. Так что с некоторыми файл вроде этого, вы могли бы ping «fakehost1», и он был бы повторно отображен на «realhost», а затем «realhost» будет разрешен к IP-адресу.

# Real host        # Aliases
realhost           fakehost1 fakehost2 fakehost3

Кто-то ответил о ssh, но не про пинг и т. Д. Мой главный Цель состоит в том, чтобы использовать его как псевдоним для диверсия сервер. В моем случае, realhost находится под динамическим IP-адресом. Таким образом, псевдоним «/ etc / hosts» не работает. я хочу доступ к моему серверу Subversion как svn://my_svnserver/my_repos вместо svn://realhost/my_repos,


70
2017-09-14 15:56


Источник


Наверное, я могу что-то упустить. Вы говорите, что не могли бы / etc / hosts выглядеть как 10.0.3.4 some.host.org another.domain.com Вы должны использовать ссылку по какой-то программной причине? - jim_m_somewhere


Ответы:


Для тех, у кого нет учетной записи на форумах (или не хотите входить в систему):

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

Host fakehost1
  Hostname real-hostname

Host fakehost2
  Hostname real-hostname2

Host fakehost3
  Hostname real-hostname3

43
2017-08-26 20:21



Часть Hostname должна быть на новой строке. Вот хороший учебник о том, как сделать файл конфигурации следующим образом: mattryall.net/blog/2008/06/ssh-favourite-hosts - Code Commander
спасибо, спасибо. Но, конечно, лучшим решением было бы использовать cnames на dns - Iurii


Linux поддерживает наложение псевдонимов, устанавливая переменную env HOSTALIASES.

echo "fakehost realhost" > /etc/host.aliases
echo "export HOSTALIASES=/etc/host.aliases" >> /etc/profile
. /etc/profile

тогда ты можешь

ping fakehost

Нотабене ping требует, чтобы вы установили это как root, но можете сделать это как любой пользователь для любого приложения, которое работает как этот пользователь. ping suids to root.


28
2018-03-21 18:41



не работает для меня на Ubuntu 12.04 :( - Dimitry K
HOSTALIASES работают только для исполняемых файлов, которые не имеют установленного флага setuid. Таким образом, он не будет работать для ping (если вы уже не root при выполнении ping). Я предполагаю, что это делается для того, чтобы избежать использования setuid-executables в подключении к другому хосту, чем это предполагалось. - Boris
Также не работает для завитки - Benubird
Работает отлично для maven с помпами от пользователей Windows :-) - selalerer
это будет редко заканчиваться ожидаемым результатом. HOSTALIASES работает только для приложений, использующих getaddrinfo (3) или gethostbyname (3) - Это означает, что он будет работать для приложений, пытающихся явно разрешить имя хоста конкретным системным вызовом: это никогда не бывает. видеть unix.stackexchange.com/questions/10438/...  поэтому единственным решением является локальный dns (dnsmasq) - Nadir


Вы можете настроить это на своем DNS-сервере, записи CNAME позволяют узнать машину более чем с одним именем хоста. Поэтому добавьте записи CNAME на ваш DNS-сервер следующим образом:


fakehost1 IN CNAME realhost 
fakehost2 IN CNAME realhost 
fakehost3 IN CNAME realhost 


23
2017-09-14 16:04



Спасибо, я попробую это завтра после настройки моего локального сервера DNS.
легкий DNS-сервер, чтобы попробовать dnsmasq (он также обслуживает DHCP). - sybreon


Я часто делаю это с переменными среды. Я знаю, что это работает только для командной строки, но именно там я чаще всего жаждущих псевдонимов имен хостов (я работал с несколькими суперкомпьютерными учетными записями, все с длинными URL-адресами). Вот пример, если вы используете BASH. В ~ / .bashrc:

export fakehost = "long.ass.annoying.url.org"

то в новой оболочке:

ssh christopher @ $ fakehost


16
2017-07-23 16:15





Единственный способ сделать это можно, если у вас есть собственный локальный DNS-сервер.


7
2017-09-14 16:02



Да, теперь это единственное решение. Благодарю. Не могу подняться, потому что у меня недостаточно репутации.
Если постоянно меняющийся IP-адрес DSL или коммутируемого соединения является проблемой, dyndns - лучшее решение, IMHO. - Sven♦
Нет, это не лучшее решение. Когда у сервера есть имя хоста, которое обрабатывается чем-то другим, тогда все потребности OP - это CNAME для первого имени хоста. DYNDNS и аналогичные полагаются на хост, информирующий сервер DNS, что его ip изменился. - theotherreceive


Использование /etc/hosts.aliases является стандартной функцией библиотек распознавателей связывания. Он более надежный, чем добавление записей в / etc / hosts и может быть использован, если вы не можете добавить CNAMES в свой DNS (у вас нет доступа к нему).

В целом лучше всего использовать CNAMES в DNS с соответствующим ПОИСКОМ, определенным в /etc/resolv.conf.

Обновление / etc / hosts не очень надежное, поскольку записи должны храниться в синхронизации с изменениями IP. Это работает только в небольших масштабах или когда вы используете службу имен для распространения карты хостов (например, через ldap).

Другим решением может быть DNSMasq http://en.wikipedia.org/wiki/Dnsmasq


4
2017-10-28 03:44



Я попытался использовать /etc/hosts.aliases в CENTOS 6, но эта функция, похоже, не работает. Я также не могу найти документацию о ее использовании или наличии. Где я должен искать? - mdpc


Вам понадобится сервер dyndns, который отобразит ваш текущий IP-адрес на имя хоста. Вы сообщите этому серверу о своем текущем IP-адресе при каждом входе в систему и обновите запись своего имени.


4
2017-09-14 16:05