يتم التعامل مع تكوين الشبكة على 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: defaultgateway4: 10.10.10.1routes:
يُعرّف النظام واجهة الحلقة الراجعة على أنها lo127.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.comserver1.sales.example.comserver1.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 . تُوفر هذه الحزمة لكلٍّ من المستخدمين والحزم نقاط ربط عند الوصول إلى حالات شبكة مُحددة، للمساعدة في التفاعل مع حالة الشبكة.