Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

การกำหนดค่าเซิร์ฟเวอร์ NFS และไคลเอนต์บน Linux CentOS/RHEL

ระบบไฟล์เครือข่าย (NFS) เป็นโปรโตคอลระบบไฟล์แบบกระจายสำหรับการแชร์ไฟล์และโฟลเดอร์ NFS ขึ้นอยู่กับ Remote Procedure Protocol (ONC RPC) NFS อนุญาตให้เมาต์ระบบไฟล์ระยะไกลบนเครือข่าย โปรดจำไว้ว่าโดยค่าเริ่มต้นข้อมูลจะไม่ถูกเข้ารหัสเมื่อใช้ NFS และไคลเอนต์จะไม่ได้รับการรับรอง (การเข้าถึงสามารถถูกจำกัดโดย IP)

NFS นั้นง่ายต่อการกำหนดค่าทั้งบนเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ ในบทความนี้ เราจะแสดงวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ NFS จากนั้นเราจะเชื่อมต่อการแชร์ NFS บนไคลเอนต์ บทความนี้อิงจากลีนุกซ์ที่ใช้ RPM (CentOS, RHEL, Fedora เป็นต้น)

วิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ NFS บน Linux CentOS

ตามค่าเริ่มต้น nfs ได้รับการติดตั้งใน CentOS ด้วยแพ็คเกจมาตรฐานแล้ว หากคุณลบส่วนประกอบ NFS หรือใช้โหมดการติดตั้งขั้นต่ำสำหรับเซิร์ฟเวอร์ของคุณ คุณสามารถติดตั้งแพ็คเกจ NFS โดยใช้ตัวจัดการแพ็คเกจ yum (หรือ dnf):

ใน CentOS 8:

# dnf install nfs-utils -y

ฉันติดตั้งแพ็คเกจแล้ว:

การกำหนดค่าเซิร์ฟเวอร์ NFS และไคลเอนต์บน Linux CentOS/RHEL

เวอร์ชันเซิร์ฟเวอร์ NFS ปัจจุบันรองรับเวอร์ชันโปรโตคอล NFSv3 และ NFSv4 NFSv2 ถูกปิดใช้งานโดยค่าเริ่มต้น คุณสามารถรับรายการเวอร์ชัน NFS ที่รองรับได้โดยใช้คำสั่งนี้:

cat /proc/fs/nfsd/versions

หลังจากที่คุณได้ติดตั้งแพ็คเกจทั้งหมดที่คุณต้องการแล้ว ให้เริ่มบริการ nfs-server และ rpcbind และเพิ่มไปยังการเริ่มต้น:

# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server

หากคุณต้องการใช้เฉพาะ NFSv4.1/4.2 คุณไม่จำเป็นต้องเรียกใช้ rpcbind

หากคุณใช้ firewalld บนโฮสต์ Linux ให้เปิดพอร์ตต่อไปนี้:

# firewall-cmd --permanent --add-port=111/tcp
# firewall-cmd --permanent --add-port=20048/tcp
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=mountd
# firewall-cmd --permanent --zone=public --add-service=rpc-bind
# firewall-cmd --reload

การกำหนดค่าเซิร์ฟเวอร์ NFS และไคลเอนต์บน Linux CentOS/RHEL

สำหรับผู้ที่ใช้ iptables:

# iptables -t filter -A INPUT -p tcp --dport 111 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 2049 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 20048 -j ACCEPT
# service iptables save
# service iptables restart

จากนั้นสร้างไดเร็กทอรีที่เซิร์ฟเวอร์ NFS ของคุณจะแชร์:

# mkdir -p /backup/nfs
# chmod -R 777 /backup/nfs

เผยแพร่การแชร์ NFS และกำหนดสิทธิ์การเข้าถึงในไฟล์การกำหนดค่าที่มีการตั้งค่าเซิร์ฟเวอร์ NFS (/etc/exports)

# nano /etc/exports

เพิ่มบรรทัดต่อไปนี้ในการกำหนดค่าเพื่อให้สิทธิ์การเข้าถึง NFS แก่โฮสต์ทั้งหมดในเครือข่ายย่อย IP ที่ระบุ:

/backup/nfs 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)

หรือคุณสามารถจำกัดการเข้าถึงที่อยู่ IP เดียวเท่านั้น:

/backup/nfs 192.168.2.24(rw,sync,no_root_squash,no_all_squash, anonuid=1000,anongid=1000) 192.168.3.100 (ro,async,no_subtree_check)

มาดูกันว่าพารามิเตอร์ใดบ้างที่ใช้เพื่อให้สิทธิ์บนไดเร็กทอรี NFS:

  • รวว – ให้สิทธิ์การเขียน ro – ให้การเข้าถึงแบบอ่านอย่างเดียว
  • ซิงค์ – โหมดการเข้าถึงแบบซิงโครนัส อะซิงโครนัส หมายความว่าคุณไม่จำเป็นต้องรอการยืนยันการเขียนบนดิสก์ (ช่วยปรับปรุงประสิทธิภาพ NFS แต่ลดความน่าเชื่อถือลง)
  • no_root_squash – อนุญาตให้ผู้ใช้รูทเข้าถึงไดเร็กทอรี NFS จากไคลเอนต์ (โดยปกติไม่แนะนำ)
  • no_all_squash – เปิดใช้งานการตรวจสอบผู้ใช้ all_squash – อนุญาตให้เข้าถึงการแชร์ NFS ภายใต้ผู้ใช้ที่ไม่ระบุชื่อ
  • no_subtree_check – ปิดใช้งานการตรวจสอบที่ผู้ใช้เข้าถึงไฟล์ในไดเร็กทอรี (subtree_check ถูกใช้โดยค่าเริ่มต้น)
  • อนงอิด อนงค์อิด – แมปผู้ใช้/กลุ่ม NFS กับผู้ใช้/กลุ่มในเครื่องที่ระบุ (UID หรือ GID )

หากต้องการใช้การตั้งค่าการแชร์ NFS ใหม่ ให้เรียกใช้คำสั่งต่อไปนี้:

# exportfs -a

และรีสตาร์ทเซิร์ฟเวอร์ NFS:

# systemctl restart nfs-server

ดังนั้น เราจึงกำหนดค่าเซิร์ฟเวอร์ NFS ของเราเสร็จแล้วและอาจดำเนินการกำหนดค่าไคลเอนต์ต่อไป

การกำหนดค่าไคลเอ็นต์ NFS บน CentOS

ในการกำหนดค่าไคลเอ็นต์ NFS คุณต้องติดตั้งแพ็คเกจ nfs-utils ด้วย

# yum install nfs-utils -y

เพิ่มบริการเพื่อเริ่มต้นและเริ่มต้น:

# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server

จากนั้นสร้างไดเร็กทอรีบนไคลเอนต์ที่ไดเร็กทอรี NFS จะถูกเมาต์ไปที่:

# mkdir /backup

จากนั้น คุณสามารถเมานต์การแชร์ NFS ระยะไกลได้โดยใช้คำสั่งนี้:

# mount -t nfs 192.168.0.100:/backup/nfs/ /backup

คุณบังคับให้ใช้เวอร์ชันของโปรโตคอล NFS ได้:

# mount -t nfs -o vers=4 192.168.0.100:/backup/nfs/ /backup

โดยที่ IP คือที่อยู่ของเซิร์ฟเวอร์ NFS ที่คุณได้กำหนดค่าไว้ก่อนหน้านี้

การกำหนดค่าเซิร์ฟเวอร์ NFS และไคลเอนต์บน Linux CentOS/RHEL

จากนั้นการแชร์ NFS ที่เชื่อมต่อจะแสดงในรายการไดรฟ์ที่ต่อเชื่อม คุณสามารถอ่านข้อมูลในไดเร็กทอรีหรือเขียนลงในไดเร็กทอรี (ขึ้นอยู่กับการอนุญาตที่กำหนดให้กับที่อยู่ IP ของคุณบนเซิร์ฟเวอร์ NFS) ในการต่อเชื่อมไดเร็กทอรี NFS โดยอัตโนมัติเมื่อรีบูต คุณต้องเปิด fstab ไฟล์:

# nano /etc/fstab

และเพิ่มบรรทัดต่อไปนี้ลงไป:

192.168.0.100:/backup/nfs/ /backup/ nfs rw,sync,hard,intr 0 0

หลังจากบันทึก fstab แล้ว คุณสามารถใช้กับคำสั่งนี้:

# mount -a

ดังนั้นเราจึงกำหนดค่าและเชื่อมต่อที่เก็บข้อมูล NFS ระยะไกล ซึ่งสามารถใช้สำหรับการเข้าถึงเครือข่ายที่โปร่งใสไปยังทรัพยากรที่ใช้ร่วมกันจากโฮสต์ต่างๆ คุณวางข้อมูลสำรอง ไฟล์อิมเมจ ISO ฯลฯ ในไดเร็กทอรี NFS ได้