/ ইত্যাদি / হোস্ট আকারের সীমা কত?


44

আমি কীভাবে এর আকার সীমা নির্ধারণ বা সেট করতে পারি /etc/hosts? এটি কত লাইন থাকতে পারে?


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

5
আমি অবাক হয়েছি আপনি জিজ্ঞাসা করছেন। আপনি কনফিগারেশন ফাইলগুলির উপর কিছু সুনির্দিষ্ট এবং শক্ত অর্থবহ আকারের সীমা কেন আশা করবেন?
বেসিল স্টারিঙ্কেভিচ

3
@ বাসাইলস্টারিঙ্কেভিচ আমি জিজ্ঞাসা করেছি কারণ আমার রাউটারে একটি 2 মেগাবাইট হোস্ট ফাইল ফাইল কাজ করছে না, তবে সমস্যাটি হ'ল আমি হোস্ট ফাইলটি পুনরায় পড়ার জন্য ডিএনএসমাস্কের দীর্ঘশ্বাস ফেলিনি।
জেরেমিয়া

2
@ জেরেমিয়া আমার হোস্ট ফাইলটি 500 এম, 15,000+ এন্ট্রি, কোনও সমস্যা নেই। আপনার সমস্যার মূল কারণ নির্ধারণ করা এবং এটি সমাধান করার জন্য সর্বদা সেরা
বিএসডি

3
আপনি কি আইপি ঠিকানাগুলি ব্লক করতে আপনার হোস্ট ফাইলটি ব্যবহার করছেন? যদি তাই হয় আপনি আইপসেট সহ iptables ব্যবহার করা উচিত। একা আইপট্যাবেলগুলি ব্যবহার করা একটি বিরাট পারফরম্যান্স হিট করবে, তবে আইপসেটের সাথে প্রায় 500,000 আইপসের একটি তালিকা নগণ্য প্রভাব ফেলবে।
সাইবারনার্ড

উত্তর:


57

সমস্যাযুক্ত প্রভাবগুলির মধ্যে ধীর হোস্টনেম রেজোলিউশন অন্তর্ভুক্ত রয়েছে (যদি না ওএস কোনওভাবে রৈখিক তালিকাটিকে দ্রুত-অনুসন্ধানের কাঠামোর মধ্যে রূপান্তর করে?) এবং tabকোনও অর্থবোধক ফাইলের আকার পৌঁছানোর আগে শেল সমাপ্তির সাথে অবাক করা কথোপকথনের সম্ভাবনা ।

উদাহরণ স্বরূপ! যদি কেউ 500,000 হোস্ট এন্ট্রি রাখে/etc/hosts

# perl -E 'for (1..500000) { say "127.0.0.10 $_.science" }' >> /etc/hosts

বিজ্ঞানের জন্য, tabজেডএসএইচ- এ ডিফল্ট হোস্টনামের সমাপ্তিটি আমার সিস্টেমে একটি সমাপ্তির প্রম্পট ফিরে আসতে প্রায় 25 ডলার সময় নেয় (মঞ্জুরি দেওয়া হয়েছে, এটি ল্যাপটপে ২০০৪ সাল থেকে 5400 আরপিএম ডিস্ক সহ, তবে এখনও)।


21

আমি মনে করি না যে এটির লাইনের সংখ্যার ক্ষেত্রে আকারের সীমা রয়েছে।

ডিএনএসের আগে (যা 1985 সালে ব্যবহারে আনা হয়েছিল), এটি এই ফাইলটি হোস্ট নেম লুকআপ করার একমাত্র মাধ্যম হিসাবে কাজ করেছিল, সুতরাং আমি অনুমান করি যে এর অর্থ এই ফাইলটির হাজারে বা কমপক্ষে শত শত এন্ট্রি থাকতে হবে সবচেয়ে ভাল সংযুক্ত প্রাক 1988 ইন্টারনেট নোডগুলিকে সমর্থন করতে সক্ষম হোন।

1985 সালের একটি উদাহরণ এখানে রয়েছে (ফর্ম্যাটটি কিছুটা পরিবর্তিত হয়েছে): http://jim.rees.org/apollo-archive/hosts.txt এই ফাইলে 1680 টি লাইন রয়েছে যার মধ্যে 1325 হোস্ট লাইন। অবশিষ্ট 355 লাইনগুলি ফাঁকা, মন্তব্য, নেটওয়ার্ক বা গেটওয়ে 1

একমাত্র আসল সীমা যেটি আমি পেয়েছি তা হ'ল কিছু সিস্টেমে পৃথক লাইনগুলিBUFSIZ অক্ষরের চেয়ে কম সীমাবদ্ধ থাকে (আমার ওপেনবিএসডি মেশিনে 1024)।

আপনার হাতে কয়েক মুঠো বেশি এন্ট্রি থাকলে /etc/hostsআপনার পরিবর্তে লোকাল নেম সার্ভার স্থাপনের বিষয়টি বিবেচনা করা উচিত তবে এটি আমার ব্যক্তিগত মতামত।


1 এটি খনন করার জন্য জেফ শ্যাচলারকে ধন্যবাদ।


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

13

আমি কীভাবে / ইত্যাদি / হোস্টগুলির আকার সীমা নির্ধারণ করতে পারি?

এটি একটি নিয়মিত ফাইল, সুতরাং সীমাটি অন্তর্নিহিত ফাইল সিস্টেমের সীমাগুলির সাথে সামঞ্জস্য করবে (যা নিজেই এর পিছনে ডিস্কের সংখ্যা দ্বারা আবৃত হবে), একই (সম্ভবত মূল ( /)) ফাইল সিস্টেমের অন্য কোনও ফাইল দ্বারা ব্যবহৃত স্থান বিয়োগ করবে :

  • ext2 / 3: 2 টিআইবি
  • ext4: 16 টিবি (ডিফল্ট 4KiB ব্লক আকারের সাথে)
  • xfs: 500 টিআইবি

আমি কীভাবে / ইত্যাদি / হোস্টগুলির আকার সীমা নির্ধারণ করতে পারি?

যেহেতু এটি একটি ম্যানুয়ালি সম্পাদিত ফাইল, কেবলমাত্র ম্যানুয়ালি:

sed -i '100,$d' /etc/hosts

(100 এবং এর বাইরে লাইনগুলি সরাতে)।


3
নীতিগতভাবে সত্য, তবে ফাইল সিস্টেমের সীমাগুলি (যেমন টেরাবাইট) কার্যত মূলত অপ্রাসঙ্গিক।
বেসিল স্টারিঙ্কেভিচ

11

স্থির বাফার বরাদ্দ করার সময় আকারের সীমাটি কেবলমাত্র প্রযোজ্য। gethostbyname(3), যা এন্ট্রিগুলিকে পার্স করে /etc/hosts, স্থির বাফার বরাদ্দ করে না - এবং কখনও হয় না। বিএসডি 4.3 অ্যালগরিদমের 1988 এর মূল রিলিজটি একটি ওপেন-ফাইল দেখায়, লাইন পার্স করার সময়, ক্লোজ-ফাইলের ধরণ:

sethostent(0);
while (p = gethostent()) {
    if (strcmp(p->h_name, name) == 0)
        break;
    for (cp = p->h_aliases; *cp != 0; cp++)
        if (strcmp(*cp, name) == 0)
            goto found;
}
found:
endhostent();

আধুনিক প্রয়োগগুলি সমস্ত প্রয়োজনীয়তে এই heritageতিহ্য ধরে রাখে।

যাইহোক, অভ্যন্তরীণভাবে, *hostentফাংশনগুলির পরিবার ফাইলটিতে বর্তমান লাইনে একটি ফাইল পয়েন্টার সঞ্চয় করে। sethostentফাইলটি খোলে এবং ফাইল পয়েন্টার অবস্থান নির্ধারণ করে। gethostentডেটা পায় এবং পয়েন্টারটি অগ্রসর করে। endhostentফাইল পয়েন্টারটি বন্ধ করে দেয়। জিএনইউ সি লাইব্রেরি এই ফাংশনগুলির বিষয়ে একটি বিশদ রেফারেন্স সরবরাহ করে।

আপনি যেমন বাস্তবায়ন থেকে অনুমান করতে পারেন, ফাইলের সমাধানের আগে ফাইলগুলি দ্রুত নিষ্পত্তি হয়। যদি আপনার হোস্ট ফাইলটি বিশাল হয়, এটি কার্যকর হয়।

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


2
গ্লিবসি এবং লিনাক্স ব্যবহার করে দুর্ভাগ্যক্রমে এটি এত সোজা নয়। যদি আপনি গেথোস্টবাইনেম কল করেন এবং সেই অনুযায়ী সিস্টেমটি সেটআপ করা হয়ে থাকে (অনেক সিস্টেমে ডিফল্ট) তবে এটি / ইত্যাদি / হোস্টের পরিবর্তে এনএসসিডি কল করবে। এনএসসিডি কেবলমাত্র ফাইলটিতে আঘাত করে বা সম্পূর্ণরূপে এটি ক্যাশে দেওয়ার চেষ্টা করবে কিনা আমার কোনও ধারণা নেই। পরবর্তী ক্ষেত্রে, আপনার ফাইল আকারের জন্য একটি র‌্যাম সীমাবদ্ধতা থাকবে (ধরে নেওয়া উচিত যে
এনএসসিডি

1
4.3BSD সংস্করণটি এখানে । এটি / ইত্যাদি / হোস্টগুলির একটি ডিবিএম-হ্যাশ সংস্করণ সমর্থন করে। আইআইআরসি, ডিবিএম কিছু আকার সীমাবদ্ধ করে যা একটি হ্যাশড ডিবি তৈরির প্রচেষ্টা ব্যর্থ হতে পারে।
প্লটনিক নিকট

2

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

আমি সন্দেহ করি যে আমাদের এখানে যা আছে তা উচ্চ স্তরে যোগাযোগের ব্যর্থতা। আপনি কোন বিশাল সমস্যাটি সমাধান করার চেষ্টা করছেন /etc/hosts? আমি প্রায় নিশ্চিত যে এর চেয়ে আরও ভাল সমাধান এর আছে।


8
কিছু লোক hostsবিজ্ঞাপন / ম্যালওয়্যার / ট্র্যাকিং / ইত্যাদি ব্ল্যাকলিস্ট করতে একটি ফাইল ব্যবহার করে । ইন্টারনেটে কিউরেটেড তালিকাগুলি রয়েছে, আমি যেটি ব্যবহার করি তা হ'ল 41k লাইন এবং আকারের 1.1MB।
বার্ট

পারফরম্যান্সের জন্য সম্ভবত এটির জন্য ব্যবহার করা ভাল dnsmasq- উদাহরণস্বরূপ dnsgate দেখুন (যা আমি চেষ্টা করি নি)।
রিনিয়ারপোস্ট

আমার 57k লাইন সহ 1.7MB রয়েছে। আপনি আপনার বিশাল /etc/hostsফাইলটি হোস্টফাইএল.অর্গ
ফ্লাই

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