কম্পিউটার

ডকার নাম রেজোলিউশন নেটওয়ার্ক সমস্যা - টিউটোরিয়াল

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

এটি একটি খুব অস্পষ্ট সমস্যা বিবৃতি মত শোনাচ্ছে, কিন্তু এই কি আমি হঠাৎ সম্মুখীন ছিল. অস্থায়ী ব্যর্থতা সমাধান URL এর মত ত্রুটি সহ আমার কন্টেইনারগুলিতে নেটওয়ার্ক অ্যাক্সেস ছিল না। এটি নামের রেজোলিউশনের সাথে একটি সমস্যার মতো লাগছিল এবং এটি আমাকে অতিরিক্ত বাগ করেছে, কারণ এটি হওয়ার কথা ছিল না। কিন্তু আমরা নিজেদের থেকে এগিয়ে আছি। টেস্ট হোস্ট:সিস্টেমড সহ উবুন্টু - পরবর্তীদের জন্য গুরুত্বপূর্ণ। চলুন ধীরে ধীরে এগিয়ে যাই।

আরো বিশদে সমস্যা

আপনি আপনার সিস্টেমে ডকার কনফিগার করেছেন। এটা ভাল কাজ করছে. আপনার একাধিক ছবি, একাধিক পাত্র রয়েছে এবং আপনি এমনকি উন্নত নেটওয়ার্ক নিয়মগুলি ব্যবহার করেছেন এবং সবকিছুই নিখুঁত ক্রমে রয়েছে বলে মনে হচ্ছে৷ তারপর, আপনি লক্ষ্য করেছেন যে আপনি আর আপনার পাত্রে কিছু ক্রিয়াকলাপ করতে পারবেন না, যেমন আপডেট বা প্যাকেজ ইনস্টলেশন। এটি ডিবাগ করার সর্বোত্তম উপায় হল একটি চলমান ধারক উদাহরণের সাথে একটি শেল সংযুক্ত করা, যেমন আমি ভূমিকা গাইডে ব্যাখ্যা করেছি। প্রকৃতপক্ষে, একটি চলমান পাত্রের ভিতরে, আপনি এরকম কিছু দেখতে পাচ্ছেন:

# apt-get update
Err:1 https://archive.ubuntu.com/ubuntu bionic InRelease
'archive.ubuntu.com' সমাধানে সাময়িক ব্যর্থতা
0% [নিরাপত্তার সাথে সংযোগ করা হচ্ছে। ubuntu.com]

এটি একটি DNS সমস্যা (নাম রেজোলিউশন) মত দেখাচ্ছে। কনটেইনারটি আইপি ঠিকানাগুলিতে ডোমেন নামগুলি কীভাবে সমাধান করা যায় তা বের করতে অক্ষম, এবং তাই এটি আপডেটের মতো ডেটা দখল করতে সার্ভারের সাথে সংযোগ করতে পারে না। এখানে দুটি বিষয় আছে। এক, হঠাৎ সহ্য করতে সমস্যাটা এলো কেন? দুই, আমাদের আসলে নেটওয়ার্ক ঠিক করতে হবে। এখন, আমি আপনাকে দেখাতে চাই কিভাবে এটি একটি মার্জিত উপায়ে সমস্যা সমাধান করা যায়।

সমাধান

প্রথমে, আসুন বুঝতে পারি কেন সমস্যাটি ঘটেছে। এখানে কোন তাৎক্ষণিক উত্তর নেই, তবে দেখার জন্য কিছু জিনিসের মধ্যে আপনার তাৎক্ষণিক পরিবেশের চেয়ে আরও বেশি কিছু অন্তর্ভুক্ত থাকতে পারে। উদাহরণস্বরূপ, আপনার হোস্ট পরিবর্তিত নাও হতে পারে, কিন্তু নেটওয়ার্ক থাকতে পারে - রাউটার, নেটওয়ার্ক নীতি, DNS সার্ভার নিজেরাই। যেহেতু আপনি আপনার তাত্ক্ষণিক সেটআপের বাইরে কী ঘটছে তা সাধারণত নিয়ন্ত্রণ করতে পারবেন না, তাই সমস্যাটি কোথায় রয়েছে তা খুঁজে বের করার সর্বোত্তম উপায় হল সমস্যাটিকে ধাপে ধাপে বিচ্ছিন্ন করা।

  • যদি আপনার হোস্ট সিস্টেমে নেটওয়ার্ক থাকে এবং URL গুলি সমাধান করতে না পারে, তাহলে আপনাকে প্রথমে এটি বাছাই করতে হবে। আপনার হোস্ট এবং গন্তব্যের মধ্যে সম্ভবত একটি সমস্যা আছে, এবং এর মধ্যে যেকোন নেটওয়ার্ক পরিকাঠামো বিদ্যমান।
  • যদি আপনার হোস্ট সিস্টেমের নেটওয়ার্ক থাকে এবং সঠিকভাবে URL গুলি সমাধান করতে পারে, তাহলে সমস্যাটি বিশেষভাবে ডকার কন্টেইনারগুলি কীভাবে URLগুলি সমাধান করে। এখানেই আমাদের পরবর্তী ফোকাস করতে হবে।
  • ডকার নেটওয়ার্ক ইন্টারফেস আপ এবং চলমান কিনা তা পরীক্ষা করুন (ip বা ifconfig এর মতো কমান্ড সহ)। যদি না হয়, আপনি পরবর্তী ধাপে যাওয়ার আগে প্রথমে এটি ঠিক করবেন।

ifconfig docker0

  • কন্টেইনার ইনস্ট্যান্সে একটি IP ঠিকানা আছে কিনা তা পরীক্ষা করুন। যদি না হয়, তাহলে আপনাকে এটি ঠিক করতে হবে।

ডকার পরিদর্শন <কন্টেইনার নাম বা আইডি> | grep -i "ipaddr"

  • সম্ভব হলে কনটেইনারের ভিতরে আপনি একই ফলাফল পান কিনা তা পরীক্ষা করুন (ip বা ifconfig)। যদি ফলাফলটি পূর্ববর্তী কমান্ডে যা দেখেছেন তার সাথে মেলে না, তাহলে আপনাকে এটি ঠিক করতে হবে।
  • আপনি বাইরে থেকে কন্টেইনারটি পিং করতে পারেন কিনা তা পরীক্ষা করুন (এবং এর বিপরীতে, যদি পিং কমান্ড উপলব্ধ থাকে)। যদি পিং কাজ করে, এটি সম্ভবত একটি ভাল ইঙ্গিত যে নেটওয়ার্কটি সঠিকভাবে কনফিগার করা হয়েছে এবং কোন ফায়ারওয়াল নিয়ম নেই যা ট্র্যাফিক ব্লক করে (সম্ভবত)।

নাম রেজোলিউশন

যদি এই সমস্ত চেকগুলি কোনও অদ্ভুত সমস্যা বা ত্রুটি ফেরত না দেয় তবে পরবর্তী পদক্ষেপটি হল DNS রেজোলিউশনে ফোকাস করা৷ এর জন্য কনফিগারেশন /etc/resolv.conf কনফিগারেশন ফাইলে উপলব্ধ হবে। এটি লিনাক্সের ভৌত দৃষ্টান্তের পাশাপাশি ভার্চুয়াল মেশিন এবং কন্টেইনার উভয় ক্ষেত্রেই সত্য। আপনি সম্ভবত লক্ষ্য করবেন যে ধারকটি এরকম কিছু ব্যবহার করে:

...
# /etc/resolv.conf-এর জন্য সমর্থিত মোড
# অপারেশনের বিস্তারিত জানার জন্য man:systemd-resolved.service(8) দেখুন।

xyz অনুসন্ধান করুন

নামসার্ভার X.Y.Z.W
...

নেমসার্ভার আইপি ঠিকানাগুলি সম্ভবত একটি বহিরাগত আইপি ঠিকানা (আপনার আইএসপির মতো কিছু) বা লোকালহোস্ট (127.0.0.X) হতে পারে। প্রশ্ন হল:এগুলো কি আপনার হোস্টের /etc/resolv.conf ফাইলের সাথে মেলে?

উত্তর হল, সম্ভবত আপনার হোস্টের /etc/resolv.conf ফাইলে লোকালহোস্ট সংজ্ঞায়িত থাকবে। এখন, আপনার পাত্রে এটি চেষ্টা করুন। resolv.conf ফাইলটি সম্পাদনা করুন এবং নেমসার্ভার লাইনের আইপি ঠিকানাটি হোস্টের মান =লোকালহোস্টের সাথে মেলে এমন একটি দিয়ে প্রতিস্থাপন করুন। যদি এটি আপনার সমস্যার সমাধান করে, দুর্দান্ত। কিন্তু সম্ভবত, এটা হবে না।

কিন্তু তারপর, এই মুহুর্তে, আপনার হোস্টে নেটওয়ার্ক সংযোগ নিয়ে আপনার কোন সমস্যা নেই। তাই আমাদের আপনার পরিবেশে DNS সার্ভারের আসল ঠিকানা বের করতে হবে। এবং বেশিরভাগ আধুনিক লিনাক্স ডিস্ট্রিবিউশন সিস্টেমড ব্যবহার করে এটি আরও জটিল। প্লট ঘন হয়।

সিস্টেমড দিয়ে DNS খুঁজে বের করুন

তাই হ্যাঁ. নেমসার্ভার কী তা আমাদের বের করতে হবে এবং এর জন্য আমাদের একটি সিস্টেমড কমান্ড ব্যবহার করতে হবে। সম্ভবত, আপনার সিস্টেমে সিস্টেমড থাকলে, আপনি সিস্টেমড-সমাধান, নেটওয়ার্ক নাম রেজোলিউশন ম্যানেজার এবং পরিষেবা ব্যবহার করছেন। কনফিগারেশনটি /etc/systemd/resolved.conf এর অধীনে সংরক্ষণ করা হয়। কিন্তু আপনি systemd-resolve কমান্ডের সাহায্যে কমান্ড লাইনে ফলাফলও পেতে পারেন:

systemd-resolve --status

Link 3 (wlp59s0)
বর্তমান স্কোপ:DNS
LLMNR সেটিং:হ্যাঁ
MulticastDNS সেটিং:না
DNSSEC সেটিং:না
DNSSEC সমর্থিত:না
DNS সার্ভার:10.50.34.1
2001:64c:1462:b023::1
DNS ডোমেন:dedoimedo

এখানে আমাদের কি আছে? অনেক আকর্ষণীয় জিনিস. কিন্তু যেটা আসলেই গুরুত্বপূর্ণ তা হল DNS সার্ভার পড়ার লাইন। এটাই আমরা চাই। এই IP ঠিকানাটি /etc/resolv.conf ফাইলে রাখুন এবং আবার চেষ্টা করুন। আপনার নেটওয়ার্ক আবার কাজ করা উচিত।

তাহলে এই সমস্যা কেন?

এখন, আমরা আবার কেন আলোচনা করতে পারেন. আপনি যদি systemd-resolve ডকুমেন্টেশন দেখেন, তাহলে এটা সম্ভব যে আপনার সিস্টেমে কিছু পরিবর্তন হয়েছে (সম্ভবত এমনকি নিয়মিত আপডেটের কারণেও) যার ফলে অপারেশনের নির্বাচিত মোড নামের রেজোলিউশনের সাথে কিছু বিরোধ সৃষ্টি করে। বিশেষ করে, আমরা যদি দেখি যেভাবে /etc/resolv.conf পরিচালনা করা হয়, তাহলে প্রথম মোডটি বলে:

systemd-resolved প্রথাগত Linux প্রোগ্রামগুলির সাথে সামঞ্জস্যের জন্য /run/systemd/resolve/stub-resolv.conf ফাইলটি বজায় রাখে। এই ফাইলটি /etc/resolv.conf থেকে সিমলিংক করা হতে পারে। এই ফাইলটি শুধুমাত্র DNS সার্ভার হিসাবে 127.0.0.53 DNS স্টাব (উপরে দেখুন) তালিকাভুক্ত করে। এটিতে অনুসন্ধান ডোমেনের একটি তালিকা রয়েছে যা সিস্টেমড-সমাধান দ্বারা ব্যবহৃত হয়। সার্চ ডোমেনের তালিকা সবসময় আপ-টু-ডেট রাখা হয়। মনে রাখবেন যে /run/systemd/resolve/stub-resolv.conf অ্যাপ্লিকেশন দ্বারা সরাসরি ব্যবহার করা উচিত নয়, শুধুমাত্র /etc/resolv.conf থেকে একটি সিমলিংকের মাধ্যমে। এই ফাইলটি /etc/resolv.conf থেকে সিমলিংক করা হতে পারে যাতে স্থানীয় DNS API গুলিকে বাইপাস করে সঠিক অনুসন্ধান ডোমেন সেটিংসের সাথে systemd-সমাধান করা সমস্ত স্থানীয় ক্লায়েন্টকে সংযুক্ত করতে। অপারেশন এই মোড সুপারিশ করা হয়.

যদি এই সমীকরণের লিঙ্কগুলির একটি ভেঙ্গে যায়, বা কিছু পরিবর্তিত হয়, তবে এটি সম্ভব যে ডকার পরিষেবাটি আসলে কী দেয় তা নির্ধারণ করতে পারে না এবং আপনি কোনও নাম রেজোলিউশন ছাড়াই শেষ করতে পারেন। সুতরাং রেজোলিউশন [sic] হল প্রকৃত নেটওয়ার্ক DNS ঠিকানা প্রদান করা, যা কন্টেইনাররা বুঝতে এবং ব্যবহার করতে পারে। এটি আমার পক্ষে কিছুটা অনুমানমূলক, তবে আমি মনে করি এটি বেশ সঠিক।

উপসংহার

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

বিষয়ে, আশা করি এই ছোট্ট গাইডটি আপনাকে আপনার কন্টেইনার অ্যাডভেঞ্চারের জন্য তুলনামূলকভাবে দ্রুত এবং বেদনাহীন সমাধান প্রদান করবে। আপনি যদি ডকার ব্যবহার করেন, এবং নাম রেজোলিউশন আর কন্টেইনার ইনস্ট্যান্সের মধ্যে কাজ করে না, তাহলে সম্ভবত আপনার উপরে লেখা টিপস এবং কৌশলগুলি পরীক্ষা করা উচিত - এবং তারপরে সঠিক জায়গায় আপনার নিজের ছবিগুলি তৈরি করুন, যাতে আপনার প্রয়োজন নেই এই সব আবার যুদ্ধ. এবং আপনি সেখানে যান, শেষ।

চিয়ার্স।


  1. ভার্চুয়ালবক্স এবং NAT নেটওয়ার্ক কনফিগারেশন টিউটোরিয়াল

  2. সাধারণ KVM সমস্যার সমাধান করা

  3. কিভাবে KVM-তে স্টোরেজ পরিচালনা করবেন - টিউটোরিয়াল

  4. ভার্চুয়ালবক্সে কীভাবে ডিস্ক ক্লোন করবেন - টিউটোরিয়াল