Linux'ta bir hostname takma adı vermek mümkün mü?


90

Linux'ta bir hostname takma adı vermek mümkün mü?

Jmillikin tarafından çeşitli Ubuntu forumlarında şu şekilde soruldu:


Ana bilgisayar adı takma adı oluşturmak mümkün mü? / Etc / hosts dizinine benzer, ancak IP adresleri yerine diğer ana bilgisayar adlarına sahip. Böylece böyle bir dosyayla "fakehost1" e ping atabiliyordunuz ve "realhost" ile yeniden eşleştirilecekti ve sonra "realhost" bir IP adresine çözülecekti.

# Real host        # Aliases
realhost           fakehost1 fakehost2 fakehost3

Biri ssh, fakat ping, vb. Hakkında cevap verdi. Asıl amacım bir Subversion sunucusu için takma ad olarak kullanmak . Benim durumumda, realhost dinamik bir IP adresi altında. Yani, "/ etc / hosts" takma adı çalışmıyor. Subversion sunucuma svn://my_svnserver/my_reposyerine erişmek istiyorum svn://realhost/my_repos.


Sanırım bir şeyleri özlüyorum. / Etc / hosts adresinin 10.0.3.4'e benzemeyeceğini mi söylüyorsunuz, some.host.org başka.
jim_m_somewhere bir yerde

Yanıtlar:


56

Forumlarda hesabı olmayanlar için (veya giriş yapmak istemeyenler için):

Eğer asıl sorun ping değil ssh ise, ~ / .ssh / config komutunu şunun gibi satırlar ekleyerek oluşturabilir / düzenleyebilirsiniz:

Host fakehost1
  Hostname real-hostname

Host fakehost2
  Hostname real-hostname2

Host fakehost3
  Hostname real-hostname3

1
Ana Bilgisayar adı bölümünün yeni bir satırda olması gerekir. İşte böyle bir yapılandırma dosyasının nasıl yapılacağına dair iyi bir öğretici: mattryall.net/blog/2008/06/ssh-favourite-hosts
Code Commander

1
iyi geçici çözüm, teşekkürler. Ama elbette, daha iyi bir çözüm dns üzerinde cnames kullanmak olacaktır
Yura

31

Linux, HOSTALIASES env değişkenini ayarlayarak takma adını destekler.

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

o zaman yapabilirsin

ping fakehost

NB ping, bunu root olarak ayarlamanızı gerektirir, ancak o kullanıcı olarak çalışan herhangi bir uygulama için herhangi bir kullanıcı olarak yapabilirsiniz. ping kökünden intihar eder.


3
Ubuntu'da benim için işe yaramadı 12.04 :(
Dimitry K

3
HOSTALIASES, yalnızca setuid bayrağı ayarlanmamış çalıştırılabilir dosyalar için çalışır. Bu nedenle, ping işlemi için çalışmaz (ping işlemi yaparken zaten root olmadıkça). Sanırım bu setuid-çalıştırılabilir kodları amaçlanandan farklı bir ana bilgisayara bağlamak için kandırmaktan kaçınmak için yapıldı.
Boris,

1
Ayrıca kıvırmak için çalışmıyor
Benubird 17:15

7
beklenen sonuçta nadiren sonuçlanır. HOSTALIASES, yalnızca getaddrinfo (3) veya gethostbyname (3) kullanan uygulamalar için çalışır . bkz. unix.stackexchange.com/questions/10438/… bu yüzden tek çözüm yerel dns (dnsmasq) 'dır
Nadir

1
Görünüşe göre bu hile yoksun. Gethostbyname * (), gethostbyaddr * (), herror () ve hstrerror () işlevleri eskidir. Sisteminizde yerel olarak DNSMasq çalışıyorsa, DNS kullanan herhangi bir çözünürlük için takma ad kullanabilirsiniz.
teknopaul

24

Bunu DNS sunucunuzda ayarlayabilirsiniz, CNAME kayıtları, bir makinenin birden fazla ana bilgisayar adı tarafından bilinmesini sağlar. Öyleyse, CNAME kayıtlarını DNS sunucunuza şöyle ekleyin:


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


3
denemek için hafif bir DNS sunucusu olacaktır dnsmasq(ayrıca DHCP'ye de hizmet eder).
sybreon

17

Bunu genellikle ortam değişkenleriyle yapıyorum. Bunun yalnızca komut satırı için işe yaradığını biliyorum, ancak ana bilgisayar adı diğer adlarını çok istediğim yerdeydi (hepsi uzun URL'lere sahip birkaç süper bilgisayar hesabı ile çalıştım). İşte bir örnek, eğer BASH kullanıyorsanız. ~ / .Bashrc dilinde:

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

sonra, taze bir kabukta:

ssh christopher @ $ fakehost


11

Bunu yapmanın tek yolu kendi yerel dns sunucunuz varsa.


1
Evet, şimdi tek çözüm gibi görünüyor. Teşekkürler. Yeterli itibarımız olmadığı için oy kullanamıyorum.

DSL veya çevirmeli bağlantının sürekli değişen IP adresi sorunsa, dyndns daha iyi bir çözümdür, IMHO.
Sven

Hayır, daha iyi bir çözüm değil. Sunucu başka bir şey tarafından ele alınan bir ana bilgisayar adına sahip olduğunda, tüm OP ihtiyaçları ilk ana bilgisayar adı için bir CNAME'dir. DYNDNS ve benzerleri, dns sunucusuna ipinin değiştiğini bildiren ana bilgisayara güvenir.
Teorik,

5

/Etc/hosts.aliases kullanımı, ciltleme çözümleyici kitaplıklarının standart bir özelliğidir. / Etc / hosts dosyasına girişler eklemekten daha güçlüdür ve DNS'inize CNAMES ekleyemiyorsanız (buna erişiminiz yoksa) kullanılabilir.

Genel olarak en iyi uygulama, DNS'de CNAMES'in /etc/resolv.conf içinde tanımlanan uygun ARAMA ile kullanılmasıdır.

/ Etc / hosts dosyalarının güncellenmesi çok sağlam değildir; çünkü girdilerin IP değişiklikleriyle senkronize edilmesi gerekir. Bu yalnızca küçük bir ölçekte veya ana bilgisayar haritasını dağıtmak için bir ad servisi kullanırken (örneğin, ldap aracılığıyla) çalışır.

Başka bir çözüm DNSMasq olabilir http://en.wikipedia.org/wiki/Dnsmasq


CENTOS 6’da /etc/hosts.aliases öğesini kullanmaya çalıştım, ancak bu özellik işe yaramadı. Kullanımına veya varlığına ilişkin herhangi bir belge bulamıyorum. Nereye bakmalıyım?
mdpc

5

Geçerli IP adresinizi bir ana bilgisayar adıyla eşleştiren bir dyndns sunucusuna ihtiyacınız olacak. Her oturum açtığınızda bu sunucuya mevcut IP adresinizi anlatacaksınız ve ana bilgisayar adı kaydınızı güncelleyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.