NM-SETTINGS-KEYFILE(5) پیکربندی NM-SETTINGS-KEYFILE(5)

nm-settings-keyfile - توضیحات افزونه تنظیمات keyfile

برنامه NetworkManager بر پایه‌ی مفهوم پروفایل‌های اتصال عمل می‌کند که حاوی پیکربندی شبکه هستند (برای جزئیات به nm-settings-nmcli(5) مراجعه کنید). این پروفایل‌ها می‌توانند در قالب‌های مختلفی ذخیره شوند. NetworkManager از افزونه‌ها برای خواندن و نوشتن داده‌ها استفاده می‌کند. افزونه‌ها را می‌توان در NetworkManager.conf(5) پیکربندی کرد.

افزونه‌ی keyfile یک افزونه‌ی همه‌منظوره است که از تمام انواع اتصال و قابلیت‌های موجود در NetworkManager پشتیبانی می‌کند. این فایل‌ها دارای قالبی به سبک .ini هستند و در مسیرهای /etc/NetworkManager/system-connections/، /usr/lib/NetworkManager/system-connections/ و /run/NetworkManager/system-connections/ قرار دارند. این افزونه همواره فعال است و به‌طور خودکار برای ذخیره هر اتصالی که توسط سایر افزونه‌های فعال پشتیبانی نمی‌شود استفاده خواهد شد. به دلایل امنیتی، این افزونه فایل‌هایی را که توسط هر کاربری غیر از 'root' قابل خواندن یا نوشتن باشند نادیده می‌گیرد، زیرا ممکن است کلیدهای خصوصی و گذرواژه‌ها به‌صورت متن آشکار درون فایل ذخیره شده باشند.

قالب پیکربندی keyfile یک قالب ساده به سبک .ini است. این ساختار از بخش‌ها (گروه‌ها)یی از جفت‌های کلید-مقدار تشکیل شده است. اطلاعات بیشتر درباره قالب عمومی keyfile را می‌توانید در قالب key file در GLib[1] بیابید (خطوطی که با '#' آغاز می‌شوند کامنت هستند، فهرست‌ها با نویسه‌ی ; از هم جدا می‌شوند و غیره).

هر بخش متناظر با نام یک تنظیم است که در مشخصات تنظیمات (nm-settings-nmcli(5)) شرح داده شده است. هر جفت کلید/مقدار در یک بخش، یکی از ویژگی‌های مشخص‌شده در آن سند است.

بیشتر ویژگی‌ها با همان قالبی که در مشخصات آمده است در keyfile نوشته می‌شوند. با این حال، استفاده از برخی مقادیر برای انسان دشوار است، بنابراین در keyfile به روش‌هایی خواناتر ذخیره می‌شوند. این ویژگی‌ها که با مشخصات اصلی تفاوت دارند در ادامه شرح داده شده‌اند. به عنوان مثال، آدرس‌های IP به صورت آرایه‌ای از اعداد صحیح نوشته نمی‌شوند، بلکه به شکلی خواناتر مانند "1.2.3.4/12 1.2.3.254" ثبت می‌گردند. همچنین برخی از فهرست‌های مقادیر پیچیده (مانند addresses، routes، routing-rules)، به جای استفاده از فهرستی جداشده با نقطه‌ویرگول، برای هر عنصر از یک جفت کلید-مقدار استفاده می‌کنند که کلید آن حالت مفرد نام ویژگی به همراه یک نمایه عددی است (مانند address1، address2، ...).

کاربران می‌توانند فایل‌های اتصال keyfile را به صورت دستی ایجاد کرده یا تغییر دهند، حتی اگر این روش توصیه شده برای مدیریت پروفایل‌ها نباشد. با این حال، در صورت انجام این کار، باید NetworkManager را از تغییرات اعمال‌شده مطلع سازند (برای مثال از طریق nmcli con (re)load).

مثال‌هایی از پیکربندی keyfile.

یک نمونه پیکربندی برای شبکه اترنت (ethernet):
[connection]
id=Main eth0
uuid=27afa607-ee36-43f0-b8c3-9d245cdc4bb3
type=802-3-ethernet
autoconnect=true
[ipv4]
method=auto
[802-3-ethernet]
mac-address=00:23:5a:47:1f:71
یک نمونه پیکربندی برای WPA-EAP (پروتکل PEAP با MSCHAPv2) و گذرواژه با درخواست همیشگی (always-ask secret):
[connection]
id=CompanyWIFI
uuid=cdac6154-a33b-4b15-9904-666772cfa5ee
type=wifi
autoconnect=false
[wifi]
ssid=CorpWLAN
mode=infrastructure
security=802-11-wireless-security
[wifi-security]
key-mgmt=wpa-eap
[ipv4]
method=auto
[ipv6]
method=auto
[802-1x]
eap=peap;
identity=joe
ca-cert=/home/joe/.cert/corp.crt
phase1-peapver=1
phase2-auth=mschapv2
password-flags=2
یک نمونه پیکربندی برای openvpn:
[connection]
id=RedHat-openvpn
uuid=7f9b3356-b210-4c0e-8123-bd116c9c280f
type=vpn
timestamp=1385401165
[vpn]
service-type=org.freedesktop.NetworkManager.openvpn
connection-type=password
password-flags=3
remote=ovpn.my-company.com
cipher=AES-256-CBC
reneg-seconds=0
port=443
username=joe
ca=/etc/openvpn/ISCA.pem
tls-remote=ovpn.my-company.com
[ipv6]
method=auto
[ipv4]
method=auto
ignore-auto-dns=true
never-default=true
یک نمونه پیکربندی برای پل (bridge) و درگاه پل (bridge port):
[connection]                                 [connection]
id=MainBridge                                id=br-port-1
uuid=171ae855-a0ab-42b6-bd0c-60f5812eea9d    uuid=d6e8ae98-71f8-4b3d-9d2d-2e26048fe794
interface-name=MainBridge                    interface-name=em1
type=bridge                                  type=ethernet
                                             controller=MainBridge
[bridge]                                     port-type=bridge
interface-name=MainBridge
یک نمونه پیکربندی برای VLAN:
[connection]
id=VLAN for building 4A
uuid=8ce1c9e0-ce7a-4d2c-aa28-077dda09dd7e
interface-name=VLAN-4A
type=vlan
[vlan]
interface-name=VLAN-4A
parent=eth0
id=4

متغیرهای افزونه‌ی keyfile برای اکثر ویژگی‌های NetworkManager دارای نگاشت یک‌به‌یک هستند. بدین معنا که یک ویژگی NetworkManager در keyfile به عنوان متغیری با همان نام و در همان قالب ذخیره می‌شود. برای این قاعده چندین استثنا وجود دارد که هدف اصلی آن‌ها ساده‌تر کردن نحو keyfile برای کاربران است. استثناهایی که به طور ویژه توسط افزونه‌ی keyfile مدیریت می‌شوند در ادامه فهرست شده‌اند. برای اطلاع از تمام تنظیمات و ویژگی‌های موجود و توضیحات آن‌ها به nm-settings-nmcli(5) مراجعه کنید.

نام‌های مستعار (Aliases). تایپ کردن یا به خاطر سپردن برخی از نام‌های تنظیمات NetworkManager دشوار است. بنابراین keyfile نام‌های مستعاری را ارائه می‌دهد که می‌توان به جای نام‌های اصلی از آن‌ها استفاده کرد.

setting name keyfile alias
802-3-ethernet = ethernet
802-11-wireless = wifi
802-11-wireless-security = wifi-security

جدول ۱. تنظیم (بخش) 802-11-wireless

ویژگی (Property) متغیر Keyfile قالب توضیحات
ssid   string (یا فهرست بایت ده‌دهی - منسوخ) شناسه SSID مربوط به شبکه Wi-Fi. مثال: ssid=Quick Net
mac-address   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC در نماد سنتی ارقام هگزادسیمال با دونقطه (مانند 00:22:68:12:79:A2)، یا فهرستی از ۶ بایت جداشده با نقطه‌ویرگول (منسوخ) (مانند 0;34;104;18;121;162).
cloned-mac-address   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC شبیه‌سازی‌شده در نماد سنتی ارقام هگزادسیمال با دونقطه (مانند 00:22:68:12:79:B2)، یا فهرستی از ۶ بایت جداشده با نقطه‌ویرگول (منسوخ) (مانند 0;34;104;18;121;178).
mac-address-blacklist   فهرست آدرس‌های MAC (جداشده با نقطه‌ویرگول) لیست سیاه آدرس‌های MAC. مثال: mac-address-blacklist= 00:22:68:12:79:A6;00:22:68:12:79:78
mac-address-denylist   فهرست آدرس‌های MAC (جداشده با نقطه‌ویرگول) لیست انکار (denylist) آدرس‌های MAC. مثال: mac-address-denylist= 00:22:68:12:79:A6;00:22:68:12:79:78

جدول ۲. تنظیم (بخش) 802-3-ethernet

ویژگی (Property) متغیر Keyfile قالب توضیحات
mac-address   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC در نماد سنتی ارقام هگزادسیمال با دونقطه (مانند 00:22:68:12:79:A2)، یا فهرستی از ۶ بایت جداشده با نقطه‌ویرگول (منسوخ) (مانند 0;34;104;18;121;162)
cloned-mac-address   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC شبیه‌سازی‌شده در نماد سنتی ارقام هگزادسیمال با دونقطه (مانند 00:22:68:12:79:B2)، یا فهرستی از ۶ بایت جداشده با نقطه‌ویرگول (منسوخ) (مانند 0;34;104;18;121;178).
mac-address-blacklist   فهرست آدرس‌های MAC (جداشده با نقطه‌ویرگول) لیست سیاه آدرس‌های MAC. مثال: mac-address-blacklist= 00:22:68:12:79:A6;00:22:68:12:79:78
mac-address-denylist   فهرست آدرس‌های MAC (جداشده با نقطه‌ویرگول) لیست انکار (denylist) آدرس‌های MAC. مثال: mac-address-denylist= 00:22:68:12:79:A6;00:22:68:12:79:78

جدول ۳. تنظیم (بخش) bridge

ویژگی (Property) متغیر Keyfile قالب توضیحات
mac-address   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC در نماد سنتی ارقام هگزادسیمال با دونقطه، یا فهرستی از ۶ بایت ده‌دهی جداشده با نقطه‌ویرگول (منسوخ) مثال: mac-address=00:22:68:12:79:A2 mac-address=0;34;104;18;121;162;

جدول ۴. تنظیم (بخش) connection

ویژگی (Property) متغیر Keyfile قالب توضیحات
uuid uuid   شناسه یکتای UUID برای پروفایل اتصال. در صورت عدم تعیین، NetworkManager با درهم‌سازی (هش کردن) نام فایل اتصال، مقدار UUID را می‌سازد. مثال: uuid=7bdbe39a-126c-3f94-ac5e-8f156ed38383

جدول ۵. تنظیم (بخش) infiniband

ویژگی (Property) متغیر Keyfile قالب توضیحات
mac-address   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC در نماد سنتی ارقام هگزادسیمال با دونقطه، یا فهرستی از ۲۰ بایت ده‌دهی جداشده با نقطه‌ویرگول (منسوخ) مثال: mac-address= 80:00:00:6d:fe:80:00:00:00:00:00:00:00:02:55:00:70:33:cf:01

جدول ۶. تنظیم (بخش) ipv4

ویژگی (Property) متغیر Keyfile قالب توضیحات
dns dns فهرست آدرس‌های IP دی‌ان‌اس فهرست سرورهای DNS. مثال: dns=1.2.3.4;8.8.8.8;8.8.4.4;
addresses address1, address2, ... address/prefix-length[,gateway] آدرس‌های استاتیک IPv4، یک آدرس به ازای هر متغیر. این متغیرها همچنین می‌توانند گیت‌وی را پس از یک ویرگول یا نقطه‌ویرگول در بر داشته باشند؛ با این حال توصیه می‌شود به جای آن از متغیر "gateway" استفاده شود. مثال: address1=192.168.100.100/24 address2=10.1.1.5/16 address1=192.168.100.100/24,192.168.100.1
gateway gateway string آدرس IP گیت‌وی به صورت یک رشته. گیت‌وی را می‌توان در یکی از متغیرهای "address1"، "address2" و غیره نیز پس از آدرس مشخص کرد که با ویرگول یا نقطه‌ویرگول جدا می‌شود (برای مثال "address1=192.168.100.1/24,192.168.100.254"). مقدار متغیر "gateway" نسبت به هر گیت‌وی تعیین‌شده در متغیرهای "address*" اولویت دارد. مثال: gateway=192.168.100.254
routes route1, route2, ... route/plen[,gateway,metric] فهرست مسیرهای IP. مثال: route1=8.8.8.0/24,10.1.1.1,77 route2=7.7.0.0/16
routes (attributes) route1_options, route2_options, ... key=val[,key=val...] صفت‌های تعریف‌شده برای مسیرها، در صورت وجود. صفت‌های پشتیبانی‌شده در مدخل ipv4.routes در `man nm-settings-nmcli` توضیح داده شده‌اند. مثال: route1_options=mtu=1000,onlink=true
routing-rules routing-rule1, routing-rule2, ... routing rule string قوانین مسیریابی طبق تعریف با `ip rule add`، اما با اولویت ثابت اجباری. گزینه‌های "lookup" و "table" از نام جدول پشتیبانی نمی‌کنند و فقط عدد می‌پذیرند. مثال: routing-rule1=priority 5 from 192.167.4.0/24 table 45

جدول ۷. تنظیم (بخش) ipv6

ویژگی (Property) متغیر Keyfile قالب توضیحات
dns   فهرست آدرس‌های IP دی‌ان‌اس فهرست سرورهای DNS. مثال: dns=2001:4860:4860::8888;2001:4860:4860::8844;
addresses address1, address2, ... address/plen[,gateway] آدرس‌های استاتیک IPv6، یک آدرس به ازای هر متغیر. این متغیرها همچنین می‌توانند گیت‌وی را پس از یک ویرگول یا نقطه‌ویرگول در بر داشته باشند؛ با این حال توصیه می‌شود به جای آن از متغیر "gateway" استفاده شود. مثال: address1=abbe::cafe/96 address2=2001::1234/56 address1=fd01::2000/64;fd01::1
gateway gateway string آدرس IP گیت‌وی به صورت یک رشته. گیت‌وی را می‌توان در یکی از متغیرهای "address1"، "address2" و غیره نیز پس از آدرس مشخص کرد که با ویرگول یا نقطه‌ویرگول جدا می‌شود (برای مثال "address1=fd01::2000/64;fd01::1"). مقدار متغیر "gateway" نسبت به هر گیت‌وی تعیین‌شده در متغیرهای "address*" اولویت دارد. مثال: gateway=abbe::1
routes route1, route2, ... route/plen[,gateway,metric] فهرست مسیرهای IP. مثال: route1=2001:4860:4860::/64,2620:52:0:2219:222:68ff:fe11:5403
routes (attributes) route1_options, route2_options, ... key=val[,key=val...] صفت‌های تعریف‌شده برای مسیرها، در صورت وجود. صفت‌های پشتیبانی‌شده در مدخل ipv6.routes در `man nm-settings-nmcli` توضیح داده شده‌اند. مثال: route1_options=mtu=1000,onlink=true
routing-rules routing-rule1, routing-rule2, ... routing rule string قوانین مسیریابی طبق تعریف با `ip rule add`، اما با اولویت ثابت اجباری. مثال: routing-rule1=priority 5 from 2001:4860:4860::/64 table 45

جدول ۸. تنظیم (بخش) serial

ویژگی (Property) متغیر Keyfile قالب توضیحات
parity   'e'، 'o'، یا 'n' بیت توازن اتصال؛ زوج (even)، فرد (odd)، یا هیچ‌کدام (none). توجه داشته باشید که نسخه‌های قدیمی‌تر NetworkManager این مقدار را به صورت عدد صحیح ذخیره می‌کردند: 69 ('E') برای زوج، 111 ('o') برای فرد، یا 110 ('n') برای هیچ‌کدام. مثال: parity=n

جدول ۹. تنظیم (بخش) vpn

ویژگی (Property) متغیر Keyfile قالب توضیحات
data متغیرهای جداگانه به نام کلیدهای دیکشنری   کلیدهای دیکشنری data مستقیماً به عنوان نام متغیرها در زیر بخش [vpn] استفاده می‌شوند. مثال: remote=ovpn.corp.com cipher=AES-256-CBC username=joe
secrets متغیرهای جداگانه به نام کلیدهای دیکشنری   کلیدهای دیکشنری secrets مستقیماً به عنوان نام متغیرها در زیر بخش [vpn-secrets] استفاده می‌شوند. مثال: password=Popocatepetl

جدول ۱۰. تنظیم (بخش) wifi-p2p

ویژگی (Property) متغیر Keyfile قالب توضیحات
peer   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC در نماد سنتی ارقام هگزادسیمال با دونقطه (مانند 00:22:68:12:79:A2)، یا فهرستی از ۶ بایت جداشده با نقطه‌ویرگول (منسوخ) (مانند 0;34;104;18;121;162).

جدول ۱۱. تنظیم (بخش) wpan

ویژگی (Property) متغیر Keyfile قالب توضیحات
mac-address   نماد متداول ارقام شانزده‌شانزدهی با دونقطه آدرس MAC در نماد ارقام هگزادسیمال با دونقطه (مانند 76:d8:9b:87:66:60:84:ee).

هر ویژگی داده محرمانه (secret) در تنظیمات NetworkManager دارای یک ویژگی
flags وابسته است که نحوه مدیریت آن داده محرمانه را تعیین می‌کند. در افزونه‌ی keyfile، مقدار متغیر -flags یک عدد ده‌دهی (۰ - ۷) است که از مجموع مقادیر زیر حاصل می‌شود:

•0 - (تحت مالکیت NM) - سیستم مسئول ارائه و ذخیره این داده محرمانه است.
•1 - (تحت مالکیت عامل / agent-owned) - یک عامل داده محرمانه در نشست کاربری مسئول ارائه و ذخیره این داده محرمانه است؛ در هنگام نیاز، از عامل‌ها خواسته می‌شود تا آن را ارائه دهند.
•2 - (ذخیره نشود / not-saved) - این داده محرمانه نباید ذخیره شود، بلکه هر بار که لازم باشد باید از کاربر پرسیده شود.
•4 - (لازم نیست / not-required) - در برخی شرایط نمی‌توان به طور خودکار تعیین کرد که آیا داده محرمانه نیاز است یا خیر. این پرچم نشان می‌دهد که داده محرمانه الزامی نیست و نباید از کاربر درخواست شود.

/etc/NetworkManager/system-connections/*

nm-settings-nmcli(5), nm-settings-ifcfg-rh(5), NetworkManager(8), NetworkManager.conf(5), nmcli(1), nmcli-examples(7)

1.
قالب key file در GLib
NetworkManager 1.58.1