ব্রাউজারে ইন্ট্রানেট পৃষ্ঠা খুললেও তা শুধু ব্রাউজারের জন্য প্রক্সি কাজ করছে বোঝায়, npm বা Maven-এর জন্য নয়। প্রতিটি ক্লায়েন্ট নিজের কনফিগ পড়ে, আর শুধু VPN দিয়ে পাওয়া নেটওয়ার্কে দ্বিতীয় প্রশ্ন ওঠে: ক্লায়েন্ট কি প্রক্সি পর্যন্ত পৌঁছাতে পারে। স্টেটাস কোড দিয়ে শুরু করুন, তারপর ব্যর্থ টুলের কনফিগ চেইন অনুসরণ করুন। তাই একটি ক্লায়েন্ট চলে, পাশেরটি ব্যর্থ হয়।

407 আসলে কী প্রমাণ করে

407 Proxy Authentication Required আসে প্রক্সি থেকে, রেজিস্ট্রি বা রিপোজিটরি থেকে নয়। ক্লায়েন্ট প্রক্সিতে পৌঁছেছে, কিন্তু প্রক্সি অনুরোধ প্রত্যাখ্যান করেছে, সাধারণত ক্রেডেনশিয়াল অনুপস্থিত, ভুল গঠনের বা ওই গন্তব্যের জন্য গ্রহণযোগ্য নয় বলে।

টাইমআউট অন্য কথা বলে। ক্লায়েন্টের প্রক্সি ঠিকানা ভুল হতে পারে, টানেল ওঠার আগে প্রক্সিতে পথ না থাকতে পারে, বা অভ্যন্তরীণ হোস্টের জন্য বাইপাস এন্ট্রি না থাকতে পারে। ক্রেডেনশিয়াল বদলানোর আগে ত্রুটির লেখা পড়ুন।

প্রক্সি হোস্ট, পোর্ট, প্রমাণীকরণ পদ্ধতি এবং ব্যবহারকারীর নামে ডোমেইন উপসর্গ লাগে কি না যাচাই করুন। তারপর দেখুন ব্যর্থ টুলটি মান ফাইল, পরিবেশ চলক নাকি দুটো থেকেই পড়ে। ডোমেইনযুক্ত ব্যবহারকারীর নাম 407-এর সাধারণ কারণ। ভুল এনকোডিংয়ে রাখা পাসওয়ার্ডও তাই।

npm নিজের কনফিগ চেইন পড়ে

npm ব্যবহারকারী বা প্রজেক্ট .npmrc-এ proxy ও https-proxy কী গ্রহণ করে। স্কিম লিখুন, কারণ মানগুলো URL, এবং পাসওয়ার্ডের সংরক্ষিত অক্ষর URL-এনকোড করুন যাতে at চিহ্ন মানটিকে ভাগ না করে।

proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true

npm config list দিয়ে দেখুন কোন ফাইল কোন কার্যকর মান দিয়েছে। npm_config_proxy-এর মতো shell export ফাইলটিকে ছাড়িয়ে যেতে পারে, আর ব্যক্তিগত পাসওয়ার্ড থাকা প্রজেক্ট-স্তরের .npmrc কখনো কমিট করা উচিত নয়। মানের সঙ্গে উৎস পথও দেখুন।

strict-ssl চালু রাখুন। TLS পরীক্ষা করা প্রক্সি truststore-এ থাকা কর্পোরেট CA দাবি করতে পারে; ত্রুটি এড়াতে যাচাই বন্ধ করলে আসল বিশ্বাসের সমস্যা ঢাকা পড়ে।

Maven প্রক্সি ও মিরর আলাদা রাখে

Maven প্রক্সি ও মিরর ব্যবহারকারীর settings ফাইল থেকে পড়ে, প্রজেক্ট pom থেকে নয়। নেটওয়ার্ক-নির্দিষ্ট প্রক্সি ও অভ্যন্তরীণ রিপোজিটরি মিরর ~/.m2/settings.xml-এ রাখুন, আর প্রকাশ্য রিপোজিটরি ঘোষণা প্রজেক্টেই থাকুক।

প্রক্সি ব্লকে id, সক্রিয় ফ্ল্যাগ, প্রোটোকল, হোস্ট ও পোর্ট, এবং অভ্যন্তরীণ রিপোজিটরির জন্য nonProxyHosts এন্ট্রি লাগে। এই ক্ষেত্রগুলো প্রজেক্ট pom-এ নয়, ব্যবহারকারীর settings ফাইলে রাখুন, যাতে নেটওয়ার্ক বদলালে পুরো দলের বিল্ড নতুন করে লেখা না হয়। মিরর এন্ট্রি আলাদা এবং Maven-কে অভ্যন্তরীণ রিপোজিটরিতে পাঠায়।

Maven সরাসরি সংযোগ করতে অভ্যন্তরীণ রিপোজিটরি nonProxyHosts-এ যোগ করুন। এই এন্ট্রি না থাকলে প্রক্সি অপ্রয়োজনীয় মাঝের ধাপ হয়ে যায় আর ব্যর্থতা রিপোজিটরি বন্ধের মতো দেখায়। মিরর এন্ট্রি অভ্যন্তরীণ রিপোজিটরির দিকে ইশারা করে; প্রক্সি সেটিং বদলায় না।

নেটওয়ার্ক বদলানো ডেভেলপাররা প্রতি নেটওয়ার্কের জন্য একটি settings ফাইল রাখতে পারেন এবং shell শুরু হলে সঠিক কপি বেছে নিতে পারেন। প্রতিবার হাতে একটি ফাইল সম্পাদনা করলে কাজ করা ল্যাপটপই সাপোর্ট টিকিট হয়ে যায়।

VS Code ও dev কন্টেইনারের নেমস্পেস আলাদা

VS Code http.proxy ব্যবহারকারী বা workspace সেটিংস থেকে পড়ে, স্কিম ও পোর্টসহ। এটি সম্পাদকের নিজের এক্সটেনশন ও মার্কেটপ্লেস অনুরোধ কভার করে, কিন্তু টার্মিনাল বা সম্পাদক থেকে চালু করা কন্টেইনার স্বয়ংক্রিয়ভাবে কনফিগার করে না। সেটিংয়ের পরিধি ও মান দুটোই যাচাই করুন। workspace সেটিং একটি প্রজেক্টের জন্য ব্যবহারকারী সেটিং ছাড়িয়ে যেতে পারে।

dev কন্টেইনারের নিজের নেটওয়ার্ক নেমস্পেস থাকে। এটি হোস্টের প্রক্সি চলক বা VPN পথ উত্তরাধিকার পায় না, তাই কন্টেইনারের ভিতরে মার্কেটপ্লেস কল ব্যর্থ হতে পারে যখন হোস্টে একই কল চলে।

কন্টেইনারকে ওই চলকগুলো দিন, বা নিজের রিজলভার ও পথ দিন। ভিতরে নাম সমাধান হলেও প্রক্সি কখনো উত্তর না দিলে, অনুপস্থিত অংশ সাধারণত পথ, ঠিকানা নয়।

বাইপাস তালিকা ও পরিবেশের অগ্রাধিকার

VPN গেটওয়ে, অভ্যন্তরীণ রেজিস্ট্রি ও ব্যক্তিগত DNS উপসর্গ বাইপাস তালিকায় যোগ করুন। টানেল ওঠার আগে ক্লায়েন্ট প্রক্সি দিয়ে VPN গেটওয়েতে পৌঁছাতে চাইলে সংযোগ প্রক্সি বন্ধের মতো হয়ে ব্যর্থ হয়। টানেল বন্ধ রেখে সেই বাইপাস পরীক্ষা করুন।

পরিবেশ চলক ও ফাইল আলাদা হতে পারে। shell-এর নয়, টুলের নিজের কনফিগ ডাম্প চালান এবং জানানো মানগুলো মিলিয়ে দেখুন। ছোট হাতের নকল চলক, পিতৃ shell-এ পুরনো মান বা প্রজেক্ট ফাইল আপনি এইমাত্র বদলানো সেটিং ছাড়িয়ে যেতে পারে।

CI-তে প্রক্সি গোপন চলক হিসেবে দিন এবং একই image-এ একটি প্যাকেজ ইনস্টল পরীক্ষা করুন। কন্টেইনারে 407 মানে প্রায়ই চলকটি সেখানে নেই, অথচ হোস্ট shell-এ আছে।

প্রতিটি টুলের জন্য প্রক্সি হোস্ট, পোর্ট, বাইপাস উপসর্গ এবং সেগুলো সরবরাহ করা ফাইল বা চলক লিখে রাখুন। একটি ক্লায়েন্ট 407 ফেরালে আর অন্যটি চললে, সেই নোট চারটি আলাদা কনফিগের তুলনাকে ছোট যাচাইয়ে বদলে দেয়।

সম্পর্কিত নিবন্ধ