কে /etc/resolv.conf পড়ে?


16

আমার সেন্টোস 7 সার্ভার ডোমেন নামগুলি সঠিকভাবে সমাধান করে না। আমি যা দেখতে পাই তা থেকে আধুনিক লিনাক্স সিস্টেমে /etc/resolv.confপ্রায়শই তৈরি হয় dhclient, dnsmasqবা Network Manager

এইভাবে আমার কাছে আধুনিক লিনাক্সের নেটওয়ার্ক স্ট্যাক সম্পর্কে একটি সাধারণ তাত্ত্বিক প্রশ্ন রয়েছে:

পড়ার জন্য দায়ী কে /etc/resolv.conf? ডোমেন নাম রেজোলিউশনে কোন খেলোয়াড় (পরিষেবা বা কার্নেল সাবসিস্টেম) জড়িত?

সংক্ষিপ্ত উত্তর: আর্চ লিনাক্স ম্যানুয়ালটিতে বলা হয়েছে যে ডোমেন নেম রেজোলিউশনের উচ্চ-স্তরের কনফিগারেশন সম্পন্ন হয়েছে /etc/nsswitch.conf এবং নাম পরিষেবা স্যুইচ glibcএপিআইতে নির্ভর করে ।

glibcব্যবহারসমূহ nss-resolveডিএনএস সার্ভারে ডিএনএস অনুরোধ পাঠানোর জন্য কাজ করে।

সাধারণত আধুনিক সেন্টোস সিস্টেমে পরিষেবার nss-resolve উপর নির্ভর করে systemd-resolved । যদি /etc/resolv.confভালো কিছু করে উত্পন্ন করা হয়েছিল dhclient-script, systemd-resolvedএটি সার্চ এবং একটি সামঞ্জস্য মোডে কাজ করে, মত পুরোনো সিস্টেমের আচরণ এমুলেট BINDDNS ক্লায়েন্ট।

উত্তর:


20

ডিএনএস ক্লায়েন্ট লাইব্রেরি না।

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

যদিও তাদের বেশিরভাগের নিজস্ব নিজস্ব কনফিগারেশন প্রক্রিয়া রয়েছে তবে তারা সাধারণত যেখানে পড়েন সেখানে একটি BIND গ্রন্থাগারের সামঞ্জস্যতা মোড থাকে resolv.confযা ISC এর BIND সি ক্লায়েন্ট লাইব্রেরির কনফিগারেশন ফাইল।

এনএসএস এর উপরে স্তরযুক্ত এবং এটি দ্বারা কনফিগার করা হয়েছে nsswitch.conf। এনএসএসের অনুসন্ধানগুলির মধ্যে অভ্যন্তরীণভাবে যে জিনিসগুলি শুরু করতে পারে nsswitch.confসেগুলির মধ্যে একটি হ'ল ডিএনএস ক্লায়েন্ট, এবং সিএস লাইব্রেরিতে এনএসএস কোড দ্বারা ডিএনএস ক্লায়েন্টের কাছে লুকআপগুলি হস্তান্তর করা হয় কি না এবং বিভিন্ন প্রতিক্রিয়াগুলি কীভাবে মোকাবেলা করতে হয় তা নির্ধারণ করে তা পড়ে read

(এনএসসিডি নাম পরিষেবাদি ক্যাশে ড্যামনের কারণে এই ধারণায় কিছুটা জটিলতা রয়েছে। তবে এটি কেবল সি লাইব্রেরিতে একটি অতিরিক্ত উপরের স্তরের ক্লায়েন্ট যুক্ত করে, একটি স্থানীয় সার্ভারে একটি আইডিসিঙ্ক্র্যাটিক প্রোটোকল বলে, যা তার পরিবর্তে এটি হিসাবে কাজ করে একটি প্রক্সি ডিএনএস সার্ভারে ডিএনএস প্রোটোকল বলছে এমন ডিএনএস ক্লায়েন্ট systemd-resolvedsimilar অনুরূপ জটিলতা যুক্ত করে)

systemd-resolved, NetworkManager, connman, dhcpcd, resolvconf, এবং অন্যদের সুইচ ডিএনএস ক্লায়েন্ট জুড়তে DNS ক্লায়েন্ট কনফিগারেশন ফাইল মাছি উপর বিভিন্ন প্রক্সি DNS সার্ভার সাথে কথা বলতে সমন্বয়। এটি এই উত্তরের সুযোগের বাইরে নয়, বিশেষত যেহেতু এই ডাব্লুডাব্লুডব্লু সাইটে ইতিমধ্যে বাইজেন্টাইন বিশদ সম্পর্কিত যে ইতিমধ্যে একটি ব্যবস্থার সাথে জড়িত রয়েছে সেখানে প্রচুর উত্তর রয়েছে।

ইউনিক্স বিশ্বে কাজ করার আরও traditionalতিহ্যগত উপায় হ'ল মেশিনে বা ল্যানে কোনও প্রক্সি ডিএনএস সার্ভার চালানো। সুতরাং ফ্রিবিএসডি ম্যানুয়ালটি সাধারণত কনফিগার করা সিস্টেমগুলি সম্পর্কে যা বলে, যেখানে resolv.confইউনিক্স সিস্টেম অ্যাডমিনিস্ট্রেটরের সাথে সাধারণত ডিএনএস ক্লায়েন্ট লাইব্রেরির ডিফল্ট ক্রিয়া মেলে, যা একটি প্রক্সি ডিএনএস সার্ভার যা 127.0.0.1 এ শুনছে। (জন্য FreeBSD 'র ম্যানুয়াল resolv.confdoco যে আসলে এছাড়াও আইএসসি এর BIND- র থেকে উত্পন্ন, এবং যেখানে BIND- র DNS ক্লায়েন্ট গ্রন্থাগার যেমন GNU C লাইব্রেরি হিসাবে অন্যান্য স্থানে মধ্যে অন্তর্ভুক্ত করা হয়েছে কোর্সের এছাড়াও পাওয়া যাবে এর পারেন।)

আরও পড়া


7

আরও ভাল ফ্রিবিএসডি ম্যান পেজ থেকে, রেজোলভ.কনফ :

 The resolver configuration file contains information that is read by the
 resolver routines the first time they are invoked by a process.

 On a normally configured system this file should not be necessary.  The
 only name server to be queried will be on the local machine, the domain
 name is determined from the host name, and the domain search path is
 constructed from the domain name.

1

ফাইলটি /etc/resolv.conf* libc কল দ্বারা পঠিত হয় যা হোস্টের নাম রেজোলিউশন করে। এটি মূলত getaddrinfoএবং হ্রাস করা হয় gethostbyname

যদি এই ফাংশনগুলি কোনও ডিএনএস নাম পাস করে, তবে তারা নিম্নলিখিত ক্রমে এই কাজগুলি করে:

  1. স্থানীয়ভাবে হোস্টের নামটি সমাধান করার চেষ্টা করুন, এটি পড়ে /etc/hosts
  2. যদি এটি ব্যর্থ হয়, তবে তালিকাভুক্ত DNS সার্ভারগুলিকে জিজ্ঞাসা করুন /etc/resolv.conf
  3. যদি এটিও ব্যর্থ হয়, তবে হোস্টের নামটি সমাধান করা যাবে না।

যেহেতু আপনি dnsmasq উল্লেখ করেছেন : এটি একটি ডিএনএস সার্ভার যা স্থানীয়ভাবে চলছে। সুতরাং, অনেকগুলি আধুনিক লিনাক্স ডিস্ট্রোজে, /etc/resolv.confকেবলমাত্র পয়েন্টগুলি 127.0.0.1(এটিই যেখানে স্থানীয় ডিএনএসমাস্ক শোনে)। এরপরে dnsmasq ইন্টারনেট ডিএনএস সার্ভারের অনুসন্ধানগুলি ফরওয়ার্ড করার জন্য কনফিগার করা হয়েছে; dnsmasq ইন্টারনেট ম্যানেজ করার পরে নেটওয়ার্ক ম্যানেজার দ্বারা কনফিগার করা হয়।


সেগুলি সিস্টেম কল নয়, সেগুলি * লিবিসি ফাংশন।
জোশুআরিলি

@ জোশুয়াআরলি নিশ্চিত, আমি এটি সম্পাদনা করেছি।
রেকজিগিতানস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.