INETD(8)

الاسم
inetd ، inetd.conf - الخادم الفائق للإنترنت

موجز
inetd [-d] [-E] [-i] [-l] [-q length] [-R rate] [configuration_file]

الوصف
يستمع inetd للاتصالات على مآخذ إنترنت معينة. عند العثور على اتصال على أحد مآخذه، يقرر الخدمة التي يتوافق معها المأخذ، ويستدعي برنامجًا لخدمة الطلب. بعد انتهاء البرنامج، يستمر في الاستماع على المأخذ (باستثناء بعض الحالات التي سيتم وصفها أدناه). بشكل أساسي، يسمح inetd بتشغيل خفي واحد لاستدعاء عدة خفايا أخرى، مما يقلل الحمل على النظام.

الخيارات هي كما يلي:

-d  يشغل التصحيح.

-E  يمنع inetd من تنقية البيئة. بدون هذا الخيار، يتم إزالة مجموعة من متغيرات البيئة التي قد تكون ضارة، بما في ذلك PATH ، ولا يتم توريثها للخدمات.

-i  يجعل البرنامج لا يتحول إلى خفي.

-l  يشغل تسجيل اتصالات libwrap والتحكم في الوصول. لا يمكن تغليف الخدمات الداخلية. عند التمكين، لا يتم تنفيذ /usr/sbin/tcpd بصمت حتى إذا كان موجودًا في /etc/inetd.conf ، وبدلاً من ذلك يتم استدعاء libwrap مباشرة بواسطة inetd.

-q length
    يحدد طول قائمة انتظار اتصالات listen(2) ؛ المبدئي هو 128.

-R rate
    يحدد الحد الأقصى لعدد مرات استدعاء الخدمة في دقيقة واحدة؛ المبدئي هو 256. إذا تجاوزت الخدمة هذا الحد، يسجل inetd المشكلة ويتوقف عن خدمة الطلبات للخدمة المحددة لمدة عشر دقائق. انظر أيضًا حقول التهيئة wait/nowait أدناه.

عند التنفيذ، يقرأ inetd معلومات التهيئة من ملف تهيئة يكون مبدئيًا /etc/inetd.conf. يجب أن يكون هناك إدخال لكل حقل من ملف التهيئة، مع فصل الإدخالات لكل حقل بعلامة تبويب أو مسافة. يُشار إلى التعليقات بواسطة “#” في بداية السطر. حقول ملف التهيئة هي كما يلي:

    service name
    socket type
    protocol[,sndbuf=size][,rcvbuf=size]
    wait/nowait[.max]
    user[.group] or user[:group]
    server program
    server program arguments

لتحديد خدمة قائمة على Sun-RPC، سيحتوي الإدخال على هذه الحقول.

    service name/version
    socket type
    rpc/protocol[,sndbuf=size][,rcvbuf=size]
    wait/nowait[.max]
    user[.group] or user[:group]
    server program
    server program arguments

بالنسبة لخدمات الإنترنت، قد يحتوي الحقل الأول من السطر أيضًا على محدد عنوان مضيف مسبوق به، مفصولاً عن اسم الخدمة بنقطتين. إذا تم ذلك، تشير السلسلة قبل النقطتين في الحقل الأول إلى العنوان المحلي الذي يجب أن يستخدمه inetd عند الاستماع لتلك الخدمة. يمكن تحديد عناوين محلية متعددة على نفس السطر، مفصولة بفواصل. يمكن استخدام عناوين IP رقمية بتدوين النقاط الرباعية بالإضافة إلى أسماء المضيف الرمزية. يتم البحث عن أسماء المضيف الرمزية باستخدام getaddrinfo(). إذا كان لاسم المضيف تعيينات عناوين متعددة، ينشئ inetd مأخذًا للاستماع على كل عنوان.

يشير الحرف الواحد “*” إلى INADDR_ANY ، بمعنى “جميع العناوين المحلية”. لتجنب تكرار عنوان يحدث بشكل متكرر، يتسبب سطر يحتوي على محدد عنوان مضيف ونقطتين، ولكن بدون حقول أخرى، في تذكر محدد عنوان المضيف واستخدامه لجميع الأسطر اللاحقة التي لا تحتوي على محدد مضيف صريح (حتى سطر آخر من هذا القبيل أو نهاية الملف). سطر
    *:
يتم توفيره ضمنيًا في أعلى الملف؛ وبالتالي، سيتم تفسير ملفات التهيئة التقليدية (التي لا تحتوي على محددات عناوين مضيف) بالطريقة التقليدية، مع الاستماع لجميع الخدمات على جميع العناوين المحلية. إذا كان البروتوكول هو “unix” ، يتم تجاهل هذه القيمة.

إدخال اسم الخدمة هو اسم خدمة صالحة في الملف /etc/services أو رقم منفذ. بالنسبة للخدمات “الداخلية” (الموضحة أدناه)، يجب أن يكون اسم الخدمة هو الاسم الرسمي للخدمة (أي الإدخال الأول في /etc/services). عند استخدامه لتحديد خدمة قائمة على Sun-RPC، يكون هذا الحقل اسم خدمة RPC صالحة في الملف /etc/rpc. الجزء الموجود على يمين “/” هو رقم إصدار RPC. يمكن أن يكون هذا ببساطة وسيطة رقمية واحدة أو نطاقًا من الإصدارات. يُحدد النطاق من الإصدار المنخفض إلى الإصدار المرتفع - “rusers/1-3”. بالنسبة لمقابس UNIX-domain ، يُحدد هذا الحقل اسم مسار المقبس.

نوع المقبس يجب أن يكون أحد “stream” أو “dgram” ، اعتمادًا على ما إذا كان المقبس مقبس دفق أو مخطط بيانات.

البروتوكول يجب أن يكون بروتوكولًا صالحًا كما هو موضح في /etc/protocols أو “unix”. قد تكون الأمثلة “tcp” أو “udp”. تُحدد الخدمات القائمة على RPC بنوع الخدمة “rpc/tcp” أو “rpc/udp”. سيتم التعرف على “tcp” و “udp” كـ “TCP أو UDP عبر كل من IPv4 و IPv6.” إذا كنت بحاجة إلى تحديد IPv4 أو IPv6 صراحة، استخدم شيئًا مثل “tcp4” أو “udp6”. يُستخدم بروتوكول من “unix” لتحديد مقبس في UNIX-domain.

بالإضافة إلى البروتوكول، قد يُحدد ملف التهيئة أحجام مخازن المقبس للإرسال والاستقبال لمقبس الاستماع. هذا مفيد بشكل خاص لـ TCP حيث يتم الإعلان عن عامل مقياس النافذة، الذي يعتمد على حجم مخزن مقبس الاستقبال، عند حدوث مصافحة الاتصال، وبالتالي يجب تعيين حجم مخزن مقبس الخادم على مقبس الاستماع. من خلال زيادة أحجام مخازن المقبس، قد يتحقق أداء أفضل لـ TCP في بعض الحالات. تُحدد أحجام مخازن المقبس بإلحاق قيمها بمواصفات البروتوكول كما يلي:

    tcp,rcvbuf=16384
    tcp,sndbuf=64k
    tcp,rcvbuf=64k,sndbuf=1m

قد يُحدد قيمة حرفية، أو تُعدل باستخدام ‘k’ للإشارة إلى الكيلوبايت أو ‘m’ للإشارة إلى الميغابايت.

إدخال wait/nowait يُستخدم لإخبار inetd ما إذا كان يجب عليه الانتظار حتى يعود برنامج الخادم، أو متابعة معالجة الاتصالات على المقبس. إذا اتصل خادم مخطط بيانات بنظيره، محررًا المقبس بحيث يمكن لـ inetd استقبال رسائل أخرى على المقبس، يُقال إنه خادم “متعدد الخيوط” ، ويجب استخدام إدخال “nowait”. بالنسبة لخوادم مخطط البيانات التي تعالج جميع مخططات البيانات الواردة على مقبس وتنتهي مهلة في النهاية، يُقال إن الخادم “أحادي الخيوط” ويجب استخدام إدخال “wait”. comsat(8) (biff(1)) و talkd(8) كلاهما أمثلة على النوع الأخير من خادم مخطط البيانات. اللاحقة الاختيارية “max” (المفصولة عن “wait” أو “nowait” بنقطة) تُحدد الحد الأقصى لعدد مرات استدعاء الخدمة في دقيقة واحدة؛ المبدئي هو 256. إذا تجاوزت خدمة هذا الحد، سيسجل inetd المشكلة ويتوقف عن خدمة الطلبات للخدمة المحددة لمدة عشر دقائق. انظر أيضًا خيار -R أعلاه.

عادةً ما تُوسم خوادم الدفق كـ “nowait” ولكن إذا كان من المفترض أن تتعامل عملية خادم واحدة مع اتصالات متعددة، فقد تُوسم كـ “wait”. سيتم بعد ذلك تمرير المقبس الرئيسي كـ fd 0 إلى الخادم، والذي سيحتاج بعد ذلك إلى قبول الاتصال الوارد. يجب أن ينتهي الخادم مهلة ويخرج في النهاية عندما لا تكون هناك اتصالات نشطة. سيستمر inetd في الاستماع على المقبس الرئيسي للاتصالات، لذلك لا يجب على الخادم إغلاقه عند الخروج.

إدخال المستخدم يجب أن يحتوي على اسم المستخدم الذي يجب أن يعمل الخادم باسمه. هذا يسمح بإعطاء الخوادم صلاحيات أقل من الجذر. يمكن تحديد اسم مجموعة اختياري بإلحاق نقطة باسم المستخدم متبوعة باسم المجموعة. هذا يسمح للخوادم بالعمل بمعرف مجموعة (رئيسي) مختلف عن المحدد في ملف كلمات المرور. إذا تم تحديد مجموعة ولم يكن المستخدم هو الجذر، فسيتم تعيين المجموعات التكميلية المرتبطة بذلك المستخدم.

إدخال برنامج الخادم يجب أن يحتوي على اسم المسار للبرنامج الذي سيتم تنفيذه بواسطة inetd عند العثور على طلب على مقبسه. إذا كان inetd يوفر هذه الخدمة داخليًا، يجب أن يكون هذا الإدخال “internal”.

وسائط برنامج الخادم يجب أن تكون كما هي الوسائط عادةً، بدءًا من argv[0]، وهو اسم البرنامج. إذا كانت الخدمة مقدمة داخليًا، يجب أن تحل الكلمة “internal” محل هذا الإدخال.

يوفر inetd العديد من الخدمات “التافهة” داخليًا باستخدام إجراءات داخل نفسه. هذه الخدمات هي “echo” ، “discard” ، “chargen” (مولد الأحرف)، “daytime” (الوقت المقروء بشريًا)، و “time” (الوقت المقروء آليًا، في شكل عدد الثواني منذ منتصف ليل 1 يناير 1900). جميع هذه الخدمات قائمة على TCP. للحصول على تفاصيل هذه الخدمات، استشر RFC المناسب من مركز معلومات الشبكة.

يعيد inetd قراءة ملف التهيئة الخاص به عند استقبال إشارة تعليق، SIGHUP. قد تُضاف الخدمات أو تُحذف أو تُعدل عند إعادة قراءة ملف التهيئة.

  libwrap
دعم أغلفة TCP مضمن مع inetd لتوفير وظيفة تحكم في الوصول مدمجة تشبه tcpd. لا حاجة لبرنامج tcpd خارجي. لا تحتاج إلى تغيير إدخال برنامج الخادم في /etc/inetd.conf لتمكين هذه الإمكانية. يستخدم inetd /etc/hosts.allow و /etc/hosts.deny لتهيئات مرفق التحكم في الوصول، كما هو موضح في hosts_access(5).

  سلوك IPv6 TCP/UDP
المبدئي هو تشغيل خادمين: واحد لحركة مرور IPv4 وواحد لحركة مرور IPv6. إذا كانت لديك متطلبات مختلفة، فيمكنك تحديد سطر واحد أو سطرين منفصلين في inetd.conf ، لـ “tcp4” و “tcp6”.

تحت مجموعات مختلفة من إعدادات البرنامج الخفي IPv4/v6، سيتصرف inetd كما يلي:
•   إذا كان لديك خادم واحد فقط على “tcp4” ، سيتم توجيه حركة مرور IPv4 إلى الخادم. لن يتم قبول حركة مرور IPv6.
•   إذا كان لديك خادمان على “tcp4” و “tcp6” ، فسيتم توجيه حركة مرور IPv4 إلى الخادم الموجود على “tcp4” ، بينما ستتجه حركة مرور IPv6 إلى الخادم الموجود على “tcp6” ، وهو ما يتطابق مع السلوك الافتراضي عند تحديد “tcp” فقط.
•   إذا كان لديك خادم واحد فقط على “tcp6” ، فسيتم توجيه حركة مرور IPv6 فقط إلى هذا الخادم.

    يمكن استخدام المعامل الخاص “tcp46” للخوادم القديمة التي تتطلب استقبال اتصالات IPv4 المعينة في مقبس IPv6. استخدامه غير مستحسن.

الملفات
/etc/inetd.conf

انظر أيضًا
fingerd(8) ، ftpd(8) ، identd(8) ، talkd(8)

التاريخ
ظهر الأمر inetd في 4.3BSD. دعم الخدمات القائمة على Sun-RPC منمذج بعد الدعم المقدم من SunOS 4.1. أضيف دعم IPv6 بواسطة مشروع KAME في عام 1999.

نقل ماركو ديتري هذا الكود من OpenBSD في صيف 2002 وأضاف ضبط مخازن المقابس ودعم libwrap من شجرة مصدر NetBSD.

العلل
في أنظمة لينكس، لا يستطيع البرنامج الخفي إعادة تحميل تكوينه ويحتاج إلى إعادة التشغيل عندما يُغير عنوان المضيف لخدمة بين “*” وعنوان محدد.

يجب أن تقرأ برامج الخادم المستخدمة مع “dgram” “udp” “nowait” من مقبس الشبكة، وإلا سيُولد inetd عمليات حتى يُبلغ الحد الأقصى.

محددات عنوان المضيف، رغم أنها منطقية مفاهيميًا لخدمات RPC، لا تعمل بشكل صحيح تمامًا. هذا يعود بشكل كبير إلى أن واجهة مخطّط المنافذ لا توفر طريقة لتسجيل منافذ مختلفة لنفس الخدمة على عناوين محلية مختلفة. بشرط ألا يكون لديك أكثر من مدخل واحد لخدمة RPC معينة، يجب أن يعمل كل شيء بشكل صحيح. (لاحظ أن محددات عنوان المضيف المبدئية تنطبق على سطور RPC بدون محدد صريح.)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3: https://www.gnu.org/licenses/gpl-3.0.html أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.