ट्रेसरूट कैसे नामों को हल करता है?


11

एक स्क्रिप्ट लिखते समय, मैं कंप्यूटर नाम से एक मशीन का संदर्भ देना चाहता था जो मैंने इसे दिया था (उदाहरण के लिए "सेलेनियम-आरसी")। मैं "सेलेनियम-आरसी" का उपयोग करके इसे पिंग नहीं कर सकता था, इसलिए मैंने निम्नलिखित आदेशों को देखने की कोशिश की कि क्या नाम पहचाना गया था।

> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 hops max, 52 byte packets
 1  selenium-rc (192.168.235.41)  0.545 ms  0.241 ms  0.124 ms

ठीक है, ट्रेसरूटे ने "नाम" पाया। कैसे? आगे ...

> traceroute selenium-rc
traceroute: unknown host selenium-rc

हम्म ... यहां का लुकअप मैकेनिज्म अलग होना चाहिए क्योंकि होस्ट अनकाउन्टेड है। मैं मान रहा हूं कि यह सिस्टम नाम रिज़ॉल्यूशन प्रक्रिया का उपयोग कर रहा है जबकि पहला उदाहरण ट्रेसरआउट के लिए विशिष्ट प्रक्रिया का उपयोग कर रहा था। सही बात?

फिर जब मैं थोड़ी देर बाद वापस आया ..।

> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 hops max, 52 byte packets
 1  minint-q4e8i52.mycorp.net (192.168.235.41)  0.509 ms  0.206 ms  0.136 ms

ठीक है, अलग परिणाम। "सेलेनियम-आरसी" नाम मशीन पर ही नहीं बदला, लेकिन ट्रेसरूट नाम समाधान प्रक्रिया में किसी प्रकार की प्राथमिकता शामिल होनी चाहिए और अब नेटवर्क पर किसी अन्य सिस्टम / सेवा द्वारा निर्दिष्ट अधिक आधिकारिक परिणाम देता है। (दुर्भाग्य से, मैं इसे एक गतिशील नाम मान रहा हूं जिसे मैं नियंत्रित नहीं करता हूं, और इस तरह यह एक स्क्रिप्ट में उपयोगी नहीं होगा।)

क्या कोई परिणाम की व्याख्या कर सकता है?

जवाबों:


9

आम तौर पर, लिनक्स में, और यूनिक्स, ट्रेसरआउट और पिंग दोनों सिस्टम के नाम को देखने के लिए gethostbyname () को कॉल का उपयोग करेंगे। gethostbyname () बदले में सिस्टम कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके उस क्रम को निर्धारित करने के लिए जिसमें नामकरण डेटाबेस, अर्थात: / etc / मेजबान, और DNS को क्वेरी करना है।

लिनक्स में, पहले डीएनएस को क्वेरी करने के लिए डिफ़ॉल्ट क्रिया (या शायद उपयोग की जाती है), और फिर / आदि / होस्ट करता है। इसे /etc/host.conf में वांछित क्रम सेट करके बदला या अपडेट किया जा सकता है।

DNS से ​​पहले / खोज / होस्ट करने के लिए, /etc/host.conf में निम्न क्रम सेट करें:

order hosts,bind

सोलारिस में, यह वही आदेश /etc/nsswitch.conf फ़ाइल के माध्यम से होस्ट डेटाबेस के लिए प्रविष्टि में नियंत्रित किया जाता है।

होस्ट: फाइलें डीएनएस

DNS खोजने से पहले / etc / मेजबान में देखने के लिए खोज क्रम सेट करता है।

Traceroute और ping, सभी कॉन्फ़िगर किए गए नामकरण डेटाबेस को खोजने के लिए इन विधियों का उपयोग करेंगे। hostऔर nslookupदोनों का उपयोग आदेशों केवल DNS, ताकि वे आवश्यक रूप से प्रतीत होता है असंगत परिणाम आप कर रहे हैं देख नकल नहीं होंगे।

सोलारिस में एक लुकअप टूल है, getentजिसका उपयोग मेजबानों या पतों की पहचान करने के लिए किया जा सकता है, जिस तरह से ट्रेसरआउट और पिंग करते हैं - खोज करने के लिए नामकरण डेटाबेस के कॉन्फ़िगर किए गए सेट का पालन करके।

getent hosts <hostname>

जो भी डेटाबेस होस्ट के लिए /etc/nsswitch.conf में सूचीबद्ध हैं, के माध्यम से खोज करेंगे।

इसलिए। आपके मामले में, लगातार परिणामों को प्राप्त करने के लिए, निम्नलिखित को / etc / मेजबान में जोड़ें

192.168.235.41 selenium-rc

और, सुनिश्चित करें कि /etc/host.conf है:

order hosts,bind

या, सुनिश्चित करें कि /etc/nsswitch.conf है:

hosts: files dns

एक बार हो जाने के बाद, आपको पिंग, और ट्रेसरआउट, साथ ही अन्य कमांड, जैसे ssh, telnet, कर्ल, वेट, आदि के साथ अधिक सुसंगत परिणाम देखना चाहिए।


जब मैंने डीज़ल सर्वर को रेजोल्व.कॉन्फ़ फ़ाइल में खुदाई उपयोगिता के साथ सूचीबद्ध किया, तो मुझे दोनों प्रविष्टियाँ मिलीं। मुझे लगता है कि ट्रेसरूट ने पूरी तरह से योग्य को प्राथमिकता दी।
कीथ बेंट्रुप

2

लगता है कि आपके पास रिवर्स लुकअप ठीक से सेट है, लेकिन आगे नहीं।

आपका सिस्टम IP पता 192.168.235.41 देख सकता है और पहचान सकता है कि यह है selenium-rc, लेकिन जब यह देखने की कोशिश करता है तो selenium-rcयह विफल हो जाता है।

मैं आपको जांचने की सलाह देता हूं /etc/hostsऔर /etc/resolv.conf; getaddrinfoसिस्टम कॉल का व्यवहार बाद के द्वारा निर्धारित होता है और पूर्व का संदर्भ देता है।


1

मेरा अनुमान है: traceroute 192.168.235.41आईपी ​​पते 192.168.235.41 के साथ जाने वाले नाम का पता लगाने के लिए डीएनएस अनुरोध का आह्वान करने के लिए बाहर जाने का कारण बना। traceroute -n 192.168.235.41यह प्रत्येक आईपी पते पर DNS लुकअप को खोजने के बिना ट्रेसरआउट शुरू करने का तरीका है। DNS सर्वर की प्रतिक्रिया की तुलना में DNS सर्वर को अधिक समय लगना था, इसलिए पहले ट्रेसरआउट ने 192.168.235.41 के लिए होस्टनाम नहीं दिया। जब तक ट्रेसरआउट 192.168.235.41 से पैकेट भेजता है और प्राप्त करता है, तब तक आपका DNS सर्वर जवाब दे चुका होता है, इसलिए ट्रैसरआउट इसके लिए एक होस्टनाम दे सकता है।

इसलिए, मैं "DNS सर्वर मुद्दों" को बहुत सुविधाजनक समय के साथ कहूंगा, जिससे आपको अन्य चीजों पर संदेह हो। यहां "मर्फीज लॉ" सोचें। जब आप थोड़ी देर बाद वापस आए, तो आपको उसी आईपी पते के लिए एक अलग नाम मिलता है, जिससे मुझे यह भी लगता है कि जब आप अपने ट्रेसरआउट कर रहे थे, उस दौरान DNS सर्वर के साथ कोई गड़बड़ कर रहा था।

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