Score:1

เมื่อพยายาม nfs4 เมานต์การแชร์ด้วย sec=krb5 ฉันได้รับข้อความแสดงข้อผิดพลาด "ไม่ได้ส่งออก" บนเซิร์ฟเวอร์ nfs

ธง pk

ฉันใช้เซิร์ฟเวอร์ nfs สองตัวที่มีโฮมไดเร็กทอรีของผู้ใช้และแชร์อื่นๆ เซิร์ฟเวอร์มีการเมานต์ nfsv4 แบบ kerberized เช่นเดียวกับ v3 แบบเก่า

จนกระทั่งเมื่อไม่นานมานี้ ฉันสามารถติดตั้ง nfs4-mount ของส่วนแบ่งที่ส่งออกด้วย krb5 ได้ จากเซิร์ฟเวอร์หนึ่งในเซิร์ฟเวอร์ที่สองโดยไม่มีปัญหาใดๆ ถ้าฉันพยายามตอนนี้ ฉันได้รับการปฏิเสธสิทธิ์และในบันทึกของเซิร์ฟเวอร์ nfs ฉันมักจะเห็นข้อผิดพลาดนี้แสดงอยู่ด้านล่าง ระบบไฟล์ที่มี userdata บนเซิร์ฟเวอร์ nfs อยู่ใน /export/user1 บนโฮสต์ server1.uni-ko.de และ /export/user2 บนโฮสต์ server2.uni-ko.de (เปลี่ยนชื่อโฮสต์) เส้นทาง /export/ ถูกใช้เป็นรูทการส่งออก nfs4 ทั่วไปที่ทำเครื่องหมายโดย fsid=0

## ทำงานบนโฮสต์ server1.uni-ko.de
# เมานต์ -t nfs4 -o วินาที = krb5 server2.uni-ko.de:/user2 /mnt
mount.nfs4: การเข้าถึงถูกปฏิเสธโดยเซิร์ฟเวอร์ขณะเมานต์ server2.uni-ko.de:/user2

และในบันทึกเซิร์ฟเวอร์ nfs ฉันเห็นข้อผิดพลาดนี้:

ปฏิเสธคำขอเมานต์จาก server1.uni-ko.de สำหรับ /user2 (/): ไม่ได้ส่งออก

สิ่งเดียวกันนี้จะเกิดขึ้นหากฉันพยายามเมานต์การแชร์ในเครื่องบนโฮสต์เดียวกัน ผ่าน nfs4 ดังนี้:

## บนโฮสต์ server1.uni-ko.de
# เมานต์ -t nfs4 -o วินาที = krb5 server1.uni-ko.de:/user1 /mnt
mount.nfs4: การเข้าถึงถูกปฏิเสธโดยเซิร์ฟเวอร์ขณะเมานต์ server1.uni-ko.de:/user1

การเมานต์ nfs3 (เมานต์ server1.uni-ko.de:/export/user1 /mnt) เป็นไปได้โดยไม่มีปัญหาใดๆ

ไฟล์ /etc/exports บนโฮสต์ server2.uni-ko.de มีลักษณะดังนี้:

/ส่งออก gss/krb5(rw,fsid=0,nohide,no_subtree_check,no_root_squash,async,crossmnt) \
       gss/krb5i(rw,fsid=0,nohide,no_subtree_check,no_root_squash,async,crossmnt) \
       gss/krb5p(rw,fsid=0,nohide,no_subtree_check,no_root_squash,async,crossmnt)
# NFS V3 ส่งออกผ่าน NIS netgroups
/export/user2 @nfsv3client(rw,async,no_subtree_check,no_subtree_check,fsid=2000)

exportfs -v แสดงการแชร์ (krb5-nfs4) ที่ส่งออก:

# exportfs -v
....
/ส่งออก gss/krb5(rw,async,wdelay,nohide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,no_root_squash,no_all_squash)
/ส่งออก gss/krb5i(rw,async,wdelay,nohide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,no_root_squash,no_all_squash)
/ส่งออก gss/krb5p(rw,async,wdelay,nohide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,no_root_squash,no_all_squash)
/export/user2 @nfsv3client(rw,async,wdelay,hide,no_subtree_check,fsid=2000,sec=sys,secure,root_squash,no_all_squash)

สิ่งต่าง ๆ แปลกไปกว่าเดิมตั้งแต่ไคลเอนต์ nfs4 เริ่มต้นฉันยังสามารถ nfs4 เมานต์ไดเร็กทอรีที่กำหนดโดยไม่มีปัญหาใด ๆ ตามที่อธิบายไว้ข้างต้น และทั้งสองระบบใช้ระบบปฏิบัติการเดียวกันในเวอร์ชันและระดับแพตช์เดียวกันซึ่งเป็น SuSE SLES15SP3 ล่าสุด ติดตั้งแพตช์แล้ว

บนเซิร์ฟเวอร์ nfs มีไฟร์วอลล์ทำงานเปิดพอร์ตที่กำหนดแบบคงที่ซึ่งจำเป็นสำหรับ NFS เช่น mountd,statd,lockd ตลอดจนพอร์ต 111 และ 2049 (ทั้งหมดเปิดสำหรับ tcp และ udp) นี่คือสิ่งที่ฉันเปลี่ยนเมื่อเร็ว ๆ นี้ ก่อนหน้านี้การเปลี่ยนแปลงพอร์ตเซิร์ฟเวอร์ nfs ไม่คงที่ แต่ตั้งค่าเป็นค่าเริ่มต้น แต่ฉันไม่เห็นว่าจะนำไปสู่พฤติกรรมการเมานต์แปลก ๆ ที่อธิบายไว้ได้อย่างไร ฉันยังปิดไฟร์วอลล์ทั้งหมดและทดสอบอีกครั้งด้วยผลลัพธ์เดียวกัน

เบื้องหลังมีเซิร์ฟเวอร์ kerberos ที่ทำงานโดยรักษาหลักการทั้งหมดที่จำเป็น สำหรับเซิร์ฟเวอร์ nfs และไคลเอนต์ nfs4 ทั้งหมด มีหลักการ "nfs" และ "โฮสต์" ที่พร้อมใช้งาน และแต่ละเซิร์ฟเวอร์และไคลเอนต์มีแท็บ /etc/krb5.keytab ที่มีหลักการ "nfs" และ "โฮสต์" ที่เอ็กซ์พอร์ตสำหรับโฮสต์นี้ แน่นอนว่าหลักการของผู้ใช้จะถูกเก็บไว้ในเซิร์ฟเวอร์ kerberos ด้วย ทั้งหมดนี้ทำงานได้อย่างไร้ที่ติเป็นเวลาหลายปีและยังคงเป็นเช่นนั้น ยกเว้นปัญหาที่อธิบายไว้ซึ่งเป็นปัญหาใหม่

Score:1
ธง pk

ปัญหาดูเหมือนจะได้รับการแก้ไข วิธีการแก้ปัญหาที่ฉันไม่คาดคิดในตอนแรกคือสองขั้นตอน:

  1. ฉันใช้ rpcdebug- คำสั่งเพื่อดีบักการเรียก nfs rpc และพบว่าข้อผิดพลาด "(/): ไม่ได้ส่งออก" เป็นผลมาจากการที่โฮสต์พยายามเมานต์ NFS4 ที่ใช้ร่วมกันซึ่งล้มเหลว (โดยไม่ทราบสาเหตุ) จากนั้นทิ้งไปยังเมานต์ NFS3 ซึ่งยัง ล้มเหลวเนื่องจากพาธเมานต์ที่กำหนดสำหรับ NFS4 ไม่มีพาธสำหรับระบบไฟล์ root fsid=0 ทั่วไปของ NFS4 (/export ในกรณีของฉัน) จริง ๆ แล้ว nfs4 ล้มเหลวโดยไม่มีข้อผิดพลาดใด ๆ ที่มองเห็นได้ และการเมานต์ nfs3 ล้มเหลวพร้อมกับข้อความแสดงข้อผิดพลาดที่ถูกต้อง เห็นได้ชัดว่า NFS4 เป็นตัวการ และฉันสามารถลืมเกี่ยวกับข้อความแสดงข้อผิดพลาด "ไม่ได้ส่งออก"

  2. หลังจากสำรวจรอบๆ ฉันได้ตรวจสอบเซิร์ฟเวอร์ kerberos ของเราอย่างละเอียดยิ่งขึ้น และสังเกตเห็นว่ามีการอัปเดตความปลอดภัยเมื่อเร็วๆ นี้ ซึ่งส่งผลให้มีเวอร์ชันใหม่กว่า (1.19.2) ฉันอ่านเอกสาร MIT (https://web.mit.edu/kerberos/krb5-latest/doc/admin/enctypes.html) เกี่ยวกับขั้นตอนที่ควรดำเนินการหลังจากการอัปเกรดเวอร์ชัน ส่วนหนึ่งคือการอัปเดตคีย์ที่ใช้ DES ภายในแบบเก่าหลายตัว (DES เลิกใช้แล้วและจะถูกทิ้งในไม่ช้า)ฉันมีคีย์ดังกล่าวบนเซิร์ฟเวอร์ kerberos ของเราชื่อ: แคดมิน/ประวัติ . ฉันอัปเดตคีย์นี้เป็นเอกสารโดยใช้ แคดมิน และหลังจากนั้นไม่นาน ฉันก็ค้นพบว่าปัญหาเมานต์ NFS4 หายไปแล้ว อย่างไรก็ตาม ฉันไม่เคยเห็นข้อความแสดงข้อผิดพลาด/คำเตือนใดๆ บนเซิร์ฟเวอร์ kerberos หรือบนเซิร์ฟเวอร์ NFS หรือไคลเอนต์เกี่ยวกับปัญหาเกี่ยวกับคีย์ kerberos เลย ดังนั้นฉันจึงเห็นว่าการติดตั้ง nfs4 ใช้งานได้อีกครั้ง แต่ฉันก็ยังสงสัยอยู่เล็กน้อยว่ามันเป็นเพียง kerberos des-key เท่านั้นที่ทำให้เกิดปัญหานี้หรือไม่ ...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา