Android

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

รำหน้าไฟ ทราวดี โรงเรียนเชียงคาน

รำหน้าไฟ ทราวดี โรงเรียนเชียงคาน

สารบัญ:

Anonim

Network File System (NFS) เป็นโปรโตคอลระบบไฟล์แบบกระจายที่ช่วยให้คุณแบ่งปันไดเรกทอรีระยะไกลผ่านเครือข่าย ด้วย NFS คุณสามารถติดตั้งรีโมตไดเร็กทอรีบนระบบของคุณและทำงานกับไฟล์บนเครื่องรีโมตราวกับว่าเป็นไฟล์โลคัล

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

ในบทช่วยสอนนี้คุณจะทำตามขั้นตอนที่จำเป็นในการตั้งค่าเซิร์ฟเวอร์ NFSv4 บน CentOS 8 นอกจากนี้เราจะแสดงวิธีติดตั้งระบบไฟล์ NFS ให้กับลูกค้า

ข้อกำหนดเบื้องต้น

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

เครื่องจักรในตัวอย่างนี้มี IP ดังต่อไปนี้:

NFS Server IP: 192.168.33.148 NFS Clients IPs: From the 192.168.33.0/24 range

ตั้งค่าเซิร์ฟเวอร์ NFS

ส่วนนี้อธิบายวิธีติดตั้งแพ็กเกจที่จำเป็นสร้างและเอ็กซ์พอร์ตไดเร็กทอรี NFS และกำหนดค่าไฟร์วอลล์

การติดตั้งเซิร์ฟเวอร์ NFS

แพ็กเกจ“ nfs-utils” จัดเตรียมยูทิลีตี NFS และ daemons สำหรับเซิร์ฟเวอร์ NFS หากต้องการติดตั้งให้รันคำสั่งต่อไปนี้:

sudo dnf install nfs-utils

เมื่อการติดตั้งเสร็จสมบูรณ์ให้เปิดใช้งานและเริ่มบริการ NFS โดยพิมพ์:

sudo systemctl enable --now nfs-server

โดยค่าเริ่มต้นเปิดใช้งาน CentOS 8 NFS เวอร์ชัน 3 และ 4.x แล้วเวอร์ชัน 2 จะถูกปิดใช้งาน ตอนนี้ NFSv2 ค่อนข้างเก่าและไม่มีเหตุผลที่จะเปิดใช้งาน หากต้องการตรวจสอบว่ารันคำสั่ง cat ต่อไปนี้:

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

ตัวเลือกการกำหนดค่าเซิร์ฟเวอร์ NFS ตั้งอยู่ในไฟล์ /etc/nfs.conf และ /etc/nfs.conf การตั้งค่าเริ่มต้นนั้นเพียงพอสำหรับการสอนของเรา

การสร้างระบบไฟล์

เมื่อกำหนดค่าเซิร์ฟเวอร์ NFSv4 เป็นแนวปฏิบัติที่ดีคือการใช้ไดเรกทอรีราก NFS ทั่วโลกและผูกติดไดเรกทอรีจริงไปยังจุดเชื่อมต่อที่ใช้ร่วมกัน ในตัวอย่างนี้เราจะใช้ /srv/nfs4 Director เป็น NFS root

เพื่ออธิบายวิธีการติดตั้ง NFS ให้ดีขึ้นเราจะแชร์สองไดเรกทอรี ( /var/www และ /opt/backups ) ด้วยการตั้งค่าการกำหนดค่าที่แตกต่างกัน

/var/www/ เป็นของผู้ใช้และกลุ่ม apache และ /opt/backups เป็นของ root

สร้างระบบไฟล์การส่งออกโดยใช้คำสั่ง mkdir :

sudo mkdir -p /srv/nfs4/{backups, www}

กำหนดไดเรกทอรีจริง:

sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www

หากต้องการทำให้การเชื่อมโยงเชื่อมโยงถาวรให้เพิ่มรายการต่อไปนี้ลงในไฟล์ /etc/fstab :

sudo nano /etc/fstab / etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

การเอ็กซ์พอร์ตระบบไฟล์

ขั้นตอนต่อไปคือการกำหนดระบบไฟล์ที่จะส่งออกโดยเซิร์ฟเวอร์ NFS ตัวเลือกการแบ่งใช้และไคลเอนต์ที่ได้รับอนุญาตให้เข้าถึงระบบไฟล์เหล่านั้น ในการเปิดไฟล์ /etc/exports ดังนี้

sudo nano /etc/exports

ส่งออกไดเรกทอรี www และการ backups และอนุญาตการเข้าถึงจากไคลเอนต์บนเครือข่าย 192.168.33.0/24 :

/ etc / ส่งออก

/srv/nfs4 192.168.33.0/24(rw, sync, no_subtree_check, crossmnt, fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro, sync, no_subtree_check) 192.168.33.3(rw, sync, no_subtree_check) /srv/nfs4/www 192.168.33.110(rw, sync, no_subtree_check)

บรรทัดแรกมี fsid=0 ซึ่งกำหนดไดเรกทอรีราก NFS /srv/nfs การเข้าถึงไดรฟ์ข้อมูล NFS นี้อนุญาตให้ไคลเอนต์จากเครือข่ายย่อย 192.168.33.0/24 เท่านั้น จำเป็นต้องใช้ตัวเลือก crossmnt เพื่อแชร์ไดเรกทอรีที่เป็นไดเรกทอรีย่อยของไดเรกทอรีที่ส่งออก

บรรทัดที่สองแสดงวิธีระบุกฎการเอ็กซ์พอร์ตหลายกฎสำหรับระบบไฟล์เดียว มันเอ็กซ์พอร์ต /srv/nfs4/backups และอนุญาตให้เข้าถึงแบบอ่านทั้งหมดในช่วง 192.168.33.0/24 ทั้งแบบอ่านและเขียนและเข้าถึง 192.168.33.3 ตัวเลือกการ sync บอกให้ NFS เขียนการเปลี่ยนแปลงไปยังดิสก์ก่อนตอบกลับ

บรรทัดสุดท้ายควรอธิบายตนเอง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกทั้งหมดที่มีให้พิมพ์ man exports ในเทอร์มินัลของคุณ

บันทึกไฟล์และส่งออกการแชร์:

sudo exportfs -ra

คุณต้องรันคำสั่งด้านบนทุกครั้งที่คุณแก้ไขไฟล์ /etc/exports หากมีข้อผิดพลาดหรือคำเตือนใด ๆ พวกเขาจะปรากฏบนเครื่อง

หากต้องการดูการส่งออกที่ใช้งานอยู่ในปัจจุบันและสถานะให้ใช้:

sudo exportfs -v

ผลลัพธ์จะรวมการแชร์ทั้งหมดด้วยตัวเลือก อย่างที่คุณเห็นมีตัวเลือกต่าง ๆ ที่เราไม่ได้กำหนดไว้ในไฟล์ /etc/exports สิ่งเหล่านี้เป็นตัวเลือกเริ่มต้นและหากคุณต้องการเปลี่ยนคุณจะต้องตั้งค่าตัวเลือกเหล่านั้นอย่างชัดเจน

/srv/nfs4/backups 192.168.33.3(sync, wdelay, hide, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(sync, wdelay, hide, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4 192.168.33.0/24(sync, wdelay, hide, crossmnt, no_subtree_check, fsid=0, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/backups 192.168.33.0/24(sync, wdelay, hide, no_subtree_check, sec=sys, ro, secure, root_squash, no_all_squash)

root_squash เป็นหนึ่งในตัวเลือกที่สำคัญที่สุดเกี่ยวกับความปลอดภัยของ NFS จะป้องกันผู้ใช้รูทที่เชื่อมต่อจากไคลเอนต์เพื่อรับสิทธิ์รูทในการแชร์ที่เมาท์ มันจะแม็ UID และ GID กับ nobody / nogroup UID / GID

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

แค่นั้นแหละ. ณ จุดนี้คุณได้ตั้งค่าเซิร์ฟเวอร์ NFS บนเซิร์ฟเวอร์ CentOS ของคุณ ตอนนี้คุณสามารถย้ายไปยังขั้นตอนถัดไปและกำหนดค่าไคลเอนต์และเชื่อมต่อกับเซิร์ฟเวอร์ NFS

การกำหนดค่าไฟร์วอลล์

FirewallD เป็นโซลูชันไฟร์วอลล์เริ่มต้นบน Centos 8

บริการ NFS มีกฎที่กำหนดไว้ล่วงหน้าเพื่ออนุญาตการเข้าถึงเซิร์ฟเวอร์ NFS

คำสั่งต่อไปนี้จะอนุญาตการเข้าถึงอย่างถาวรจากเครือข่ายย่อย 192.168.33.0/24 :

sudo firewall-cmd --new-zone=nfs --permanent sudo firewall-cmd --zone=nfs --add-service=nfs --permanent sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent sudo firewall-cmd --reload

ตั้งค่าไคลเอ็นต์ NFS

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

นอกจากนี้คุณยังสามารถกำหนดใช้ NFS แชร์บนเครื่อง macOS และ Windows ได้ แต่เราจะเน้นระบบ Linux

การติดตั้งไคลเอนต์ NFS

บนเครื่องของลูกค้าให้ติดตั้งเครื่องมือที่จำเป็นในการเมาท์ระบบไฟล์ NFS ระยะไกล

  • ติดตั้งไคลเอนต์ NFS บน Debian และ Ubuntu

    ชื่อของแพ็กเกจที่มีโปรแกรมสำหรับการเมาท์ระบบไฟล์ NFS บนการแจกแจงแบบเดเบียนคือ nfs-common หากต้องการติดตั้งให้เรียกใช้:

    sudo apt update sudo apt install nfs-common

    ติดตั้งไคลเอนต์ NFS บน CentOS และ Fedora

    บน Red Hat และอนุพันธ์ติดตั้งแพ็คเกจ nfs-utils :

    sudo yum install nfs-utils

ติดตั้งระบบไฟล์

เราจะทำงานบนเครื่องไคลเอนต์ที่มี IP 192.168.33.110 ซึ่งมีการอ่านและเขียนการเข้าถึงระบบไฟล์ /srv/nfs4/www และการเข้าถึงระบบไฟล์ /srv/nfs4/backups แบบอ่านอย่างเดียว

สร้างสองไดเรกทอรีใหม่สำหรับจุดเชื่อมต่อ คุณสามารถสร้างไดเรกทอรีเหล่านี้ได้ทุกที่ที่คุณต้องการ

sudo mkdir -p /backups sudo mkdir -p /srv/www

เมาท์ระบบไฟล์ที่เอ็กซ์พอร์ตด้วยคำสั่ง mount :

sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.148:/www /srv/www

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

เมื่อติดตั้งระบบไฟล์ NFSv4 คุณต้องละเว้นไดเรกทอรีรูทของ NFS ดังนั้นแทนที่จะเป็น /srv/nfs4/backups คุณต้องใช้ /backups

ตรวจสอบว่าระบบไฟล์รีโมตถูกเมาต์สำเร็จโดยใช้คำสั่ง mount หรือ df :

df -h

คำสั่งจะพิมพ์ระบบไฟล์ที่เมาท์ทั้งหมด สองบรรทัดสุดท้ายคือการแบ่งใช้ที่เมาท์:

… 192.168.33.148:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.148:/www 9.7G 1.2G 8.5G 13% /srv/www

หากต้องการทำให้การเมาต์เป็นแบบถาวรเมื่อรีบูตให้เปิดไฟล์ /etc/fstab :

sudo nano /etc/fstab

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

/ etc / fstab

192.168.33.148:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.148:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

ในการค้นหาข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกที่มีอยู่เมื่อติดตั้งระบบไฟล์ NFS ให้พิมพ์ man nfs ในเทอร์มินัลของคุณ

ตัวเลือกอื่นสำหรับเมาท์ระบบไฟล์รีโมตคือการใช้เครื่องมือ autofs หรือเพื่อสร้าง systemd unit

ทดสอบการเข้าถึง NFS

ลองทดสอบการเข้าถึงการแชร์โดยการสร้างไฟล์ใหม่ในแต่ละไฟล์

ก่อนอื่นให้ลองสร้างไฟล์ทดสอบไปยังไดเร็กทอรี /backups โดยใช้คำสั่ง touch :

sudo touch /backups/test.txt

ระบบไฟล์ /backup ถูกส่งออกเป็นแบบอ่านอย่างเดียวและตามที่คาดไว้คุณจะเห็นข้อความแสดงข้อผิดพลาดที่ Permission denied :

touch: cannot touch '/backups/test': Permission denied

จากนั้นลองสร้างไฟล์ทดสอบไปยังไดเร็กทอรี /srv/www เป็นรูทโดยใช้คำสั่ง sudo :

sudo touch /srv/www/test.txt

อีกครั้งคุณจะเห็นข้อความ Permission denied

touch: cannot touch '/srv/www': Permission denied

ไดเร็กทอรี /var/www เป็นเจ้าของโดยผู้ใช้ apache และการแชร์นี้มีชุดตัวเลือก root_squash ซึ่งจะจับคู่ผู้ใช้รูทกับผู้ใช้ที่ nobody และกลุ่ม nogroup ที่ไม่มีสิทธิ์ในการเขียนไปยังรีโมตแชร์

สมมติว่ามี apache ผู้ใช้อยู่ในเครื่องไคลเอนต์ที่มี UID และ GID เดียวกันกับเซิร์ฟเวอร์ระยะไกล (ซึ่งควรเป็นกรณีตัวอย่างเช่นถ้าคุณติดตั้ง apache บนเครื่องทั้งสอง) คุณสามารถทดสอบเพื่อสร้างไฟล์เป็น apache ผู้ใช้ ด้วย:

sudo -u apache touch /srv/www/test.txt

คำสั่งจะไม่แสดงผลลัพธ์ซึ่งหมายความว่าสร้างไฟล์สำเร็จ

หากต้องการตรวจสอบรายการไฟล์ในไดเร็กทอรี /srv/www :

ls -la /srv/www

ผลลัพธ์ควรแสดงไฟล์ที่สร้างขึ้นใหม่:

drwxr-xr-x 3 apache apache 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 apache apache 0 Jun 23 21:58 index.html -rw-r--r-- 1 apache apache 0 Jun 23 22:18 test.txt

การถอนติดตั้งระบบไฟล์ NFS

sudo umount /backups

หากกำหนดจุดเชื่อมต่อในไฟล์ /etc/fstab ตรวจสอบให้แน่ใจว่าคุณลบบรรทัดหรือใส่ความคิดเห็นโดยเพิ่ม # ที่จุดเริ่มต้นของบรรทัด

ข้อสรุป

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

เป็นทางเลือกแทน NFS คุณสามารถใช้ SSHFS เพื่อเมานต์รีโมตไดเร็กทอรีผ่านการเชื่อมต่อ SSH SSHFS ถูกเข้ารหัสโดยค่าเริ่มต้นและง่ายต่อการกำหนดค่าและใช้งาน

อย่าลังเลที่จะแสดงความคิดเห็นหากคุณมีคำถามใด ๆ

centos nfs เมาท์เทอร์มินัล