ฉันใช้เซิร์ฟเวอร์ 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 ด้วย ทั้งหมดนี้ทำงานได้อย่างไร้ที่ติเป็นเวลาหลายปีและยังคงเป็นเช่นนั้น ยกเว้นปัญหาที่อธิบายไว้ซึ่งเป็นปัญหาใหม่