NFS hay Hệ thống tệp mạng là một giao thức mạng cho phép bạn gắn hệ thống tệp từ xa qua mạng. Giao thức NFS sử dụng kiến trúc máy khách-máy chủ: máy chủ NFS cung cấp tất cả các thư mục hoặc phân vùng có thể truy cập và máy khách truy cập tất cả các thư mục và hệ thống tệp thông qua kết nối mạng nội bộ bằng giao thức rpcbind.
Trạng thái hiện tại của giao thức Hệ thống tệp mạng được mô tả bên dưới.
Trước khi chuyển sang cài đặt, hãy chạy lệnh apt bên dưới để cập nhật kho lưu trữ Debian và lấy thông tin gói mới nhất.
Bây giờ hãy cài đặt gói máy chủ NFS nfs-kernel-server bằng lệnh apt bên dưới. Nhập y để xác nhận cài đặt và nhấn ENTER.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22658%22%20height=%22290%22%3E%3C/svg%3E
Sau khi gói nfs-kernel-server được cài đặt, dịch vụ nfs-server sẽ được tạo, chạy và được bật theo mặc định trên máy Debian của bạn. Thực hiện các lệnh systemctl sau để xác minh dịch vụ nfs-server và đảm bảo rằng dịch vụ được bật và đang chạy.
Bạn sẽ thấy đầu ra được bật, nghĩa là nfs-server sẽ tự động chạy khi hệ thống khởi động. Bạn sẽ thấy thông báo active (đã thoát) hoặc active (đang chạy) khi chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22180%22%3E%3C/svg%3E
Ngoài ra, bạn có thể sử dụng lệnh sau để bắt đầu, khởi động lại và dừng dịch vụ nf-server.
Mở cấu hình NFS mặc định /etc/default/nfs-common bằng lệnh nano editor.
Thay đổi tham số NEED_STATD thành no và NEED_IDMAPD thành yes. NFSv4 yêu cầu NEED_IDMAPD sẽ được sử dụng làm daemon ánh xạ ID và cung cấp chức năng giữa máy chủ và máy khách.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Bây giờ hãy mở cấu hình máy chủ NFS /etc/default/nfs-kernel-server bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm cấu hình sau để vô hiệu hóa NFSv2 và NFSv3 khi chạy dịch vụ nfs-server và vô hiệu hóa yêu cầu gắn kết từ máy khách đối với cả NFSv2 và NFSv3.
Lưu và thoát tệp khi bạn hoàn tất.
Cuối cùng, thực hiện lệnh sau để khởi động lại dịch vụ nfs-server và áp dụng các thay đổi. Với lệnh này, máy chủ NFS của bạn sẽ chỉ chấp nhận giao thức NFSv4.
Nếu UFW chưa được cài đặt, hãy chạy lệnh apt bên dưới để cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22612%22%20height=%22261%22%3E%3C/svg%3E
Sau khi UFW được cài đặt, hãy thực thi lệnh ufw bên dưới để cho phép Dịch vụ SSH và kích hoạt UFW. Nhập y và nhấn ENTER để xác nhận và bật UFW.
Bạn sẽ nhận được thông báo "Tường lửa đang hoạt động và được bật khi khởi động hệ thống" khi UFW đang chạy và được bật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22725%22%20height=%22209%22%3E%3C/svg%3E
Tiếp theo, thực hiện lệnh ufw sau để cho phép mạng con cục bộ của bạn để truy cập vào máy chủ NFS. Lệnh sau sẽ cho phép 192.168.10.0/24 truy cập máy chủ NFS.
Cuối cùng, thực hiện lệnh ufw sau để tải lại và xác minh trạng thái UFW.
Bạn sẽ thấy cổng NFS 2049 được thêm vào UFW; chỉ có mạng con 192.168.10.0/24 mới có thểtruy cập vào cổng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22626%22%20height=%22235%22%3E%3C/svg%3E
Trong phần sau, bạn sẽ thiết lập một hệ thống tệp giả trên máy chủ NFS và sử dụng nó làm hệ thống tệp chia sẻ duy nhất cho các máy khách NFS.
Chạy lệnh sau để tạo các thư mục mới /shared, /shared/data và /shared/documents. Sau đó, thay đổi quyền sở hữu thành nobody và nogroup thông qua chown.
Bây giờ hãy tạo các thư mục khác /exports, /exports/home, /exports/data và /exports/documents bằng lệnh bên dưới. Và hãy chắc chắn thay đổi quyền sở hữu thành nobody và nogroup.
Tiếp theo, gắn thư mục /home dưới dạng hệ thống tệp giả vào thư mục /exports/home, thư mục chia sẻ /shared/data vào /exports/data và thư mục chia sẻ /shared/documents vào /exports/documents.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22663%22%20height=%22221%22%3E%3C/svg%3E
Kiểm tra danh sách các hệ thống tệp đã gắn kết bằng lệnh df bên dưới. Tham số -a được sử dụng để hiển thị tất cả các hệ thống tệp có sẵn, bao gồm cả hệ thống tệp giả.
Bạn sẽ thấy ba hệ thống tệp giả có sẵn và được gắn kết.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%2294%22%3E%3C/svg%3E
Bạn cũng có thể thiết lập hệ thống tệp giả vĩnh viễn thông qua Tệp /etc/fstab. Mở tệp /etc/fstab bằng trình chỉnh sửa nano.
Thêm cấu hình sau vào tệp:
Lưu và đóng tệp sau khi hoàn tất.
Bạn có thể thêm thư mục đã xuất /exports vào máy chủ NFS dưới dạng hệ thống tệp giả.
Mở tệp /etc/exports bằng lệnh nano editor sau.
Thêm dòng sau vào tệp.
Lưu và đóng tệp khi hoàn tất.
Dưới đây là một số tùy chọn NFS được sử dụng cho trường hợp này:
Bạn sẽ thấy đầu ra như thế này:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22253%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh sau để kiểm tra thư mục và hệ thống tệp đã xuất trên máy chủ NFS bằng lệnh sau.
Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy thư mục /exports được xuất trên máy chủ NFS.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22522%22%20height=%22181%22%3E%3C/svg%3E
Đăng nhập vào máy khách và cập nhật kho lưu trữ Debian để nhận thông tin gói mới nhất. Sau đó, cài đặt gói nfs-common thông qua lệnh apt bên dưới.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22584%22%20height=%22195%22%3E%3C/svg%3E
Sau khi cài đặt xong gói, hãy chạy lệnh sau để tạo các thư mục gắn kết mục tiêu /users, /data và /documents.
Tiếp theo, chạy lệnh mount.nfs4 bên dưới để gắn hệ thống tệp giả đã xuất vào thư mục đích. Trong trường hợp này, hệ thống tập tin giả /home được gắn vào thư mục /users, /data vào thư mục /data và /documents vào thư mục /documents.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22631%22%20height=%22245%22%3E%3C/svg%3E
Kiểm tra danh sách các hệ thống tệp đã gắn kết bằng lệnh df bên dưới.
Nếu thành công, bạn sẽ thấy từng hệ thống tệp giả từ máy chủ NFS được gắn kết vào từng thư mục đích như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22657%22%20height=%22348%22%3E%3C/svg%3E
Ngoài ra, bạn cũng có thể gắn gốc của hệ thống tập tin giả như thế này. Nếu bạn kiểm tra thư mục đích /nfs, bạn sẽ thấy ba thư mục khác nhau /home, /data và /documents.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22541%22%20height=%22193%22%3E%3C/svg%3E
Trước tiên, hãy xóa máy chủ NFS thông qua lệnh umount bên dưới.
Bây giờ hãy mở tệp /etc/fstab bằng trình chỉnh sửa nano sau lệnh.
Thêm các dòng sau vào tệp.
Lưu tệp và thoát khỏi trình chỉnh sửa sau khi hoàn tất.
Tiếp theo, chạy lệnh systemctl bên dưới để khởi động lại trình quản lý systemd. Sau đó, chạy lệnh mount để mount tất cả các hệ thống tệp có sẵn trong tệp /etc/fstab.
Sau đó, hãy xác minh danh sách các hệ thống tệp đã gắn kết bằng lệnh df sau. Nếu thành công, bạn sẽ thấy máy chủ NFS được gắn kết vào từng thư mục đích.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%22572%22%3E%3C/svg%3E
Bạn cũng có thể thử khởi động lại máy khách để xem hiệu ứng. Nếu mọi thứ diễn ra tốt đẹp, máy chủ NFS sẽ được tự động gắn kết thông qua tệp /etc/fstab.
Cuối cùng, bạn cũng đã hoàn tất cấu hình máy khách NFS trên máy Debian và cấu hình thành công máy chủ NFS tự động gắn kết thông qua tệp /etc/fstab trên máy Ubuntu của bạn. Bây giờ bạn có thể bắt đầu cấu hình nó sao cho phù hợp với nhu cầu của mình.
Trạng thái hiện tại của giao thức Hệ thống tệp mạng được mô tả bên dưới.
- NFSv2 và NFSv3 vẫn được các hệ điều hành chính hỗ trợ, nhưng vì lý do bảo mật, bạn phải hạn chế quyền truy cập vào máy chủ NFS đối với mạng cục bộ đáng tin cậy. NFSv2 và NFSv3 được khuyến nghị cho các triển khai vừa và nhỏ.
- Giao thức NFSv4 cung cấp các tính năng bảo mật cơ bản như xác thực và mã hóa, nhưng dựa vào Kerberos cho các phần này. Vì vậy, bạn cần thực hiện các cấu hình bổ sung để sử dụng NFSv4 với các tính năng bảo mật cơ bản.
Điều kiện tiên quyết
Để hoàn thành hướng dẫn này, hãy đảm bảo bạn có những điều sau:- Hai máy chủ Debian 12 - Trong trường hợp này, máy chủ bookworm có địa chỉ IP 192.168.10.15 sẽ được sử dụng làm máy chủ NFS và máy chủ client1 có địa chỉ IP 192.168.10.20 sẽ được sử dụng làm máy khách NFS.
- Người dùng không phải root có quyền sudo/administrator.
Cài đặt máy chủ NFS
NFS hay Hệ thống tệp mạng là giao thức chia sẻ tệp phân tán. Trên Linux, bao gồm Debian, gói NFS có sẵn theo mặc định trên kho lưu trữ chính thức. Hoàn tất bước đầu tiên bên dưới để cài đặt gói máy chủ NFS và tìm hiểu cách quản lý dịch vụ máy chủ NFS.Trước khi chuyển sang cài đặt, hãy chạy lệnh apt bên dưới để cập nhật kho lưu trữ Debian và lấy thông tin gói mới nhất.
Mã:
sudo apt update
Mã:
sudo apt install nfs-kernel-server nfs-common
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22658%22%20height=%22290%22%3E%3C/svg%3E
Sau khi gói nfs-kernel-server được cài đặt, dịch vụ nfs-server sẽ được tạo, chạy và được bật theo mặc định trên máy Debian của bạn. Thực hiện các lệnh systemctl sau để xác minh dịch vụ nfs-server và đảm bảo rằng dịch vụ được bật và đang chạy.
Mã:
sudo systemctl is-enabled nfs-server
sudo systemctl status nfs-server
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22180%22%3E%3C/svg%3E
Ngoài ra, bạn có thể sử dụng lệnh sau để bắt đầu, khởi động lại và dừng dịch vụ nf-server.
Mã:
sudo systemctl start nfs-server
sudo systemctl restart nfs-server
sudo systemctl stop nfs-server
Cấu hình NFSv4
Hiện tại, phiên bản mới nhất của giao thức NFS là v4, được cải tiến về bảo mật và hiệu suất. Trong phần sau, bạn sẽ tìm hiểu cách thiết lập và kích hoạt NFSv4 trên máy chủ NFS của mình.Mở cấu hình NFS mặc định /etc/default/nfs-common bằng lệnh nano editor.
Mã:
sudo nano /etc/default/nfs-common
Mã:
NEED_STATD="no"
NEED_IDMAPD="yes"
Bây giờ hãy mở cấu hình máy chủ NFS /etc/default/nfs-kernel-server bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/default/nfs-kernel-server
Mã:
RPCNFSDOPTS="-N 2 -N 3"
RPCMOUNTDOPTS="--manage-gids -N 2 -N 3"
Cuối cùng, thực hiện lệnh sau để khởi động lại dịch vụ nfs-server và áp dụng các thay đổi. Với lệnh này, máy chủ NFS của bạn sẽ chỉ chấp nhận giao thức NFSv4.
Mã:
sudo systemctl restart nfs-server
Cấu hình Tường lửa thông qua UFW
Bật firewalld trên máy chủ NFS của bạn là điều bắt buộc, bạn có thể giới hạn các mạng nội bộ có thể truy cập vào máy chủ NFS. Hoàn tất bước này để cấu hình UFW (Tường lửa đơn giản) và bảo mật máy chủ NFS của bạn.Nếu UFW chưa được cài đặt, hãy chạy lệnh apt bên dưới để cài đặt.
Mã:
sudo apt install ufw -y
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22612%22%20height=%22261%22%3E%3C/svg%3E
Sau khi UFW được cài đặt, hãy thực thi lệnh ufw bên dưới để cho phép Dịch vụ SSH và kích hoạt UFW. Nhập y và nhấn ENTER để xác nhận và bật UFW.
Mã:
sudo ufw allow ssh
sudo ufw enable
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22725%22%20height=%22209%22%3E%3C/svg%3E
Tiếp theo, thực hiện lệnh ufw sau để cho phép mạng con cục bộ của bạn để truy cập vào máy chủ NFS. Lệnh sau sẽ cho phép 192.168.10.0/24 truy cập máy chủ NFS.
Mã:
sudo ufw allow from 192.168.10.0/24 to any port nfs
Mã:
sudo ufw reload
sudo ufw status
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22626%22%20height=%22235%22%3E%3C/svg%3E
Thiết lập Hệ thống tệp giả và Xuất
Hệ thống tệp giả là hệ thống tệp giả cho phép bạn thiết lập thư mục chia sẻ NFS thành một hệ thống tệp duy nhất. Vì vậy, thay vì sử dụng nhiều thư mục chia sẻ, bạn có thể sử dụng một hệ thống tệp giả duy nhất cho tất cả các thư mục chia sẻ của mình.Trong phần sau, bạn sẽ thiết lập một hệ thống tệp giả trên máy chủ NFS và sử dụng nó làm hệ thống tệp chia sẻ duy nhất cho các máy khách NFS.
Chạy lệnh sau để tạo các thư mục mới /shared, /shared/data và /shared/documents. Sau đó, thay đổi quyền sở hữu thành nobody và nogroup thông qua chown.
Mã:
mkdir -p /shared/{data,documents}
sudo chown -R nobody:nogroup /shared
Mã:
mkdir -p /exports/{data,home,documents}
sudo chown -R nobody:nogroup /exports
Mã:
sudo mount --bind /home /exports/home
sudo mount --bind /shared/data /exports/data
sudo mount --bind /shared/documents /exports/documents
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22663%22%20height=%22221%22%3E%3C/svg%3E
Kiểm tra danh sách các hệ thống tệp đã gắn kết bằng lệnh df bên dưới. Tham số -a được sử dụng để hiển thị tất cả các hệ thống tệp có sẵn, bao gồm cả hệ thống tệp giả.
Mã:
sudo df -ah
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%2294%22%3E%3C/svg%3E
Bạn cũng có thể thiết lập hệ thống tệp giả vĩnh viễn thông qua Tệp /etc/fstab. Mở tệp /etc/fstab bằng trình chỉnh sửa nano.
Mã:
sudo nano /etc/fstab
Mã:
/home /exports/home none bind
/shared/data /exports/data none bind
/shared/documents /exports/documents none bind
Bạn có thể thêm thư mục đã xuất /exports vào máy chủ NFS dưới dạng hệ thống tệp giả.
Mở tệp /etc/exports bằng lệnh nano editor sau.
Mã:
sudo nano /etc/exports
Mã:
/exports 192.168.10.0/255.255.255.0(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)
Dưới đây là một số tùy chọn NFS được sử dụng cho trường hợp này:
- rw : cho phép truy cập đọc và ghi cho cả máy chủ và máy khách NFS vào ổ đĩa/thư mục.
- no_subtree_check : vô hiệu hóa kiểm tra cây con, có tác động nhẹ đến bảo mật nhưng có thể cải thiện độ tin cậy trong một số trường hợp.
- no_root_sqash : vô hiệu hóa root squashing. Tùy chọn này chủ yếu hữu ích cho các máy khách không có đĩa.
- fsid=0 : đối với NFSv4, tham số này được sử dụng để thông báo cho máy chủ NFS rằng lệnh xuất này là gốc của tất cả các hệ thống tệp đã xuất.
Mã:
sudo systemctl restart nfs-server
sudo systemctl status nfs-server
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22253%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh sau để kiểm tra thư mục và hệ thống tệp đã xuất trên máy chủ NFS bằng lệnh sau.
Mã:
sudo showmount -e 192.168.10.15
sudo showmount -e
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22522%22%20height=%22181%22%3E%3C/svg%3E
Thiết lập NFS Máy khách
Tại thời điểm này, bạn đã cấu hình máy chủ NFS với hệ thống tệp giả và bảo mật máy chủ NFS thông qua UFW. Bây giờ, bạn sẽ thiết lập máy khách Debian và gắn hệ thống tệp chia sẻ máy chủ NFS.Đăng nhập vào máy khách và cập nhật kho lưu trữ Debian để nhận thông tin gói mới nhất. Sau đó, cài đặt gói nfs-common thông qua lệnh apt bên dưới.
Mã:
sudo apt update
sudo apt install nfs-common
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22584%22%20height=%22195%22%3E%3C/svg%3E
Sau khi cài đặt xong gói, hãy chạy lệnh sau để tạo các thư mục gắn kết mục tiêu /users, /data và /documents.
Mã:
mkdir -p /users /data /documents
Mã:
sudo mount.nfs4 192.168.10.15:/home /users
sudo mount.nfs4 192.168.10.15:/data /data
sudo mount.nfs4 192.168.10.15:/documents /documents
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22631%22%20height=%22245%22%3E%3C/svg%3E
Kiểm tra danh sách các hệ thống tệp đã gắn kết bằng lệnh df bên dưới.
Mã:
sudo df -h
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22657%22%20height=%22348%22%3E%3C/svg%3E
Ngoài ra, bạn cũng có thể gắn gốc của hệ thống tập tin giả như thế này. Nếu bạn kiểm tra thư mục đích /nfs, bạn sẽ thấy ba thư mục khác nhau /home, /data và /documents.
Mã:
mkdir -p /nfs
sudo mount.nfs4 192.168.10.15:/ /nfs -o soft,intr,rsize=8192,wsize=8192
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22541%22%20height=%22193%22%3E%3C/svg%3E
Gắn máy chủ NFS qua /etc/fstab
Ở trên cùng, bạn đã gắn máy chủ NFS thông qua lệnh mount.nfs4. Phần sau sẽ chỉ cho bạn cách gắn máy chủ NFS vĩnh viễn thông qua tệp /etc/fstab.Trước tiên, hãy xóa máy chủ NFS thông qua lệnh umount bên dưới.
Mã:
sudo umount /users /data /documents
Mã:
sudo nano /etc/fstab
Mã:
192.168.10.15:/home /users nfs4 soft,intr,rsize=8192,wsize=8192
192.168.10.15:/data /data nfs4 soft,intr,rsize=8192,wsize=8192
192.168.10.15:/documents /documents nfs4 soft,intr,rsize=8192,wsize=8192
Tiếp theo, chạy lệnh systemctl bên dưới để khởi động lại trình quản lý systemd. Sau đó, chạy lệnh mount để mount tất cả các hệ thống tệp có sẵn trong tệp /etc/fstab.
Mã:
sudo systemctl daemon-reload
sudo mount -a
Mã:
sudo df -h
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%22572%22%3E%3C/svg%3E
Bạn cũng có thể thử khởi động lại máy khách để xem hiệu ứng. Nếu mọi thứ diễn ra tốt đẹp, máy chủ NFS sẽ được tự động gắn kết thông qua tệp /etc/fstab.
Mã:
sudo reboot
Kết luận
Vậy là xong! Bạn đã hoàn tất cài đặt máy chủ và máy khách NFS trên máy chủ Debian 12. Bạn cũng đã cấu hình rõ ràng NFSv4 và hệ thống tệp giả trên máy chủ NFS. Hơn nữa, bạn đã bảo mật máy chủ NFS thông qua UFW (Tường lửa đơn giản).Cuối cùng, bạn cũng đã hoàn tất cấu hình máy khách NFS trên máy Debian và cấu hình thành công máy chủ NFS tự động gắn kết thông qua tệp /etc/fstab trên máy Ubuntu của bạn. Bây giờ bạn có thể bắt đầu cấu hình nó sao cho phù hợp với nhu cầu của mình.