تكوين الشبكات

يتم التعامل مع تكوين الشبكة على 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. غيّر قيم addressesroutes, و 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) الخاص به بالترتيب التالي:

  1. server1.example.com
  2. server1.sales.example.com
  3. server1.dev.example.com

إذا لم يتم العثور على أي تطابقات، فسوف يوفر خادم DNS نتيجة notfound وسوف تفشل عملية استعلام DNS.

أسماء المضيفين الثابتة 

أسماء المضيفين الثابتة هي تعيينات محلية مُعرّفة لاسم المضيف لعناوين IP، موجودة في الملف /etc/hostshostsتكون للمدخلات في الملف الأولوية على 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 . تُوفر هذه الحزمة لكلٍّ من المستخدمين والحزم نقاط ربط عند الوصول إلى حالات شبكة مُحددة، للمساعدة في التفاعل مع حالة الشبكة.

أضف تعليقاً