تكوين عميل NFS لـ Azure NetApp Files

يعد تكوين عميل NFS الموضح في هذه المقالة جزءا من الإعداد عند تكوين تشفير NFSv4.1 Kerberos أو إنشاء وحدة تخزين ثنائية البروتوكول أو NFSv3/NFSv4.1 باستخدام LDAP. تتوفر مجموعة واسعة من توزيعات Linux لاستخدامها مع Azure NetApp Files. توضح هذه المقالة التكوينات لاثنين من البيئات الأكثر استخداما: RHEL 8 وUbuntu 18.04.

المتطلبات والاعتبارات

بغض النظر عن نكهة Linux التي تستخدمها، فإن التكوينات التالية مطلوبة:

  • تكوين عميل NTP لتجنب المشكلات مع انحراف الوقت.
  • تكوين إدخالات DNS لعميل Linux لتحليل الاسم.
    يجب أن يتضمن هذا التكوين سجل "A" (للأمام) وسجل PTR (عكسي).
  • بالنسبة للانضمام إلى المجال، قم بإنشاء حساب كمبيوتر لعميل Linux في Active Directory الهدف (الذي يتم إنشاؤه أثناء أمر الانضمام إلى النطاق).

    إشعار

    $SERVICEACCOUNT يجب أن يكون المتغير المستخدم في الأوامر أدناه حساب مستخدم لديه أذونات أو تفويض لإنشاء حساب كمبيوتر في الوحدة التنظيمية المستهدفة.

تكوين RHEL 8

يصف هذا القسم تكوينات RHEL المطلوبة لتشفير NFSv4.1 Kerberos والبروتوكول المزدوج.

تستخدم الأمثلة في هذا القسم اسم المجال وعنوان IP التاليين:

  • اسم المجال: contoso.com
  • IP الخاص: 10.6.1.4

تكوين RHEL 8 إذا كنت تستخدم تشفير NFSv4.1 Kerberos

  1. تكوين /etc/resolv.conf مع خادم DNS المناسب.

    على سبيل المثال:

    [root@reddoc cbs]# cat /etc/resolv.conf
    search contoso.com
    nameserver 10.6.1.4(private IP)

  2. أضف سجل عميل NFS في خادم DNS لمنطقة البحث الأمامي والعكسي لنظام أسماء النطاقات.

  3. للتحقق من DNS، استخدم الأوامر التالية من عميل NFS:

    # nslookup [hostname/FQDN of NFS client(s)]
    # nslookup [IP address of NFS client(s)]

  4. تثبيت الحزم:

    yum update
    sudo yum -y install realmd sssd adcli samba-common krb5-workstation chrony nfs-utils

  5. تكوين عميل NTP.

    يستخدم RHEL 8 ترتيبا زمنيا بشكل افتراضي.

  6. انضم إلى مجال Active Directory:

    sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"

    على سبيل المثال:

    sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"

    default_realm تأكد من تعيين إلى النطاق المتوفر في /etc/krb5.conf. إذا لم يكن الأمر كذلك، أضفه ضمن [libdefaults] القسم في الملف كما هو موضح في المثال التالي:

    [libdefaults]
        default_realm = CONTOSO.COM
        default_tkt_enctypes = aes256-cts-hmac-sha1-96
        default_tgs_enctypes = aes256-cts-hmac-sha1-96
        permitted_enctypes = aes256-cts-hmac-sha1-96
    [realms]
        CONTOSO.COM = {
            kdc = dc01.contoso.com
            admin_server = dc01.contoso.com
            master_kdc = dc01.contoso.com
            default_domain = contoso.com
        }
    [domain_realm]
        .contoso.com = CONTOSO.COM
        contoso.com = CONTOSO.COM
    [logging]
        kdc = SYSLOG:INFO
        admin_server = FILE=/var/kadm5.log
    
  7. أعد تشغيل جميع خدمات NFS:

    systemctl start nfs-*
    systemctl restart rpc-gssd.service

    تمنع إعادة التشغيل حالة “mount.nfs: an incorrect mount option was specified” الخطأ أثناء تحميل Kerberos.

  8. kinit قم بتشغيل الأمر باستخدام حساب المستخدم للحصول على التذاكر:

    sudo kinit $SERVICEACCOUNT@DOMAIN

    على سبيل المثال:

    sudo kinit ad_admin@CONTOSO.COM

تكوين RHEL 8 إذا كنت تستخدم بروتوكولا مزدوجا

الخطوات التالية اختيارية. تحتاج إلى تنفيذ الخطوات فقط إذا كنت تستخدم تعيين المستخدم في عميل NFS:

  1. أكمل جميع الخطوات الموضحة في تكوين RHEL 8 إذا كنت تستخدم قسم تشفير NFSv4.1 Kerberos.

  2. أضف سجل DNS ثابتا في ملف /etc/hosts لاستخدام اسم المجال المؤهل بالكامل (FQDN) ل AD الخاص بك، بدلا من استخدام عنوان IP في ملف تكوين SSSD:

    cat /etc/hosts
    10.6.1.4 winad2016.contoso.com

  3. أضف قسما إضافيا للمجالات لحل المعرفات من خادم AD LDAP:

    [root@reddoc cbs]# cat /etc/sssd/sssd.conf
    [sssd]
    domains = contoso.com, contoso-ldap (new entry added for LDAP as id_provider)
    config_file_version = 2
    services = nss, pam, ssh, sudo (ensure nss is present in this list)

    [domain/contoso-ldap] (Copy the following lines. Modify as per your domain name.)
    auth_provider = krb5
    chpass_provider = krb5
    id_provider = ldap
    ldap_search_base = dc=contoso,dc=com(your domain)
    ldap_schema = rfc2307bis
    ldap_sasl_mech = GSSAPI
    ldap_user_object_class = user
    ldap_group_object_class = group
    ldap_user_home_directory = unixHomeDirectory
    ldap_user_principal = userPrincipalName
    ldap_account_expire_policy = ad
    ldap_force_upper_case_realm = true
    ldap_user_search_base = cn=Users,dc=contoso,dc=com (based on your domain)
    ldap_group_search_base = cn=Users,dc=contoso,dc=com (based on your domain)
    ldap_sasl_authid = REDDOC$ (ensure $ at the end you can get this from “klist -kte” command)
    krb5_server = winad2016.contoso.com (same as AD address which is added in /etc/hosts)
    krb5_realm = CONTOSO.COM (domain name in caps)
    krb5_kpasswd = winad2016.contoso.com (same as AD address which is added in /etc/hosts)
    use_fully_qualified_names = false

    في [domain/contoso-ldap] التكوين أعلاه:

    • id_provider تم تعيين إلى ldap وليس ad.
    • وقد حدد التكوين قواعد البحث وفئات المستخدم والمجموعة لعمليات البحث.
    • ldap_sasl_authid هو اسم حساب الجهاز من klist -kte.
    • تم تعيين use_fully_qualified_names إلى false. يعني هذا الإعداد استخدام هذا التكوين عند استخدام اسم قصير.
    • ldap_id_mapping غير محدد، والذي يتم تعيينه افتراضيا إلى false.

    realm join يتم إنشاء التكوين بواسطة العميل ويبدو كما يلي:

    [domain/contoso.com] (Do not edit or remove any of the following information. This information is automatically generated during the realm join process.)
    ad_domain = contoso.com
    krb5_realm = CONTOSO.COM
    realmd_tags = manages-system joined-with-adcli
    cache_credentials = True
    id_provider = ad
    krb5_store_password_if_offline = True
    default_shell = /bin/bash
    ldap_id_mapping = True
    use_fully_qualified_names = True
    fallback_homedir = /home/%u@%d
    access_provider = ad

    في [domain/contoso.com] التكوين أعلاه:

    • تم تعيين id_provider إلى ad.
    • تم تعيين ldap_id_mapping إلى true. يستخدم معرفات SSSD التي تم إنشاؤها. بدلا من ذلك، يمكنك تعيين هذه القيمة إلى false إذا كنت تريد استخدام POSIX UIDs لجميع أنماط أسماء المستخدمين. يمكنك تحديد القيمة استنادا إلى تكوين العميل الخاص بك.
    • use_fully_qualified_names عبارة عن true. يعني user@CONTOSO.COM هذا الإعداد أنه سيستخدم هذا التكوين.
  4. تأكد من أن لديك /etc/nsswitch.conf sss الإدخال:

    cat /etc/nsswitch.conf
    passwd: sss files systemd
    group: sss files systemd
    netgroup: sss files

  5. sssd أعد تشغيل الخدمة وامسح ذاكرة التخزين المؤقت:

    service sssd stop
    rm -f /var/lib/sss/db/*
    service sssd start

  6. اختبر للتأكد من تكامل عميلك مع خادم LDAP:

    [root@red81 cbs]# id ldapuser1
    uid=1234(ldapuser1) gid=1111(ldapgroup1) groups=1111(ldapgroup1)

تكوين Ubuntu

يصف هذا القسم تكوينات Ubuntu المطلوبة لتشفير NFSv4.1 Kerberos والبروتوكول المزدوج.

تستخدم الأمثلة في هذا القسم اسم المجال وعنوان IP التاليين:

  • اسم المجال: contoso.com
  • IP الخاص: 10.6.1.4
  1. تكوين /etc/resolv.conf مع خادم DNS المناسب:

    root@ubuntu-rak:/home/cbs# cat /etc/resolv.conf
    search contoso.com
    nameserver <private IP address of DNS server>

  2. أضف سجل عميل NFS في خادم DNS لمنطقة البحث الأمامي والعكسي لنظام أسماء النطاقات.

    للتحقق من DNS، استخدم الأوامر التالية من عميل NFS:

    # nslookup [hostname/FQDN of NFS client(s)]
    # nslookup [IP address of NFS client(s)]

  3. تثبيت الحزم:

    apt-get update
    apt-get install -y realmd packagekit sssd adcli samba-common chrony krb5-user nfs-common

    عند المطالبة، أدخل $DOMAIN.NAME (باستخدام أحرف كبيرة، على سبيل المثال، CONTOSO.COM) كمجال Kerberos الافتراضي.

  4. إعادة تشغيل الخدمة rpc-gssd.service:

    sudo systemctl start rpc-gssd.service

  5. يستخدم Ubuntu 18.04 ترتيبا زمنيا بشكل افتراضي. اتباع إرشادات التكوين في Ubuntu Bionic: استخدام الترتيب الزمني لتكوين NTP.

  6. انضم إلى مجال Active Directory:

    sudo realm join $DOMAIN.NAME -U $SERVICEACCOUNT --computer-ou="OU=$YOUROU"

    على سبيل المثال:
    sudo realm join CONTOSO.COM -U ad_admin --computer-ou="CN=Computers"

  7. نفذ kinit مع المستخدم للحصول على التذاكر:

    sudo kinit $SERVICEACCOUNT

    على سبيل المثال:
    sudo kinit ad_admin

تكوين Ubuntu إذا كنت تستخدم بروتوكولا مزدوجا

الخطوات التالية اختيارية. تحتاج إلى تنفيذ الخطوات فقط إذا كنت تريد استخدام تعيين المستخدم في عميل NFS:

  1. قم بتشغيل الأمر التالي لترقية الحزم المثبتة:
    sudo apt update && sudo apt install libnss-ldap libpam-ldap ldap-utils nscd

    يستخدم المثال التالي قيم عينة. عندما يطالبك الأمر بإدخال، يجب توفير الإدخال استنادا إلى البيئة الخاصة بك.

    base dc=contoso,dc=com uri ldap://10.20.0.4:389/ ldap_version 3 rootbinddn cn=admin,cn=Users,dc=contoso,dc=com pam_password ad

  2. تأكد من أن الملف يحتوي /etc/nsswitch.conf على الإدخالات التالية ldap :
    passwd: compat systemd ldap
    group: compat systemd ldap

  3. قم بتشغيل الأمر التالي لإعادة تشغيل الخدمة وتمكينها:

    sudo systemctl restart nscd && sudo systemctl enable nscd

يستعلم المثال التالي عن خادم AD LDAP من عميل Ubuntu LDAP لمستخدم ‘hari1’LDAP :

root@cbs-k8s-varun4-04:/home/cbs# getent passwd hari1
hari1:*:1237:1237:hari1:/home/hari1:/bin/bash

تكوين جهازين ظاهريين بنفس اسم المضيف للوصول إلى وحدات تخزين NFSv4.1

يشرح هذا القسم كيف يمكنك تكوين جهازين ظاهريين لديهما نفس اسم المضيف للوصول إلى وحدات تخزين NFSv4.1 لملفات Azure NetApp. يمكن أن يكون هذا الإجراء مفيدا عند إجراء اختبار التعافي من الكوارث (DR) وتتطلب نظام اختبار بنفس اسم المضيف مثل نظام الاسترداد بعد الكوارث الأساسي. هذا الإجراء مطلوب فقط عندما يكون لديك نفس اسم المضيف على جهازين ظاهريين يصلان إلى نفس وحدات تخزين Azure NetApp Files.

يتطلب NFSv4.x من كل عميل تعريف نفسه إلى خوادم ذات سلسلة فريدة . ترتبط حالة فتح الملف وتأمينه المشتركة بين عميل واحد وخادم واحد بهذه الهوية. لدعم استرداد حالة NFSv4.x القوي وترحيل الحالة الشفاف، يجب ألا تتغير سلسلة الهوية هذه عبر عمليات إعادة تشغيل العميل.

  1. nfs4_unique_id عرض السلسلة على عملاء الجهاز الظاهري باستخدام الأمر التالي:

    # systool -v -m nfs | grep -i nfs4_unique
    nfs4_unique_id = ""

    لتحميل نفس وحدة التخزين على جهاز ظاهري إضافي بنفس اسم المضيف، على سبيل المثال نظام التعافي من الكوارث، قم بإنشاء nfs4_unique_id بحيث يمكن تعريف نفسه بشكل فريد لخدمة Azure NetApp Files NFS. تسمح هذه الخطوة للخدمة بالتمييز بين الجهازين الظاهريين بنفس اسم المضيف وتمكين تحميل وحدات تخزين NFSv4.1 على كلا الجهازين الظاهريين.

    تحتاج إلى تنفيذ هذه الخطوة على نظام التعافي من الكوارث الاختباري فقط. للتناسق، يمكنك التفكير في تطبيق إعداد فريد على كل جهاز ظاهري مضمن.

  2. في نظام الاختبار DR، أضف السطر التالي إلى nfsclient.conf الملف، الموجود عادة في /etc/modprobe.d/:

    options nfs nfs4_unique_id=uniquenfs4-1

    يمكن أن تكون السلسلة uniquenfs4-1 أي سلسلة أبجدية رقمية، طالما أنها فريدة عبر الأجهزة الظاهرية ليتم توصيلها بالخدمة.

    تحقق من وثائق التوزيع حول كيفية تكوين إعدادات عميل NFS.

    أعد تشغيل الجهاز الظاهري حتى يسري التغيير.

  3. في نظام التعافي من الكوارث الاختباري، تحقق من أنه nfs4_unique_id تم تعيينه بعد إعادة تشغيل الجهاز الظاهري:

    # systool -v -m nfs | grep -i nfs4_unique
    nfs4_unique_id = "uniquenfs4-1"

  4. قم بتحميل وحدة التخزين NFSv4.1 على كلا الجهازين الظاهريين كالمعتاد.

    يمكن الآن لكلا الجهازين الظاهريين اللذين يحملان نفس اسم المضيف تحميل وحدة التخزين NFSv4.1 والوصول إليها.

الخطوات التالية