दुर्भाग्य से, यह इस बात पर निर्भर करता है कि आप किस ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं।
Microsoft Windows पर, ::
केवल सॉकेट को बांधने से IPv6 पोर्ट से जुड़ जाता है। इस प्रकार IPv4 और IPv6 दोनों पर सभी पतों को सुनने के लिए, आपको 0.0.0.0
साथ ही साथ बांधने की जरूरत है ::
। निम्नलिखित अर्क विस्टा बॉक्स से है:
C:\>netstat -an | find "445"
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP [::]:445 [::]:0 LISTENING
उदाहरण मैं दे रहा हूँ पोर्ट 445, SMB यातायात के लिए प्रयोग किया जाता है जब NetBIOS का उपयोग नहीं किया जाता है। जैसा कि आप देख सकते हैं, यह दोनों के लिए बाध्यकारी है 0.0.0.0
और ::
बनाने के लिए, क्रमशः, आईपीवी 4 और आईपीवी 6 दोनों क्लाइंट काम करते हैं।
लिनक्स पर, ::
आईपीवी 4-संगत पतों के समावेशी है, जैसा कि आपने सही अनुमान लगाया है, इसलिए 0.0.0.0
साथ ही साथ बाध्यकारी अनावश्यक है। मैंने एक साधारण पायथन प्रोग्राम लिखा जो केवल एक AF_INET6
सॉकेट पर बांधता है ::
। भले ही मैं भी एक AF_INET
(IPv4) सॉकेट के लिए बाध्य नहीं था , यह अभी भी IPv4 ग्राहकों से कनेक्शन स्वीकार करता है। अगर, कहते हैं, इससे 10.1.1.3
कनेक्ट होता है, तो यह कनेक्ट होने के रूप में दिखाई देगा ::ffff:10.1.1.3
।
सिवाय इसके कि यह बालों को मिलता है। उपरोक्त लिनक्स पर लागू नहीं होता है यदि /proc/sys/net/ipv6/bindv6only
सेट किया जाता है 1
, तो इस मामले में व्यवहार बिल्कुल विंडोज के समान है - ::
केवल IPhone6 अनुरोधों को सुनने के लिए बाध्यकारी । यदि आप IPv4 अनुरोधों के लिए भी सुनना चाहते हैं, तो आपको एक AF_INET
सॉकेट बनाने और 0.0.0.0
साथ ही सुनने की आवश्यकता होगी । सौभाग्य से, डिफ़ॉल्ट के लिए bindv6only
है 0
, इसलिए एक बहुत ही पतली संभावना है कि आपको कभी भी इससे निपटना होगा (सिवाय अगर आप डेबियन का उपयोग करते हैं, जो वास्तव में चूक है bindv6only = 1
)।
यह देखने के लिए चेकिंग में यह जानना आसान है कि क्या कोई सेवा IPv6- सक्षम है, और क्या यह IPv4- सक्षम भी है। यहाँ मेरा SSH सर्वर है:
$ netstat -64ln | grep 22
tcp6 0 0 :::22 :::* LISTEN
जैसा कि आप देख सकते हैं, एसएसएच केवल ::
पोर्ट 22 पर सुन रहा है । हालांकि, यह सिर्फ आईपीवी 6 ग्राहकों के लिए नहीं सुन रहा है - यह आईपीवी 4 ग्राहकों के लिए ठीक काम करता है, क्योंकि आईपीवी 4-संगत बाइंडिंग है। यह साबित करने के लिए, यदि आप इसे देखते हैं:
$ cat /proc/sys/net/ipv6/bindv6only
0
bindv6only
अक्षम है (डिफ़ॉल्ट)। यदि यह निर्धारित किया गया था 1
, तो मुझे SSH को 0.0.0.0
भी (या इसके बजाय) सुनने के लिए प्रोत्साहित करना होगा ।
मैक ओएस एक्स चीजों के पक्ष में कोई जानकारी नहीं होने के लिए माफी। मैंने अतीत में इसका उपयोग किया है, लेकिन मैं गनोम के सौंदर्यशास्त्र को पसंद करता हूं, इसलिए मैंने बहुत लंबे समय में इसका उपयोग नहीं किया है। हालाँकि, मुझे लगता है कि व्यवहार लिनक्स के समान ही है।
उम्मीद है की यह मदद करेगा।