मेरा एक डॉकटर कंटेनर पोर्ट 8500 पर एक एचटीटीपी इंटरफेस को उजागर करता है, जिसे पोर्ट 8500 होस्ट करने के लिए मैप किया जाता है। यह IP66 सक्षम नहीं है । इसका अभी भी मतलब है, मुझे इसे स्थानीयहोस्ट: 8500 पर एक्सेस करने में सक्षम होना चाहिए। IPv6 को प्राथमिकता दी जाती है, इसलिए मैं [:: 1]: 8500 के अनुरोध के साथ समाप्त होता हूं। यह एक अटक जाता है, यह कभी नहीं लौटता है।
इसे कर्ल के साथ पुन: प्रस्तुत करने पर, यह कमांड अटक जाती है:
curl -g -6 "http://[::1]:8500"
कर्ल का --verbose विकल्प कुछ भी नहीं बताता है, न ही --ascii-ट्रेस। उसी समय, IPv4 के स्थानीयहोस्ट के लिए एक अनुरोध सफल होता है:
curl http://127.0.0.1:8500
मुझे अपेक्षित HTML दे रहा है। अगर मैं लूपबैक पर, उपयोग करके IPv4 HTTP सर्वर चलाता हूं
python -m SimpleHTTPServer 4001
तब मुझे IPv4 के लोकलहोस्ट के लिए बहुत सारे HTML मिलते हैं
curl http://127.1:4001
और IPv6 के लिए एक उचित कनेक्शन विफलता:
curl -g -6 "http://[::1]:4001"
curl: (7) Failed to connect to ::1 port 4001: Connection refused
ध्यान देने योग्य बातें: डॉकटर 1.7.1। IPv6 कंटेनर के लिए सक्षम नहीं है , इसलिए IPv6 iptable नियम नहीं हैं। (ip6tables -v -L कुछ नहीं देता है)
मेरा सवाल है: अनुरोध क्यों अटक जाता है, और क्या कर रहा है?
tcp6 0 0 :::8500 :::* LISTEN 1648/docker
आकर्षक। क्यों? और यह क्यों अवरुद्ध है?
/proc/sys/net/ipv6/conf/all/disable_ipv6
0 देता है, इसलिए IPv6 सक्षम होना चाहिए।