SYSCTL.D(5)

الاسم
sysctl.d - ضبط معلمات النواة عند الإقلاع

موجز

    /etc/sysctl.d/*.conf
    /run/sysctl.d/*.conf
    /usr/local/lib/sysctl.d/*.conf
    /usr/lib/sysctl.d/*.conf

key.name.under.proc.sys = some value
key/name/under/proc/sys = some value
key/middle.part.with.dots/foo = 123
key.middle/part/with/dots.foo = 123
-key.that.will.not.fail = value
key.pattern.*.with.glob = whatever
-key.pattern.excluded.with.glob
key.pattern.overridden.with.glob = custom

الوصف

عند الإقلاع، تقرأ systemd-sysctl.service(8) ملفات الضبط من الدلائل أعلاه لضبط معلمات نواة sysctl(8).

تنسيق الضبط

تحتوي ملفات الضبط على قائمة من تعيينات المتغيرات، مفصولة بأسطر جديدة. تُتجاهل الأسطر الفارغة والأسطر التي يكون أول حرف غير فراغي فيها "#" أو ";".

لاحظ أنه يمكن استخدام "/" أو "." كفواصل ضمن أسماء متغيرات sysctl. إذا كان الفاصل الأول شرطة مائلة، تُترك الشرطات والنقاط المتبقية كما هي. إذا كان الفاصل الأول نقطة، تُتبادل النقاط والشرطات. "kernel.domainname=foo" و "kernel/domainname=foo" متكافئان وسيؤديان إلى كتابة "foo" في /proc/sys/kernel/domainname. يمكن استخدام إما "net.ipv4.conf.enp3s0/200.forwarding" أو "net/ipv4/conf/enp3s0.200/forwarding" للإشارة إلى /proc/sys/net/ipv4/conf/enp3s0.200/forwarding. يمكن استخدام نمط glob glob(7) لكتابة نفس القيمة إلى جميع المفاتيح المتطابقة. تُستثنى المفاتيح التي يوجد لها نمط صريح من أي تطابق glob. بالإضافة إلى ذلك، يمكن استبعاد مفتاح صراحة من التعيين بواسطة أي أنماط glob متطابقة بتحديد اسم المفتاح مسبوقًا بحرف "-" وغير متبوع بـ "="، انظر SYNOPSIS.

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

تُطبق الإعدادات التي تم ضبطها بملفات sysctl.d مبكرًا عند الإقلاع. تُطبق الخيارات الخاصة بواجهة الشبكة أيضًا بشكل فردي لكل واجهة شبكة عند ظهورها في النظام. (بشكل أكثر تحديدًا، net.ipv4.conf.*، net.ipv6.conf.*، net.ipv4.neigh.* و net.ipv6.neigh.*).

تصبح العديد من معلمات sysctl متاحة فقط عند تحميل وحدات نواة معينة. تُحمل الوحدات عادةً عند الطلب، على سبيل المثال عند توصيل جهاز معين أو تشغيل الشبكة. هذا يعني أن systemd-sysctl.service(8) التي تعمل أثناء الإقلاع المبكر لن تضبط هذه المعلمات إذا أصبحت متاحة بعد تشغيلها. لتعيين هذه المعلمات، يُوصى بإضافة قاعدة udev(7) لتعيين هذه المعلمات عندما تصبح متاحة. بدلاً من ذلك، خيار أبسط قليلاً وأقل كفاءة هو إضافة الوحدة إلى modules-load.d(5)، مما يؤدي إلى تحميلها بشكل ثابت قبل تطبيق إعدادات sysctl (انظر المثال أدناه).

أدلة الضبط والأسبقية

تُقرأ ملفات الضبط من المجلدات في /etc/، و /run/، و /usr/local/lib/، و /usr/lib/، بترتيب الأسبقية، كما هو مدرج في قسم الموجز أعلاه. يجب أن تحمل الملفات الامتداد ".conf". تتجاوز الملفات في /etc/ الملفات التي تحمل الاسم نفسه في /run/، و /usr/local/lib/، و /usr/lib/. وتتجاوز الملفات في /run/ الملفات التي تحمل الاسم نفسه تحت /usr/.

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

ينبغي أن تثبّت الحزم ملفات إعداداتها في /usr/lib/ (حزم التوزيعة) أو /usr/local/lib/ (التثبيتات المحلية) [1]. الملفات في /etc/ محجوزة للمدير المحلي، الذي قد يستخدم هذا المنطق لتجاوز ملفات الإعداد التي ثبتتها حزم الموردين.

يوصى ببدء جميع أسماء الملفات برقم من خانتين وشرطة لتبسيط الترتيب. يوصى باستخدام النطاق 10-40 لملفات الضبط في /usr/ والنطاق 60-90 لملفات الضبط في /etc/ و /run/، للتأكد من أن ملفات الضبط المحلية والعابرة ستكون لها الأولوية دائماً على ملفات الضبط التي يشحنها مورد نظام التشغيل.

إذا أراد المدير تعطيل ملف تهيئة يوفره المورد، فإن الطريقة الموصى بها هي وضع وصلة رمزية إلى /dev/null في مجلد التهيئة في /etc/، بنفس اسم ملف تهيئة المورد. وإذا كان ملف تهيئة المورد مضمناً في صورة initrd، فيجب إعادة توليد الصورة.

أمثلة

مثال 1. تعيين اسم نطاق YP للنواة

/etc/sysctl.d/domain-name.conf:

    kernel.domainname=example.com

مثال 2. تطبيق إعدادات متاحة فقط عند تحميل وحدة معينة (الطريقة الأولى)

/etc/udev/rules.d/99-bridge.rules:

    ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", \
          RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/net/bridge"

/etc/sysctl.d/bridge.conf:

    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0

تطبق هذه الطريقة الإعدادات عند تحميل الوحدة. يرجى ملاحظة أنه، ما لم يتم تحميل وحدة br_netfilter، لن تُصفى الحزم المجسرة بواسطة Netfilter (بدءًا من النواة 3.18)، لذا فإن عدم تحميل الوحدة ببساطة كافٍ لتجنب التصفية.

مثال 3. تطبيق إعدادات متاحة فقط عند تحميل وحدة معينة (الطريقة الثانية)

/etc/modules-load.d/bridge.conf:

    br_netfilter

/etc/sysctl.d/bridge.conf:

    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0

تفرض هذه الطريقة تحميل الوحدة آلي. يُرجى ملاحظة أنه، ما لم تُحمّل وحدة br_netfilter، لن تُرشح حزم الجسر باستخدام Netfilter (بدءًا من النواة 3.18)، لذا يكفي عدم تحميل الوحدة لتجنب الترشيح.

مثال 4. تعيين خصائص التوجيه الشبكي لجميع الواجهات

/etc/sysctl.d/20-rp_filter.conf:

    net.ipv4.conf.default.rp_filter = 2
    net.ipv4.conf.*.rp_filter = 2
    -net.ipv4.conf.all.rp_filter
    net.ipv4.conf.hub0.rp_filter = 1

تُضبط قيمة المفتاح rp_filter إلى "2" لجميع الواجهات، باستثناء "hub0". نضبط net.ipv4.conf.default.rp_filter أولاً، لذا أي واجهات تُضاف لاحقًا ستحصل على هذه القيمة (يغطي هذا أيضًا أي واجهات تُكتشف أثناء تشغيلنا). يطابق النمط العام أي واجهات تُكتشف سابقًا. يطابق النمط العام أيضًا net.ipv4.conf.all.rp_filter، الذي لا نرغب في ضبطه إطلاقًا، لذا يُستبعد صراحةً. وتُستبعد "hub0" من النمط العام لأنها تحتوي على ضبط صريح.

انظر أيضًا

systemd(1), systemd-sysctl.service(8), systemd-delta(1), sysctl(8), sysctl.conf(5), modprobe(8)

ملاحظات

1.  💣💥🧨💥💥💣 يرجى ملاحظة أن ملفات الضبط تلك يجب أن تكون متوفرة في جميع الأوقات. إذا كان /usr/local/ قسماً منفصلاً، فقد لا يكون متوفراً أثناء بدء التشغيل المبكر، ويجب عدم استخدامه للضبط.

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

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

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