يتم التعامل مع تكوين الشبكة على Ubuntu من خلال Netplan ، والذي يوفر طريقة عالية المستوى وغير مرتبطة بالتوزيع لتحديد كيفية إعداد الشبكة على نظامك عبر ملف تكوين YAML .
مع أن Netplan هو مُقدِّم تجريد للتكوين يُغطِّي جميع جوانب تكوين الشبكة، سنُوضِّح هنا عناصر النظام الأساسية، مثل عناوين IP، وأجهزة Ethernet، وتحليل الأسماء، وغيرها. سنشير إلى إعدادات Netplan ذات الصلة عند الاقتضاء، ولكننا نوصي بدراسة وثائق Netplan بشكل عام.
واجهات إيثرنت
يُحدد النظام واجهات إيثرنت باستخدام أسماء واجهات شبكة متوقعة. قد تظهر هذه الأسماء على شكل eno1
أو enp0s25
. ومع ذلك، في بعض الحالات، قد تستخدم الواجهة نمط التسمية eth# الخاص بالنواة.
تحديد واجهات Ethernet
للتعرف بسرعة على جميع واجهات Ethernet المتوفرة، يمكنك استخدام ip
الأمر كما هو موضح أدناه.
ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0 valid_lft 3257sec preferred_lft 3257sec inet6 fe80::216:3eff:fee2:5242/64 scope link valid_lft forever preferred_lft forever
تطبيق آخر يُساعد في تحديد جميع واجهات الشبكة المتاحة لنظامك هو lshw
الأمر. يُوفر هذا الأمر تفاصيل أكثر حول إمكانيات الأجهزة لمحولات مُحددة. في المثال أدناه، lshw
يُظهر واجهة إيثرنت واحدة باسم منطقي eth4 ، بالإضافة إلى معلومات الناقل وتفاصيل برنامج التشغيل وجميع الإمكانيات المدعومة.
sudo lshw -class network *-network description: Ethernet interface product: MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] vendor: Mellanox Technologies physical id: 0 bus info: pci@0004:01:00.0 logical name: eth4 version: b0 serial: e4:1d:2d:67:83:56 slot: U78CB.001.WZS09KB-P1-C6-T1 size: 10Gbit/s capacity: 10Gbit/s width: 64 bits clock: 33MHz capabilities: pm vpd msix pciexpress bus_master cap_list ethernet physical fibre 10000bt-fd configuration: autonegotiation=off broadcast=yes driver=mlx4_en driverversion=4.0-0 duplex=full firmware=2.9.1326 ip=192.168.1.1 latency=0 link=yes multicast=yes port=fibre speed=10Gbit/s resources: iomemory:24000-23fff irq:481 memory:3fe200000000-3fe2000fffff memory:240000000000-240007ffffff
الأسماء المنطقية لواجهة Ethernet
يمكن أيضًا تكوين الأسماء المنطقية للواجهات عبر إعدادات Netplan. للتحكم في أي واجهة تتلقى اسمًا منطقيًا معينًا، استخدم المفتاحين match
و set-name
. يُستخدم هذا match
المفتاح للعثور على محول بناءً على معايير معينة، مثل عنوان MAC، وبرنامج التشغيل، إلخ. set-name
كما يمكن استخدامه لتغيير الجهاز إلى الاسم المنطقي المطلوب.
network: version: 2 renderer: networkd ethernets: eth_lan0: dhcp4: true match: macaddress: 00:11:22:33:44:55 set-name: eth_lan0
إعدادات واجهة Ethernet
ethtool
برنامج يعرض ويغير إعدادات بطاقة إيثرنت، مثل التفاوض التلقائي، وسرعة المنفذ، ووضع الاتصال الثنائي، وخاصية “استيقاظ الشبكة المحلية”. فيما يلي مثال لكيفية عرض الميزات المدعومة والإعدادات المُعدة لواجهة إيثرنت.
sudo ethtool eth4 Settings for eth4: Supported ports: [ FIBRE ] Supported link modes: 10000baseT/Full Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: 10000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 10000Mb/s Duplex: Full Port: FIBRE PHYAD: 0 Transceiver: internal Auto-negotiation: off Supports Wake-on: d Wake-on: d Current message level: 0x00000014 (20) link ifdown Link detected: yes
عنونة IP
يصف القسم التالي عملية تكوين عنوان IP الخاص بنظامك والبوابة الافتراضية اللازمة للاتصال على شبكة المنطقة المحلية والإنترنت.
تعيين عنوان IP مؤقت
لإجراء تكوينات شبكة مؤقتة، يمكنك استخدام ip
الأمر الموجود أيضًا في معظم أنظمة تشغيل جنوip
/لينكس الأخرى. يتيح لك هذا الأمر تكوين إعدادات تُفعّل فورًا، إلا أنها ليست دائمة وستفقد بعد إعادة التشغيل.
لتكوين عنوان IP مؤقتًا، يمكنك استخدام ip
الأمر التالي: عدّل عنوان IP وقناع الشبكة الفرعية بما يتناسب مع متطلبات شبكتك.
sudo ip addr add 10.102.66.200/24 dev enp0s25
يمكن ip
بعد ذلك استخدامه لتعيين الارتباط لأعلى أو لأسفل.
ip link set dev enp0s25 up ip link set dev enp0s25 down
للتحقق من تكوين عنوان IP الخاص بـ enp0s25
، يمكنك استخدام ip
الأمر بالطريقة التالية:
ip address show dev enp0s25 10: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0 valid_lft 2857sec preferred_lft 2857sec inet6 fe80::216:3eff:fee2:5242/64 scope link valid_lft forever preferred_lft forever6
لتكوين بوابة افتراضية، يمكنك استخدام ip
الأمر التالي: عدّل عنوان البوابة الافتراضية ليتوافق مع متطلبات شبكتك.
sudo ip route add default via 10.102.66.1
يمكنك أيضًا استخدام ip
الأمر للتحقق من تكوين البوابة الافتراضية لديك، على النحو التالي:
ip route show default via 10.102.66.1 dev eth0 proto dhcp src 10.102.66.200 metric 100 10.102.66.0/24 dev eth0 proto kernel scope link src 10.102.66.200 10.102.66.1 dev eth0 proto dhcp scope link src 10.102.66.200 metric 100
إذا كنت بحاجة إلى DNS لتكوين شبكتك المؤقت، يمكنك إضافة عناوين IP لخادم DNS في الملف /etc/resolv.conf
. بشكل عام، /etc/resolv.conf
لا يُنصح بالتعديل المباشر، ولكن هذا تكوين مؤقت وغير دائم. يوضح المثال أدناه كيفية إدخال خادمي DNS إلى /etc/resolv.conf
، والذي يجب تغييرهما إلى خوادم مناسبة لشبكتك. ستجد في القسم التالي شرحًا مطولًا للطريقة الصحيحة (الدائمة) لتكوين عميل DNS.
nameserver 8.8.8.8 nameserver 8.8.4.4
إذا لم تعد بحاجة إلى هذا التكوين وترغب في إزالة جميع تكوينات IP من واجهة، فيمكنك استخدام ip
الأمر مع خيار flush:
ip addr flush eth0
ملحوظة
لا يؤدي مسح إعدادات IP باستخدام ip
الأمر إلى مسح محتويات /etc/resolv.conf
. يجب عليك إزالة أو تعديل هذه الإدخالات يدويًا (أو إعادة التشغيل)، مما سيؤدي أيضًا إلى إعادة كتابة . /etc/resolv.conf
وهو رابط رمزي لـ ./run/systemd/resolve/stub-resolv.conf
تعيين عنوان IP الديناميكي (عميل DHCP)
لتهيئة خادمك لاستخدام DHCP لتعيين العناوين الديناميكية، أنشئ تكوين Netplan في الملف /etc/netplan/99_config.yaml
. يفترض المثال التالي أنك تقوم بتكوين واجهة Ethernet الأولى المُعرّفة باسم enp3s0
.
network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: true
يمكن بعد ذلك تطبيق التكوين باستخدام netplan
الأمر:
sudo netplan apply
تعيين عنوان IP ثابت
لتهيئة نظامك لاستخدام تعيين عنوان ثابت، أنشئ netplan
تهيئة في الملف /etc/netplan/99_config.yaml
. يفترض المثال التالي أنك تقوم بتهيئة واجهة إيثرنت الأولى المُعرّفة باسم eth0
. غيّر قيم addresses
, routes
, و nameservers
لتلبية متطلبات شبكتك.
network: version: 2 renderer: networkd ethernets: eth0: addresses: - 10.10.10.2/24 routes: - to: default via: 10.10.10.1 nameservers: search: [mydomain, otherdomain] addresses: [10.10.10.1, 1.1.1.1]
يمكن بعد ذلك تطبيق التكوين باستخدام netplan
الأمر.
sudo netplan apply
ملحوظة
netplan
في Ubuntu Bionic 18.04 LTS لا يفهم صيغة ” ” لتحديد مسار افتراضي، ويجب استخدام المفتاح الأقدم بدلاً من الكتلة بأكملها.to: default
gateway4: 10.10.10.1
routes:
يُعرّف النظام واجهة الحلقة الراجعة على أنها lo
127.0.0.1، ولها عنوان IP افتراضي. يُمكن عرضها باستخدام ip
الأمر.
ip address show lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever
حل الاسم
تحليل الأسماء (فيما يتعلق بشبكات IP) هو عملية ربط أسماء المضيفين بعناوين IP، والعكس صحيح، مما يُسهّل تحديد الموارد على الشبكة. سيشرح القسم التالي كيفية تهيئة نظامك بشكل صحيح لتحليل الأسماء باستخدام DNS وسجلات أسماء المضيفين الثابتة.
تكوين عميل DNS
تقليديًا، كان الملف /etc/resolv.conf
ملف تكوين ثابتًا نادرًا ما يحتاج إلى تغيير، أو كان يتغير تلقائيًا عبر إعدادات عميل DHCP. systemd-resolved
يتعامل مع تكوين خادم الأسماء، ويجب التفاعل معه عبر systemd-resolve
الأمر. يقوم Netplan systemd-resolved
بتكوين قائمة بخوادم الأسماء والنطاقات المراد وضعها في /etc/resolv.conf
، وهو رابط رمزي:
/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
لتكوين المُحلِّل، أضف عناوين IP لخوادم الأسماء المناسبة لشبكتك إلى netplan
ملف التكوين. يمكنك أيضًا إضافة قوائم بحث اختيارية للاحقات DNS لمطابقة أسماء نطاقات شبكتك. قد يبدو الملف الناتج كما يلي:
network: version: 2 renderer: networkd ethernets: enp0s25: addresses: - 192.168.0.100/24 routes: - to: default via: 192.168.0.1 nameservers: search: [mydomain, otherdomain] addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]
يمكن أيضًا استخدام خيار البحث مع أسماء نطاقات متعددة، بحيث تُضاف استعلامات DNS بالترتيب الذي تُدخل به. على سبيل المثال، قد تحتوي شبكتك على عدة نطاقات فرعية للبحث؛ نطاق رئيسي باسم example.com
، ونطاقان فرعيان باسم ، sales.example.com
و dev.example.com
.
إذا كان لديك عدة نطاقات ترغب في البحث فيها، فقد يبدو تكوينك كما يلي:
network: version: 2 renderer: networkd ethernets: enp0s25: addresses: - 192.168.0.100/24 routes: - to: default via: 192.168.0.1 nameservers: search: [example.com, sales.example.com, dev.example.com] addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]
إذا حاولت إرسال أمر ping إلى مضيف يحمل الاسم server1
، فسوف يقوم نظامك تلقائيًا بالاستعلام عن DNS للحصول على اسم المجال المؤهل بالكامل (FQDN) الخاص به بالترتيب التالي:
server1.example.com
server1.sales.example.com
server1.dev.example.com
إذا لم يتم العثور على أي تطابقات، فسوف يوفر خادم DNS نتيجة notfound وسوف تفشل عملية استعلام DNS.
أسماء المضيفين الثابتة
أسماء المضيفين الثابتة هي تعيينات محلية مُعرّفة لاسم المضيف لعناوين IP، موجودة في الملف /etc/hosts
. hosts
تكون للمدخلات في الملف الأولوية على DNS افتراضيًا. هذا يعني أنه إذا حاول نظامك تحليل اسم مضيف وتطابق مع مدخل في /etc/hosts
. فلن يحاول البحث عن السجل في DNS. في بعض التكوينات، خاصةً عند عدم الحاجة إلى اتصال بالإنترنت، يمكن بسهولة ضبط الخوادم التي تتواصل مع عدد محدود من الموارد لاستخدام أسماء مضيفين ثابتة بدلاً من DNS.
فيما يلي مثال لملف hosts
تم فيه تحديد عدد من الخوادم المحلية من خلال أسماء المضيفين البسيطة والأسماء المستعارة وأسماء النطاق المؤهلة بالكامل (FQDN) المكافئة لها:
127.0.0.1 localhost 127.0.1.1 ubuntu-server 10.0.0.11 server1 server1.example.com vpn 10.0.0.12 server2 server2.example.com mail 10.0.0.13 server3 server3.example.com www 10.0.0.14 server4 server4.example.com file
ملحوظة
في هذا المثال، لاحظ أن كل خادم مُنح أسماءً مستعارة بالإضافة إلى اسمه الحقيقي واسم المجال الكامل المؤهل. تم تعيين اسم الخادم 1 إلى اسم الشبكة الافتراضية الخاصة (VPN) ، ويُشار إلى الخادم 2 باسم البريد ، والخادم 3 باسم www ، والخادم 4 باسم الملف .
تكوين مفتاح خدمة الاسم (NSS)
يتم التحكم في ترتيب اختيار نظامك لطريقة تحويل أسماء المضيفين إلى عناوين IP من خلال ملف تكوين مفتاح خدمة الأسماء (NSS) /etc/nsswitch.conf
. وكما ذكرنا سابقًا، عادةً ما /etc/hosts
تكون لأسماء المضيفين الثابتة المُعرّفة في ملف النظام الأولوية على الأسماء المُحلّلة من نظام أسماء النطاقات (DNS). فيما يلي مثال للسطر المسؤول عن هذا الترتيب لعمليات البحث عن أسماء المضيفين في الملف /etc/nsswitch.conf
.
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
files
يحاول أولاً حل أسماء المضيفين الثابتة الموجودة في/etc/hosts
.mdns4_minimal
يحاول حل الاسم باستخدام DNS متعدد البث.[NOTFOUND=return]
وهذا يعني أن أي استجابة من العمليةnotfound
السابقةmdns4_minimal
يجب أن تُعامل على أنها موثوقة، وأنه لا ينبغي للنظام أن يحاول الاستمرار في البحث عن إجابة.dns
يمثل استعلام DNS أحادي البث القديم.- يمثل mdns4 استعلام DNS متعدد البث.
لتعديل ترتيب طرق تحليل الأسماء هذه، يمكنك ببساطة تغيير hosts:
السلسلة إلى القيمة التي تختارها. على سبيل المثال، إذا كنت تفضل استخدام DNS أحادي البث القديم بدلاً من DNS متعدد البث، يمكنك تغيير السلسلة /etc/nsswitch.conf
كما هو موضح أدناه:
hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4
ربط واجهات متعددة
يُعدّ الربط الجسري تكوينًا أكثر تقدمًا، ولكنه مفيد جدًا في سيناريوهات متعددة. أحد السيناريوهات هو إنشاء جسر بواجهات شبكة متعددة، ثم استخدام جدار حماية لتصفية حركة البيانات بين قطاعي شبكة. سيناريو آخر هو استخدام جسر على نظام بواجهة واحدة للسماح للأجهزة الافتراضية بالوصول المباشر إلى الشبكة الخارجية. يوضح المثال التالي السيناريو الأخير:
قم بتكوين الجسر عن طريق تحرير netplan
التكوين الموجود في /etc/netplan/
، وإدخال القيم المناسبة للواجهة المادية والشبكة الخاصة بك:
network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: no bridges: br0: dhcp4: yes interfaces: - enp3s0
الآن قم بتطبيق التكوين لتمكين الجسر:
sudo netplan apply
يجب أن تكون واجهة الجسر الجديدة جاهزة للعمل الآن. brctl
توفر معلومات مفيدة حول حالة الجسر، وتتحكم في الواجهات التي تُشكل جزءًا منه، وما إلى ذلك. راجع لمزيد من المعلومات.man brctl
networkd-dispatcher لنصوص الخطاف
قد يكون مستخدمو الإصدار السابق ifupdown
على دراية باستخدام نصوص الوصلات (مثل: ما قبل الرفع، وما بعد الرفع) في ملفات واجهاتهم. لا يدعم تكوين Netplan حاليًا نصوص الوصلات في تعريف التكوين الخاص به.
بدلاً من ذلك، لتحقيق هذه الوظيفة باستخدام networkd
المُرسِم، يمكن للمستخدمين استخدام networkd-dispatcher . تُوفر هذه الحزمة لكلٍّ من المستخدمين والحزم نقاط ربط عند الوصول إلى حالات شبكة مُحددة، للمساعدة في التفاعل مع حالة الشبكة.
أضف تعليقاً
يجب أنت تكون مسجل الدخول لتضيف تعليقاً.