আমার এক Docker ধারক পোর্ট 8500 উপর একটি HTTP ইন্টারফেস, যা হোস্ট বন্দর 8500. এটা হয় ম্যাপ করা হয় অনাবৃত না IPv6, সক্ষম করা হয়েছে। এর অর্থ এখনও, আমার লোকালহোস্টে: 8500 এ এটি অ্যাক্সেস করা উচিত। আইপিভি 6 টি অগ্রাধিকারপ্রাপ্ত, সুতরাং আমি [:: 1]: 8500 এ একটি অনুরোধ দিয়ে শেষ করব। এই আটকে যায়, এটি আর ফিরে আসে না।
এটি কার্ল দিয়ে পুনরুত্পাদন করে, এই আদেশটি আটকে যায়:
curl -g -6 "http://[::1]:8500"
কার্ল এর --verbose বিকল্পটি কিছুই প্রকাশ করে না, --ascii-traceও করে না। একই সময়ে, আইপিভি 4 এর লোকালহোস্টের একটি অনুরোধ সফল হয়েছে:
curl http://127.0.0.1:8500
আমাকে প্রত্যাশিত এইচটিএমএল দিচ্ছে। যদি আমি লুপব্যাকে আইপিভি 4 এইচটিটিপি সার্ভার চালনা করি তবে
python -m SimpleHTTPServer 4001
তারপরে আমি আইপিভি 4 এর লোকালহোস্টের জন্য প্রচুর এইচটিএমএল পাই
curl http://127.1:4001
এবং আইপিভি 6 এর জন্য উপযুক্ত সংযোগ ব্যর্থতা:
curl -g -6 "http://[::1]:4001"
curl: (7) Failed to connect to ::1 port 4001: Connection refused
বিষয়গুলি লক্ষণীয়: ডকার ১.7.১। আইপিভি 6 কনটেইনারটির জন্য সক্ষম নয় , সুতরাং এখানে কোনও আইপিভি 6 iptable নিয়ম নেই। (ip6tables -v -L কিছুই দেয় না)
আমার প্রশ্ন: অনুরোধটি কেন আটকে যায় এবং কী করছে?
tcp6 0 0 :::8500 :::* LISTEN 1648/docker
আকর্ষণীয়। কেন? এবং কেন এটি বাধা দিচ্ছে?
/proc/sys/net/ipv6/conf/all/disable_ipv6
0 দেয়, তাই IPv6 সক্ষম করা উচিত।