NSS-MYHOSTNAME(8) nss-myhostname NSS-MYHOSTNAME(8)

nss-myhostname - تفکیک خودکار نام میزبان محلی به نشانی‌های IP

libnss_myhostname.so.2

nss-myhostname یک ماژول افزونه برای قابلیت سوئیچ سرویس نام گنو (NSS یا Name Service Switch) در کتابخانه سی گنو (glibc) است که عمدتاً تفکیک نام میزبان را برای نام میزبان محلی پیکربندی‌شده سیستم، همان‌گونه که توسط gethostname(2) بازگردانده می‌شود، فراهم می‌کند. نام‌های میزبان دقیقی که توسط این ماژول تفکیک می‌شوند عبارتند از:

•نام میزبان محلی و پیکربندی‌شده به تمام نشانی‌های IP محلی پیکربندی‌شده به ترتیب حوزه (scope) آن‌ها تفکیک می‌شود، یا — در صورتی که هیچ‌کدام پیکربندی نشده باشند — به نشانی IPv4 معادل 127.0.0.2 (که روی لوپ‌بک محلی است) و نشانی IPv6 معادل ::1 (که میزبان محلی است).
•نام‌های میزبان "localhost" و "localhost.localdomain" (و همچنین هر نام میزبانی که به ".localhost" یا ".localhost.localdomain" ختم شود) به نشانی‌های IP معادل 127.0.0.1 و ::1 تفکیک می‌شوند.
•نام میزبان "_gateway" به تمام نشانی‌های دروازه مسیریابی پیش‌فرض فعلی، به ترتیب متریک (metric) آن‌ها تفکیک می‌شود. این کار یک نام میزبان پایدار به دروازه فعلی اختصاص می‌دهد که برای ارجاع به آن مستقل از وضعیت فعلی پیکربندی شبکه مفید است.
•نام میزبان "_outbound" به نشانی‌های IPv4 و IPv6 محلی که به احتمال زیاد برای برقراری ارتباط با سایر میزبان‌ها استفاده می‌شوند، تفکیک می‌شود. این نشانی‌ها همان نشانی‌های مبدأ ترجیحی دروازه‌های پیش‌فرض (در صورت تعیین) هستند، یا از طریق درخواست تصمیم مسیریابی به دروازه‌های پیش‌فرض پیکربندی‌شده از هسته و سپس استفاده از نشانی‌های IP محلی انتخاب‌شده توسط این تصمیم تعیین می‌شوند. این نام میزبان تنها در صورتی در دسترس است که حداقل یک دروازه پیش‌فرض محلی پیکربندی شده باشد. این کار یک نام میزبان پایدار به نشانی‌های IP خروجی محلی اختصاص می‌دهد که برای ارجاع به آن‌ها مستقل از وضعیت فعلی پیکربندی شبکه مفید است.

نرم‌افزارهای مختلفی به یک نام میزبان محلی که همواره قابل تفکیک باشد وابسته هستند. هنگام استفاده از نام‌های میزبان پویا، این امر به صورت سنتی با تغییر هم‌زمان /etc/hosts هنگام تغییر نام میزبان به دست می‌آمد. این رویکرد مشکل‌ساز است چرا که نیازمند یک سیستم فایل /etc/ قابل نوشتن بوده و آسیب‌پذیر است زیرا این پرونده ممکن است هم‌زمان توسط مدیر سیستم نیز ویرایش شود. با فعال بودن nss-myhostname، تغییر /etc/hosts غیرضروری است و در بسیاری از سیستم‌ها، این پرونده کاملاً اختیاری می‌شود.

برای فعال‌سازی ماژول‌های NSS، عبارت "myhostname" را به خطی که با "hosts:" در /etc/nsswitch.conf شروع می‌شود اضافه کنید.

توصیه می‌شود "myhostname" پس از "files" و پیش از "dns" قرار گیرد. این کار نام‌های میزبان شناخته‌شده مانند "localhost" و نام‌های میزبان ماشین را به صورت محلی تفکیک می‌کند. این رفتار با عملکرد nss-resolve سازگار است و همچنان امکان بازنویسی از طریق /etc/hosts را فراهم می‌کند.

لطفاً توجه داشته باشید که nss-myhostname (و nss-resolve) در جهت عکس نیز تفکیک را انجام می‌دهند — از نشانی‌های IP متصل محلی به نام‌های میزبان. اگر به دریافت این جستجو از طریق DNS متکی هستید، ممکن است بخواهید ترتیب موارد را به شکل دیگری تنظیم کنید.

در اینجا نمونه‌ای از یک پروندهٔ /etc/nsswitch.conf آورده شده است که nss-myhostname را به درستی فعال می‌کند:

passwd:         files systemd
group:          files [SUCCESS=merge] systemd
shadow:         files systemd
gshadow:        files systemd
hosts:          mymachines resolve [!UNAVAIL=return] files myhostname dns
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis

برای آزمایش، از ابزار getent(1) مربوط به glibc استفاده کنید:

$ getent ahosts `hostname`
::1       STREAM omega
::1       DGRAM
::1       RAW
127.0.0.2       STREAM
127.0.0.2       DGRAM
127.0.0.2       RAW

در این حالت، نام میزبان محلی omega است.

systemd(1), nss-systemd(8), nss-resolve(8), nss-mymachines(8), nsswitch.conf(5), getent(1)

systemd 261.2