হোস্ট কমান্ড কেন / ইত্যাদি / হোস্টগুলিতে এন্ট্রি সমাধান করে না?


25

আমার /etc/hostsএকটি উবুন্টু 12.04 মেশিনে নিম্নলিখিত ফাইল রয়েছে

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

যদিও হোস্ট কমান্ড নামটি puppetmasterসঠিকভাবে সমাধান করে না , যখন টেলনেট কমান্ডটি করে

root@ip-10-248-34-162:/home/ubuntu# host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)

root@ip-10-248-34-162:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.

হোস্ট কমান্ড কেন / ইত্যাদি / হোস্টগুলিতে এন্ট্রি সমাধান করে না?

উত্তর:


52

hostপ্রোগ্রাম ব্যবহার libresolvসরাসরি একটি DNS অনুসন্ধান সঞ্চালন করতে, অর্থাত্, ব্যবহার করে না gethostbyname

বেশিরভাগ প্রোগ্রাম, যখন অন্য কোনও হোস্টের সাথে সংযোগ স্থাপনের চেষ্টা করা হয়, তখন gethostbynameসিস্টেম কল বা অনুরূপ কোনও ফাংশন শুরু করে। এই ফাংশনটির কনফিগারেশন মান্য করে /etc/nsswitch.conf। এই ফাইলটির একটি লাইন রয়েছে যা উবুন্টু 12.04 এ নিম্নলিখিতগুলির চেয়ে ডিফল্ট রয়েছে:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

যার অর্থ এটি প্রথমে ব্যবহার করবে /etc/hosts, তারপরে ডিএনএস কোয়েরিতে ফিরে আসবে।

আপনি যদি কোনও হোস্টকে এইভাবে অনুসন্ধান করতে চান তবে আপনি এটি দিয়ে এটি করতে পারেন getent hosts। উদাহরণ স্বরূপ:

$ getent hosts serverfault.com
198.252.206.16  serverfault.com

আশা করি এটা কাজে লাগবে.


2
ধন্যবাদ কভিসল, তবে আমি এখনও কিছুটা বিভ্রান্ত। লাইনটি এর /etc/nsswitch.confমতো দেখায় hosts: files dnsএবং আমি এটিতে পরিবর্তন করে hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4তবে উভয় ক্ষেত্রেই /etc/hostsজিজ্ঞাসা করা হয় না, পরিবর্তে এটি প্রদর্শিত হয় সরাসরি ডিএনএস অনুসন্ধান করা হয়। আমি কিভাবে নিশ্চিত হোন যে পারেন /etc/hostsপ্রথম জানতে চাওয়া হবে যখন মত একটি কমান্ড ব্যবহার করে digবা host?
ব্যবহারকারী 784637

4
আপনি পারবেন না। ডিগ / হোস্ট সরাসরি ডিএনএস ব্যবহার করে। প্রথমে হোস্ট-ফাইলটি যাচাই করে এমন নেমলুপ করা দরকার হলে আপনাকে ব্যবহার করতে হবে getent hostsবা ব্যবহার করতে পারে এমন কিছুgethostbyname()
Kvisle

ওহ আমি দেখছি, আমার খারাপ, আমি এটি এখন পেয়েছি =)
ব্যবহারকারীর 484637

1
আমি বিশ্বাস করি যে আজকাল এক ব্যবহার করা উচিত getent ahostsপরিবর্তে getent hostsকারণ getent hostsব্যবহারসমূহ gethostbyaddr()বা gethostbyname*()যা অপ্রচলিত হয়। যদি আমি সঠিকভাবে বুঝতে পেরেছি তবে getent hostsইউনিক্স সি কত পুরানো প্রোগ্রামগুলি কাজ করতে ব্যবহৃত তা getent ahostsঅনুকরণ করে এবং মোডার্ম প্রোগ্রামগুলি যেভাবে কাজ করা উচিত তা অনুকরণ করে।
মিক্কো রেন্টালাইনেন

তবে হোস্ট কমান্ড / / ইত্যাদি / হোস্ট ব্যবহার করার কোনও উপায় আছে কি?
কর্নেল

10

কারণ hostইউটিলিটি একচেটিয়াভাবে একটি ডিএনএস লুকোচুরি ইউটিলিটি।

বেশিরভাগ অ্যাপ্লিকেশন লাইব্রেরি কল getaddrinfoবা ব্যবহার করে gethostbyname। এই লাইব্রেরিগুলি /etc/nsswitch.confকীভাবে অনুসন্ধানের অগ্রাধিকার এবং কীভাবে বিভিন্ন লুক্কায়স সম্পাদন করতে হবে তার নীতি নির্ধারণের জন্য ডাকা একটি ফাইলকে জিজ্ঞাসাবাদ করে ।

সাধারণত /etc/nsswitch.confলাইন থাকে

hosts:        files dns

যা কোনও প্রোগ্রামকে প্রথমে জিজ্ঞাসাবাদ করতে /etc/hostsএবং তারপরে ব্যর্থ হলে ডিএনএসকে জিজ্ঞাসাবাদ করতে বলে ।

যেহেতু হোস্টগুলি একচেটিয়াভাবে ডিএনএস লক্কুলগুলি করে এটি অনুসন্ধান /etc/hostsকরার জন্য উঁকি দেয় না ।


3

আপনি এটি দেখতে পাবেন digএবং nslookupএকইভাবে আচরণ করবেন host

এর কারণ হ'ল এই সমস্ত কমান্ডের উদ্দেশ্য হ'ল ডিএনএস লুকআপ করা, ফাইলগুলিতে সন্ধান করা নয়।

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



-1

/etc/nsswitch.conf ফাইলটি পরীক্ষা করে দেখুন এবং "হোস্ট" শব্দটি দিয়ে শুরু করা লাইনটি সন্ধান করবেন? আপনি কি এই লাইনে "ফাইল" শব্দটি দেখতে পাচ্ছেন? যদি হ্যাঁ, এটি "ডিএনএস" শব্দের আগে বা পরে?

একটি সাধারণ সিস্টেমে এই লাইনটি এমন কিছু হওয়া উচিত

hosts      files dns

আপনার উপস্থিত না থাকলে বা ভিন্ন ক্রমে, এটি আপনার সমস্যা হতে পারে।


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