क्या लिनक्स में होस्टनाम को उपनाम देना संभव है?


89

क्या लिनक्स में होस्टनाम को उपनाम देना संभव है?

इसे विभिन्न उबंटू मंचों पर जेमिलिकिन द्वारा पूछा गया है:


क्या होस्टनाम उपनाम बनाना संभव है? जैसे / आदि / होस्ट की तरह, लेकिन आईपी पते के बजाय अन्य होस्टनाम के साथ। ताकि इस तरह की कुछ फ़ाइल के साथ, आप "fakehost1" को पिंग कर सकें, और इसे "realhost" में फिर से मैप किया जा सके, और फिर "realhost" को IP पते पर हल किया जाएगा।

# Real host        # Aliases
realhost           fakehost1 fakehost2 fakehost3

किसी ने ssh के बारे में उत्तर दिया है, लेकिन पिंग के बारे में नहीं, इत्यादि मेरा मुख्य उद्देश्य इसे तोड़फोड़ सर्वर के लिए एक उपनाम के रूप में उपयोग करना है। मेरे मामले में, रियलहोस्ट एक गतिशील आईपी पते के तहत है। तो, "/ etc / मेजबान" उपनाम काम नहीं करता है। मैं svn://my_svnserver/my_reposइसके बजाय अपने तोड़फोड़ सर्वर का उपयोग करना चाहते हैं svn://realhost/my_repos


मुझे लगता है कि मुझे कुछ याद आ रहा है। क्या आप कह रहे हैं कि आपके पास / etc / मेजबान नहीं दिख सकते हैं। 10.0.3.4 some.host.org other.domain.com आपको कुछ प्रोग्रामेटिक कारण के लिए एक संदर्भ का उपयोग करना होगा?
jim_m_somewhere

जवाबों:


56

उन लोगों के लिए जिनके पास मंचों पर खाता नहीं है (या लॉगिन करने की इच्छा नहीं है):

अगर आपका मुख्य मुद्दा पिंग के लिए नहीं है, लेकिन ssh के लिए, आप अपनी ~ / .ssh / config जोड़ सकते हैं / संपादित कर सकते हैं:

Host fakehost1
  Hostname real-hostname

Host fakehost2
  Hostname real-hostname2

Host fakehost3
  Hostname real-hostname3

1
Hostname हिस्सा एक नई लाइन पर होना चाहिए। इस तरह से एक कॉन्फिग फ़ाइल बनाने के बारे में एक अच्छा ट्यूटोरियल यहाँ है: mattryall.net/blog/2008/06/ssh-favourite-hosts
कोड कमांडर

1
अच्छा समाधान, धन्यवाद। लेकिन निश्चित रूप से, बेहतर समाधान dn पर cnames का उपयोग करना होगा
Yura

31

लिनक्स HOSTALIASES env वैरिएबल सेट करके अलियासिंग का समर्थन करता है।

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

तब आप कर सकते हो

ping fakehost

एनबी पिंग आपको इसे रूट के रूप में सेट करने की आवश्यकता है, लेकिन आप इसे किसी भी उपयोगकर्ता के लिए किसी भी एप्लिकेशन के रूप में कर सकते हैं जो उस उपयोगकर्ता के रूप में चलता है। पिंग suids जड़ करने के लिए।


3
मेरे लिए उबंटू 12.04 पर काम नहीं किया :(
दिमित्री के

3
HOSTALIASES केवल उन निष्पादकों के लिए काम करते हैं जिनके पास सेतु ध्वज नहीं है। तो यह पिंग के लिए काम नहीं करेगा (जब तक आप पिंग को निष्पादित करते समय पहले से ही जड़ नहीं हैं)। मुझे लगता है कि यह अलग-अलग होस्ट से कनेक्ट करने में सेतु-निष्पादन योग्य चाल से बचने के लिए किया जाता है।
बोरिस

1
कर्ल के लिए भी काम नहीं करता है
बेनुबर्ड

7
यह अपेक्षित परिणाम में शायद ही कभी समाप्त होगा। HOSTALIASES केवल getaddrinfo (3) या gethostbyname (3) का उपयोग करके अनुप्रयोगों के लिए काम करता है - इसका मतलब है कि यह उन अनुप्रयोगों के लिए काम करेगा जो किसी विशिष्ट सिस्टम कॉल द्वारा होस्टनाम को हल करने की कोशिश कर रहे हैं: ऐसा कभी नहीं होता है। देखें unix.stackexchange.com/questions/10438/… इसलिए एकमात्र समाधान स्थानीय डीएनएस (dnsmasq) है
नादिर

1
लगता है कि यह ट्रिक है। Gethostbyname * (), gethostbyaddr * (), हेरर (), और hstrerror () फ़ंक्शन अप्रचलित हैं। यदि आपका सिस्टम DNSMasq को स्थानीय रूप से चलाता है, तो आप DNS का उपयोग करने वाले किसी भी रिज़ॉल्यूशन के लिए इसमें अन्य नाम बदल सकते हैं।
टेकनोपॉल

24

आप इसे अपने DNS सर्वर पर सेटअप कर सकते हैं, CNAME रिकॉर्ड एक मशीन को एक से अधिक होस्टनाम द्वारा ज्ञात करने की अनुमति देता है। तो अपने DNS सर्वर की तरह CNAME रिकॉर्ड जोड़ें:


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


3
एक हल्के वजन वाले DNS सर्वर की कोशिश होगी dnsmasq(यह DHCP भी कार्य करता है)।
sybreon

17

मैं अक्सर पर्यावरण चर के साथ ऐसा करता हूं। मुझे पता है कि यह केवल कमांड लाइन के लिए काम करता है, लेकिन यह वह जगह है जहां मैं सबसे अधिक बार होस्टनाम एलियास को तरस रहा हूं (मैंने कई सुपर कंप्यूटर खातों के साथ काम किया, सभी लंबे यूआरएल के साथ)। यहाँ एक उदाहरण है, यदि आप BASH का उपयोग कर रहे हैं। ~ / .Bashrc में:

निर्यात fakehost = "long.ass.annoying.url.org"

फिर, एक नए खोल में:

ssh क्रिस्टोफर @ $ fakehost


11

एकमात्र तरीका यह किया जा सकता है यदि आपके पास अपना स्थानीय डीएनएस सर्वर है।


1
हाँ, अब यह एकमात्र समाधान लगता है। धन्यवाद। मेरे पास पर्याप्त प्रतिष्ठा नहीं है, क्योंकि मैं आगे नहीं बढ़ सकता।

यदि किसी DSL या डायलअप कनेक्शन का कभी-कभी बदलता आईपी पता समस्या है, तो dyndns एक बेहतर समाधान है, IMHO।
स्वेन

नहीं, यह एक बेहतर उपाय नहीं है। एक बार जब सर्वर में एक होस्टनाम होता है जिसे किसी और चीज़ द्वारा नियंत्रित किया जाता है, तो ओपी को पहले होस्टनाम के लिए एक CNAME की आवश्यकता होती है। DYNDNS और इसी तरह होस्ट पर dns सर्वर को सूचित करते हैं कि यह IP बदल गया है।
अभिषेक

5

/Etc/hosts.aliases का उपयोग बाइंड रिज़ॉल्वर पुस्तकालयों की एक मानक विशेषता है। यह प्रविष्टियों को / etc / मेजबानों में जोड़ने से अधिक मजबूत है और इसका उपयोग किया जा सकता है यदि आप अपने DNS में CNAMES नहीं जोड़ सकते हैं (इसके लिए उपयोग नहीं है)।

सामान्य तौर पर DNS / CNC /resolv.conf में परिभाषित उपयुक्त खोज के साथ DNS में CNAMES का उपयोग करना सबसे अच्छा अभ्यास है।

अद्यतन / आदि / होस्ट बहुत मजबूत नहीं है क्योंकि प्रविष्टियों को आईपी परिवर्तनों के साथ सिंक में रखा जाना है। यह केवल वास्तव में एक छोटे पैमाने पर काम करता है या जब आप मेजबानों के नक्शे (जैसे ldap के माध्यम से) को वितरित करने के लिए एक नाम सेवा का उपयोग कर रहे हैं।

एक अन्य समाधान DNSMasq http://en.wikipedia.org/wiki/Dnsmasq हो सकता है


मैंने CENTOS 6 में /etc/hosts.aliases का उपयोग करने की कोशिश की, लेकिन यह सुविधा काम नहीं करती है। न ही मुझे इसके उपयोग या अस्तित्व पर कोई दस्तावेज मिल सकता है। मुझे कहाँ देखना चाहिए?
mdpc

5

आपको एक डायन्डन्स सर्वर की आवश्यकता होगी जो आपके वर्तमान आईपी पते को होस्टनाम में मैप करेगा। जब भी आप लॉगिन करेंगे, तो आप इस सर्वर को अपने वर्तमान आईपी पते के बारे में बताएंगे और यह आपके होस्टनाम रिकॉर्ड को अपडेट कर देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.