पिंग लोकलहोस्ट और पिंग 127.0.0.1 के बीच क्या अंतर है?


31

पिंग उत्तरों को निष्क्रिय करने के लिए निम्नलिखित को निष्पादित करने के बाद:

# sysctl net.ipv4.icmp_echo_ignore_all=1
# sysctl -p

मैं पिंगिंग लोकलहोस्ट बनाम 127.0.0.1 से अलग परिणाम प्राप्त करता हूं

# ping -c 3 localhost
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.101 ms

--- localhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2042ms
rtt min/avg/max/mdev = 0.047/0.072/0.101/0.022 ms

पिंग 127.0.0.1 विफल:

ping -c 3 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2032ms

ये परिणाम अलग क्यों हैं?

जवाबों:


60

pingआदेश से पता चलता है पता करने के लिए यह नाम संकल्प लिया। इस मामले में इसने IPv6 लोकलहोस्ट एड्रेस को हल किया ::1। दूसरी ओर, 127.0.0.1एक IPv4 पता है, इसलिए यह स्पष्ट रूप से pingIPv4 का उपयोग करता है ।

sysctlआप ही प्रयोग किया जाता आईपीवी 4 पिंग्स को प्रभावित करता है, तो आप के लिए उत्तर मिलता है ::1, लेकिन नहीं करने के लिए 127.0.0.1

आपके द्वारा हल किए गए पते से पता localhostचलता है कि आपका DNS रिज़ॉल्वर कैसे सेट किया गया है। localhostशायद में सेट है /etc/hosts, लेकिन सिद्धांत रूप में आप इसे एक वास्तविक नाम सर्वर से प्राप्त कर सकते हैं।


IPv6 पिंग्स को कैसे गिराया जाए, इस पर आपको गौर करने की जरूरत है ip6tables, क्योंकि sysctlIPv6 के लिए ऐसा प्रतीत नहीं होता है । या सिर्फ IPv6 को पूरी तरह से अक्षम करें, यदि आप इसे अपने नेटवर्क में उपयोग नहीं कर रहे हैं। (हालांकि यह एक बहुत ही दूरंदेशी विचार नहीं है, लेकिन यदि आप वर्तमान में इसे वैसे भी उपयोग नहीं कर रहे हैं, तो यह उल्लेखनीय है।)


2
IPv6 को सही ढंग से कार्य करने के लिए ICMP को अवरुद्ध करने की आवश्यकता नहीं है। ;)
zaTricky

3
@zaTricky, प्रश्न में केवल अवरुद्ध पिंग का उल्लेख किया गया है। जबकि अप्रिय और बहुत उपयोगी नहीं है, मुझे नहीं लगता कि इसे सामान्य रूप से कुछ भी तोड़ना चाहिए। सभी ICMP पैकेट को ब्लॉक करना स्पष्ट रूप से बहुत बुरा होगा, लेकिन किसी ने भी यह सुझाव नहीं दिया कि, इसका उल्लेख केवल यहाँ दो टिप्पणियों में किया गया है ...
ilkkachu

दी गई, और अधिक विशिष्ट हो सकती है। "ICMP प्रतिध्वनि-अनुरोध", जिसे आमतौर पर पिंग कहा जाता है, IPv6 पर उचित संचार के लिए आवश्यक है। आप ग्राहकों को स्वतःस्फूर्त अवांछित पिंग इनग्रेसेज़ को ब्लॉक कर सकते हैं - लेकिन यदि आप आउटबाउंड को ब्लॉक करते हैं तो आप संभवतः IPv6 कार्यक्षमता को तोड़ रहे हैं। मदद नहीं करता है कि उत्तर पोस्ट किए जाने के बाद से सवाल बदल गया लगता है।
zaTricky

33

127.0.0.1:
127.0.0.1 अधिकांश सिस्टम का डिफ़ॉल्ट लूपबैक है। लूपबैक एड्रेस ओएस के नेटवर्क स्टैक को मान्य करने के लिए सिस्टम द्वारा उपयोग किया जाने वाला एक पता है।
IPv4 के लिए लूपबैक पता सबनेट में 127.0.0.0/8
कोई भी मूल्य ले सकता है IPv6 के लिए लूपबैक पता सबनेट में ::1/128
pingकिसी भी मान ले सकता है यदि आपके नेटवर्क स्टैक आपके ओएस पर काम कर रहा है तो उस रेंज में किसी भी मूल्य पर काम करना चाहिए।

लोकलहोस्ट:
localhost एक होस्टनाम है, यह एक प्रकार का डोमेन नाम है लेकिन आपकी अपनी मशीन के लिए स्थानीय है।
यह होस्टनाम आपके IPv4 और IPv6 लूपबैक पर डिफ़ॉल्ट बिंदु द्वारा होता है जो अक्सर 127.0.0.1या होता है ::1

localhostफ़ाइल को संपादित करके पते को आसानी से बदला जा सकता है /etc/hosts
यदि आपका सिस्टम सेवा का उपयोग करता है systemd-resolved, तो यह सेवा स्थानीयहोस्ट करने के तरीके को हल करेगी।
के प्रलेखन केsystemd-resolved अनुसार :

होस्ट नामों "स्थानीय होस्ट" और "localhost.localdomain" (साथ ही किसी भी होस्ट नाम ".localhost" या ".localhost.localdomain" में समाप्त) आई पी पतों को हल कर रहे हैं 127.0.0.1और::1

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

Icmpv6 को अक्षम करें
यदि आपको IPv6 की आवश्यकता नहीं है, तो मैं आपको इसे निष्क्रिय करने की सलाह देता हूं। यह फ़ायरवॉल और सेवाओं को कॉन्फ़िगर करने के लिए आवश्यक सभी कामों को दोगुना कर देगा:

sysctl -w net.ipv6.conf.all.disable_ipv6=0

यदि आप अभी भी IPv6 का समर्थन चाहते हैं और बचना चाहते हैं icmpv6, तो आप उपयोग कर सकते हैं ip6tables:

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j DROP

2
आपकी होस्ट फ़ाइल में कुछ गड़बड़ है। ::1 localhostउसमें भी होना चाहिए ।
माइकल हैम्पटन

2
साइड नोट: IPv4 की तुलना में याद रखें कि पूरे 127.0.0.0/8 नेटवर्क लूपबैक एड्रेस हैं (इसलिए ping 127.100.101.102यह काम भी करेगा)।
जजमोंट्स

1
इसमें प्रवेश की localhostआवश्यकता नहीं है /etc/hosts। उदाहरण के लिए, के लिए systemd समाधान किया संश्लेषण करती DNS संसाधन रिकॉर्ड localhostऔर localhost.localdomain
जोहान मायरेन

@ मिचेल हैम्पटन यह पूरी hostsफाइल नहीं है, लेकिन मेरे पास ::1 localhost17.10 नहीं है
किवी

2
"सबनेट" :: 1/128 केवल एक आईपी से मेल खाती है, बहुत कुछ 127.0.0.1/32 की तरह केवल एक आईपी के लिए हल होता है।
zaTricky

9

लोकलहोस्ट के दो पते हैं, एक आईपीवी 6 पता :: 1 और एक आईपीवी 4 पता 127.0.0.1।

IPv6 डिफ़ॉल्ट प्रोटोकॉल है, इसलिए :: 1 को हमेशा 127.0.0.1 से अधिक पसंद किया जाता है। यही कारण है कि आपने लोकलहोस्ट करने के लिए कहने पर :: 1 पिंग किया है।

जैसा कि आप पिंग क्यों कर सकते हैं :: 1 लेकिन 127.0.0.1 पिंग नहीं कर सका, आपके sysctl में IPv4 के लिए केवल अक्षम पिंग्स हैं, लेकिन IPv6 के लिए नहीं। जहां तक ​​मैं बता सकता हूं, IPv6 के लिए पिंग को अक्षम करने के लिए कोई संबंधित sctctl नहीं है, लेकिन आप इसे फ़ायरवॉल में अक्षम कर सकते हैं बजाय अगर आपको वास्तव में ज़रूरत है (बेशक इसे अक्षम करने की सिफारिश नहीं की जाती है)।


5
IPv6 के लिए पिंग को अक्षम करना, इसे कनेक्टिविटी को तोड़ने की सलाह दी जाती है, टेरेडो एड्रेस से जुड़ने वाले लोग अब मशीन तक नहीं पहुंच सकते (क्योंकि यह पिंग का उपयोग सबसे नज़दीकी किसी भी
हेरफेर टेरेडो

1
IPv6 बनाम IPv4 के लिए नाम समाधान की वरीयता को /etc/gai.confफ़ाइल के साथ नियंत्रित किया जा सकता है । डिफ़ॉल्ट रूप से, इसमें केवल टिप्पणियां हैं। यदि आप इसमें precedenceलाइनों को अनसुना करते हैं और टिप्पणियों में सुझाए गए परिवर्तन भी करते हैं, तो आप डिफ़ॉल्ट IPv6 के बजाय IPv4 को पसंद करने के लिए होस्टनाम रिज़ॉल्यूशन प्राप्त कर सकते हैं।
टेल्कम

@telcoM हां, आप ऐसा कर सकते हैं। यदि आप करते हैं, हालांकि, यह किसी के लिए भी प्रमुख चेतावनी देने के लिए एक अच्छा विचार है जो उस मशीन का उपयोग कर सकता है, जैसा कि पूर्व परिवर्तन से अप्रत्याशित व्यवहार का परिचय होता है।
माइकल हैम्पटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.