/etc/hosts
ফাইলের পরিবর্তনগুলি তত্ক্ষণাত্ কার্যকর হবে বলে মনে হচ্ছে। আমি বাস্তবায়ন সম্পর্কে আগ্রহী। এই বৈশিষ্ট্যটি অর্জন করতে কোন যাদু ব্যবহার করা হয়?
/etc/hosts
ফাইলের পরিবর্তনগুলি তত্ক্ষণাত্ কার্যকর হবে বলে মনে হচ্ছে। আমি বাস্তবায়ন সম্পর্কে আগ্রহী। এই বৈশিষ্ট্যটি অর্জন করতে কোন যাদু ব্যবহার করা হয়?
উত্তর:
যাদুটি /etc/hosts
ফাইলটি খুলছে এবং এটি পড়ছে:
strace -e trace=file wget -O /dev/null http://www.google.com http://www.facebook.com http://unix.stackexchange.com 2>&1 | grep hosts
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 4
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 5
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 4
getaddrinfo(3)
ফাংশন, যা শুধুমাত্র মান নাম সমাধানে ইন্টারফেস, শুধু খুলবে এবং পড়তে /etc/hosts
প্রতিবার এটি একটি হোস্ট নাম সমাধান করতে বলা হয়।
আরও পরিশীলিত অ্যাপ্লিকেশন যা স্ট্যান্ডার্ড ব্যবহার করছে না getaddrinfo(3)
, তবে এখনও কোনওভাবে /etc/hosts
মিশ্রণে যুক্ত হচ্ছে (যেমন dnsmasq
ডিএনএস সার্ভার) ফাইলগুলির inotify(7)
পরিবর্তনগুলি নিরীক্ষণ /etc/hosts
করতে এবং প্রয়োজনে কেবল এটি পুনরায় পড়তে পারে।
ব্রাউজারগুলি এবং এই জাতীয় অ্যাপ্লিকেশনগুলি এটি করবে না। /etc/hosts
হোস্টের নামটি সমাধান করার জন্য প্রতিটি সময় তারা খোলেন এবং পড়বেন , এমনকি যদি তারা সরাসরি লিবিসি-র সমাধানকারী ব্যবহার না করে তবে এর কাজগুলি অন্য উপায়ে প্রতিলিপি করছেন।
অন্যান্য বিষয়গুলির মধ্যে নাম রেজোলিউশন পরিচালনা করে /etc/nsswitch.conf
। এখানে একটি অংশ:
passwd: files sss
shadow: files sss
group: files sss
hosts: files dns myhostname
(...)
hosts
লাইন নোট করুন । এটি বলে: "হোস্টনামটি সমাধান /etc/hosts
করার সময়, হোস্টনামটি অনুসন্ধান করার জন্য প্রথমে ফাইলটি পড়ুন , যদি পাওয়া না যায় তবে ডিএনএস কোয়েরি চালান, যদি পাওয়া না যায় তবে স্থানীয়ভাবে কনফিগার করা সিস্টেম হোস্ট-নেম চেষ্টা করুন"।
এটি এত দ্রুত কেন এখানে। মনে রাখবেন যে এটি মেশিনে নেটওয়ার্ক পরিষেবাদির উপর নির্ভর করে না, তাই পুনরায় চালু করার বা পুনরায় লোড করার কোনও পরিষেবা নেই।
/etc/hosts
। এটি কেন ক্যাশেড সংস্করণ ব্যবহার করছে না?