IP ঠিকানাগুলিতে হোস্টনামগুলি সমাধান করার জন্য কীভাবে `/ ইত্যাদি / হোস্টগুলি এবং ডিএনএস একসাথে কাজ করে?


10

লিনাক্সে, /etc/hostsএবং ডিএনএস কীভাবে আইপি ঠিকানার হোস্টনামগুলি সমাধান করতে কাজ করে?

  1. যদি কোনও হোস্টনাম সমাধান করা যায় /etc/hosts, তবে ডিএনএস /etc/hosts কি হোস্টনেম সমাধানের পরে প্রয়োগ করবে বা /etc/hostsপুনরাবৃত্তির সাথে সমাধানের জন্য "হোস্টনাম" হিসাবে সমাধান করা আইপি ঠিকানাটি চিকিত্সা করবে ?
  2. আমার ব্রাউজারে (ফায়ারফক্স এবং গুগল ক্রোম), যখন আমি যুক্ত করব /etc/hosts:

    127.0.0.1 google.com www.google.com
    

    ব্রাউজারগুলির অ্যাড্রেস বারে www.google.com টাইপ করা এবং এন্টার দিয়ে আঘাত করা ওয়েবসাইটটিতে সংযুক্ত হবে না। আমি সেই লাইনটি সরিয়ে দেওয়ার পরে /etc/hosts, আমি ওয়েবসাইটে সংযোগ করতে পারি। এর অর্থ কি /etc/hostsহোস্টনামগুলি সমাধান করার জন্য ডিএনএসকে ওভাররাইড করে?

    আমি লাইনটি পুনরায় /etc/hostsযুক্ত করার পরে, ওয়েবপেজটি রিফ্রেশ করার পরেও আমি ওয়েবসাইটটিতে সংযোগ করতে পারি। কেন /etc/hostsআবার আবেদন করা হয় না , যাতে আমি ওয়েবসাইটে সংযোগ করতে পারি না?

ধন্যবাদ।


9
সাবধানতা অবলম্বন করুন যে অনেক ওয়েব ব্রাউজার তাদের নিজস্ব ডিএনএস সার্ভার এবং ডিএনএস ক্যাশে প্রয়োগ করে এবং সিস্টেমে কনফিগার করা হয়েছে এমন কোনও নাম-অনুসন্ধান পদ্ধতির সাথে পরামর্শ করবেন না। অন্য কথায়, কিছু ওয়েব ব্রাউজার সম্পূর্ণ উপেক্ষা করে /etc/hostsএবং স্থানীয়ভাবে সংজ্ঞায়িত নাম সার্ভারগুলি। চারপাশে প্রথমবার সাক্ষ্য দেওয়াটা বেশ বিভ্রান্তিকর। (ক্রোমিয়াম-ভিত্তিক ব্রাউজারগুলি আপনার
ক্রিস্টোফার

ক্রিস্টোফার আমি এখানে একই কথা বলতে এসেছি। সম্পর্কিত ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েজ.কমেশনস
রুই এফ রিবেইরো

@ খ্রিস্টোফার আমি / ইত্যাদি / হোস্টগুলিতে লাইনটি পুনরায় যুক্ত করার পরে, ওয়েবপেজটি রিফ্রেশ করার পরেও আমি ওয়েবসাইটটিতে সংযোগ করতে পারি। কেন / ইত্যাদি / হোস্টগুলি আবার আবেদন করে না, যাতে আমি ওয়েবসাইটে সংযোগ করতে পারি না? এটি কি ফায়ারফক্সের ডিএনএস ক্যাশের কারণে?
টিম

@ রুইএফরিবিড়ো এই ক্রোমিয়াম বিল্ডটি শ্রদ্ধা /etc/hostsএবং সিস্টেম-সংজ্ঞায়িত ডিএনএস সার্ভারগুলি বলে মনে হচ্ছে : ( github.com/Eloston/ungoogled-chromium )। Homebrew সঙ্গে MacOS উপর ইনস্টলেশন: brew cask install eloston-chromium
ক্রিস্টোফার

উত্তর:


21

এটি এনএসএস (নাম পরিষেবা স্যুইচ) কনফিগারেশন অর্থাৎ /etc/nsswitch.confফাইলের hostsনির্দেশ দ্বারা নির্ধারিত হয় । উদাহরণস্বরূপ, আমার সিস্টেমে:

hosts:    files mdns4_minimal [NOTFOUND=return] dns

এখানে, filesবোঝায় /etc/hostsফাইল, এবং dnsDNS সিস্টেমে বোঝায়। এবং আপনি কল্পনা করতে পারেন যে কেউ আসে প্রথম জয়

এছাড়াও, man 5 nsswitch.confএই সম্পর্কে আরও ধারণা পেতে দেখুন।


একটি সরাইয়া হিসাবে, NSS হোস্ট রেজল্যুশন orderings ব্যবহার করতে চান, getentসঙ্গে hostsযেমন ডাটাবেসের উদাহরণ:

getent hosts example.com

ধন্যবাদ। আমার অংশ 2 এ, কারণ এটি কি আমার ওয়েব ব্রাউজারের ডিএনএস সার্ভার কাজ করে না, তবে ওয়েব ব্রাউজারের ডিএনএস ক্যাশে কাজ করে?
টিম

systemd.resolverরেজোলিউশনগুলিকে কীভাবে প্রভাবিত করে ? এনআইএস এবং এলডিএপি কোথায় রেজুলেশন সিস্টেমে ফিট করে? কোন ম্যাকোস সিস্টেম বা উইন্ডোজ সিস্টেম অনুসরণ করে?
আইজাক

@ টিম হ্যাঁ, আপনার ব্রাউজারটি ক্যাশে থেকে ডেটা আনছে।
হিমাইল

7

আপনার কেবলমাত্র শেষ প্রশ্নের উত্তর দেওয়ার জন্য: /etc/hostsতাত্ক্ষণিকভাবে আবার আবেদন করবেন না কারণ firefoxএটি সর্বশেষ হোস্টনামটি ক্যাশে করছে google.com; যদি আপনি এটি সবসময় এটা আবার আনতে চান, আপনি সেট করতে হবে network.dnsCacheExpirationকরতে 0মধ্যে about:config। আরো তথ্য (যদিও একটু সেকেলে) এখানে । দুঃখিত যদি এটি অফটোপিক হয়।


সাইডেনোট হিসাবে, অনেকগুলি প্রোগ্রাম স্ট্যান্ডার্ড রিসলভার ব্যবহার করে না ( getaddrinfo(3), getnameinfo(3)[1]) কারণ এটি সফল হয়

প্রথমত, ইন্টারফেসটি অবিচ্ছিন্ন নয়; যে কোনও মাঝারি জটিল প্রোগ্রামটির জন্য আলাদা আলাদা থ্রেড তৈরি করতে হবে getaddrinfo()এবং তার সাথে যোগাযোগের জন্য তার নিজস্ব প্রোটোকলটি আবিষ্কার করতে হবে (এবং আসুন এমনকি প্রবেশ করাও যাক না getaddrinfo_a(), যা সম্পূর্ণ হওয়ার পরে একটি সংকেত প্রেরণ করছে , তাই এটি আরও খারাপ)।

দ্বিতীয়ত, glibc(লিনাক্সের স্ট্যান্ডার্ড সি লাইব্রেরি) রিসলভার বাস্তবায়নটি ভয়াবহ, আপনি আশা করছেন এটি এটিকে dlopen()আপনার পিছনের দিক দিয়ে অ্যাড্রেস স্পেসে এলোমেলো গতিশীল বস্তুগুলি টানতে দেবে , এবং এটি কোনওভাবেই রাখা বা এটি স্ট্যাটিক্যালি ব্যবহার করা অসম্ভব করে তোলে সংযুক্ত এক্সিকিউটেবল।

যেহেতু অনেক প্রোগ্রাম সরাসরি মান সমাধানকারী ব্যবহার করবেন না, তারা ঠিক তার আচরণ প্রতিলিপি নির্মাণ করতে বিরক্ত করবেন না, এবং কিছু বা সব উপেক্ষা /etc/resolv.conf, /etc/hosts, /etc/nsswitch.confবা /etc/gai.conf

[1] এবং অ-প্রেরণকারী, কেবল আইপিভি 4-এর কথাও উল্লেখ করবেন না gethostbyname(), যা যুগ যুগ ধরে অবহেলিত ছিল।


ধন্যবাদ। "অনর্থক" বলতে কী বোঝ?
টিম

1
এর অর্থ হ'ল আপনি যদি কিছু করছেন তবে আপনার google = GHBN("google.com"); facebook = GHBN("facebook.com")উভয়ই শেষ হতে পারে googleএবং facebookএর ঠিকানাটি থাকতে পারে facebook.com। দুটি কল বিভিন্ন থ্রেডে করা হয়ে গেলে, এটি আরও মজাদার: আপনি এমন কোনও ঠিকানা দিয়ে শেষ করতে পারেন যা অর্ধেক গুগল এবং অর্ধেক ফেসবুক বা সম্পূর্ণ আবর্জনা।
চাচা বিলি

gethostbyname()এখন কি প্রতিস্থাপন করা হয়েছে?
টিম

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

প্রকৃতপক্ষে ফায়ারফক্স এবং ক্রোম তাদের নিজস্ব সমাধানগুলি ব্যবহার করে। অন্তর্দৃষ্টিপূর্ণ নোট জন্য ধন্যবাদ।
রুই এফ রিবেইরো

6

ফাইল /etc/hostsএবং ডিএনএস একসাথে কাজ করে না। তারা নামের (নেটওয়ার্ক নাম) এর স্বাধীন রেজোলিউশন সরবরাহ করে।

আঠালো যে সংযোগগুলি তাদের হয় ভিতরে /etc/nsswitch.confলিনাক্স সিস্টেমের জন্য । ইন /etc/netsvc.conf, AIX সার্ভারের জন্য, জন্য সিস্টেমের মধ্যে উইন্ডোজ এবং সাথে তালিকাভুক্ত করা যায়নি lookupd -configuration: (LookupOrder জন্য অনুসন্ধান করুন, অনুরূপ Cache FF DNS NI DSMacOS এর সিস্টেমের মধ্যে)।

প্রকৃত অর্ডার জটিল হয়ে ওঠে এবং প্রতিটি নাম রেজোলিউশন পরিষেবাটি (এবং অনেক সময় করতে পারে) রেজোলিউশনের অন্যান্য স্তরের ভিতরে দেখতে পারে বলে সাধারণত সংশ্লেষিত হয়। ভালো লেগেছে dnsmasq(সাধারণত একটি হালকা DNS সার্ভার 127.0.0.1:53, অথবা ::1:53(অথবা উভয়)) সাধারণত পড়ে এবং অন্তর্ভুক্ত /etc/hostsফাইল বিষয়বস্তু। বা systemd.resolver( যেমন একটি বেসিক রেজোলভার যা কেবল বিন্দুযুক্ত নামগুলি সমাধান করতে পারে mycomputer) mycomputer.here.dev.কিছু শর্তে ডটেড নামের ( ) এর জন্য সরাসরি ডিএনএস রেজোলিউশন কল করে ।

সাধারণভাবে, পরিষেবাগুলি ক্রমে ডাকা হয় এবং প্রথমটি যা ব্যর্থ হয় না এবং সঠিক ঠিকানা হিসাবে গৃহীত হয়। সাধারণ বেসিক অর্ডারটি হ'ল: /etc/hosts(ফাইল), এমডিএনএস (অ-বিন্দুর নাম), ডিএনএস, এনআইএস, এনআইএস +, এলডিএপি। কিছু লিনাক্স সিস্টেমে পরিষেবাতে কম্পিউটারের জন্য সর্বশেষ রিসর্ট রেজোলিউশন রয়েছেhostnamemyhostname

উদাহরণস্বরূপ, এই সিস্টেমে (থেকে cat /etc/nsswitch):

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

নোট করুন যে খুব পুরানো (গ্লিবসি ২.৪ এবং তার আগের) orderএন্ট্রি সেট করা আছে/etc/host.conf :

order hosts,bind,nis

কেবলমাত্র ফাইল (ফাইল /etc/hosts) নাম পরিষেবাতে প্রয়োগ করুন ।

এনআইএস এবং এলডিএপি সম্পর্কিত এই (লিনাক্স) ক্লায়েন্ট কম্পিউটারের প্রভাবগুলি (সাধারণত) ব্যবহৃত ডিএনএস সার্ভার (বাঁধাই, আনবাউন্ড ইত্যাদি) দ্বারা নিয়ন্ত্রিত হয়।

তাই:

  1. কোনও হোস্টনাম যদি / ইত্যাদি / হোস্টে সমাধান করা যায়, তবে ডিএনএস কি / ইত্যাদি / হোস্টের পরে হোস্টনামটি সমাধান করার জন্য / / ইত্যাদি / হোস্ট দ্বারা সমাধান হওয়া আইপি ঠিকানাটিকে "হোস্টনাম" হিসাবে পুনরাবৃত্তির সমাধানের জন্য প্রয়োগ করে?

কোনটিই নয়।

যদি কোনও হোস্টনাম সমাধান করা /etc/hostsযায় DNSতবে প্রয়োগ হয় না (যদি ফাইলগুলি ডিএনএসের আগে থাকে)।

বা সমাধান করা আইপি ঠিকানাটিকে "হোস্টনাম" হিসাবে বিবেচনা করা হয় না।

এটি সহজভাবে: সমাধান করা ঠিকানা।

ব্রাউজার

কোনও ব্রাউজার কোনও নাম সমাধান করার জন্য যে কোনও পদ্ধতি ব্যবহার করতে পারে (এটির সমাধান হওয়া নামগুলির ক্যাশেটি যাচাই করার পরে)। কেবলমাত্র যদি এটি সিস্টেম সরবরাহিত পদ্ধতি ব্যবহার করে তবে উপরের অর্ডারটি প্রযোজ্য। ব্রাউজারটি যে কোনও প্রোগ্রাম হিসাবে সরাসরি কোনও ডিএনএস সার্ভারের সাথে যোগাযোগ করতে বেছে নিতে পারে।

যদি সিস্টেম অর্ডার এর /etc/hostsআগে থাকে DNSতবে এর অর্থ হ'ল সেই ফাইলটিতে একটি এন্ট্রি DNSরেজোলিউশন পরিষেবাটিকে অগ্রাধিকার দেবে ।

তাই:

  1. ... এর অর্থ কী যে / ইত্যাদি / হোস্টগুলি হোস্টনামগুলি সমাধান করার জন্য ডিএনএসকে ওভাররাইড করে?

হ্যাঁ (ব্রাউজার যদি সিস্টেম সরবরাহিত রেজোলিউশন ব্যবহার করে)।

কেন /etc/hostsআবার আবেদন করা হয় না , যাতে আমি ওয়েবসাইটে সংযোগ করতে পারি না?

কেবলমাত্র ব্রাউজারের অভ্যন্তরীণ ক্যাশেটি সুনির্দিষ্ট না হওয়া অবধি (বা এটি বার হয়ে যায়) সেই নামটি আবার ব্রাউজারের বাইরে অনুসন্ধান করা হয়।

যদি ব্রাউজারটির কোনও ক্যাশে সমাধান করা নাম থাকে তবে ব্রাউজারটি আবার এটি ব্যবহার করে।

ক্যাশে সাফ করতে এটি ব্যবহার করুন

অথবা কেবল বন্ধ করুন (কিছুক্ষণ অপেক্ষা করুন) এবং ব্রাউজারটি পুনরায় শুরু করুন।

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