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

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

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

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

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

    ملاحظة

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

تكوين RHEL 8

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

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

  • اسم النطاق: contoso.com
  • الملكية الفكرية الخاصة: 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 chrony افتراضيا. اتبع إرشادات التكوين في استخدام Chrony المجموعة لتكوين 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"

    تأكد من تعيين ذلك 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) لإعلانك، بدلا من استخدام عنوان 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 UID لجميع أنماط أسماء المستخدمين. يمكنك تحديد القيمة استنادا إلى تكوين العميل.
    • 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 المطلوبة لتشفير NFSv4.1 Kerberos والبروتوكول المزدوج.

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

  • اسم النطاق: contoso.com
  • الملكية الفكرية الخاصة: 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.

    للتحقق من 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 chrony افتراضيا. اتباع إرشادات التكوين في Ubuntu Bionic: استخدام chrony لتكوين 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

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

الخطوات التالية اختيارية. تحتاج إلى تنفيذ الخطوات فقط إذا كنت تريد استخدام تعيين المستخدم في عميل 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

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

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

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

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

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

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

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

    options nfs nfs4_unique_id=uniquenfs4-1

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

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

    أعد تشغيل الجهاز الظاهري ليصبح التغيير ساري المفعول.

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

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

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

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

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