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

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

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

Jmillikin спрашивал об этом на различных форумах Ubuntu следующим образом:


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

# Real host        # Aliases
realhost           fakehost1 fakehost2 fakehost3

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

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

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

Host fakehost1
  Hostname real-hostname

Host fakehost2
  Hostname real-hostname2

Host fakehost3
  Hostname real-hostname3

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

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

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

ping fakehost

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

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


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

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

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

затем в свежей оболочке:

ssh кристофер @ $ fakehost

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

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

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

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

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

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