Cách thiết lập và cấu hình máy chủ NFS trên Linux
NFS (Hệ thống tệp mạng) của Sun Microsystems là cấu trúc hệ thống tệp phân tán dựa trên RPC cho phép các thiết bị nối mạng sử dụng máy chủ chạy NFS qua mạng làm ổ đĩa cục bộ của chúng.
Đây là hướng dẫn từng bước để thiết lập và định cấu hình máy chủ NFS trên máy Linux.
Mục Lục
Hệ thống tệp mạng là gì?
Hệ thống tệp NFS có bốn giao thức. Khi máy chủ sẵn sàng, nó sẽ thông báo cho portmap (máy chủ chuyển đổi giao thức thành số cổng) của cổng để sử dụng và cung cấp số chương trình RPC được kiểm soát.
Khi sử dụng hệ thống nhúng Linux, rất thuận tiện để khởi động thiết bị của bạn thông qua chia sẻ tệp NFS qua mạng thay vì khởi động trực tiếp từ thiết bị lưu trữ (NAND flash, eMMC, MMC, v.v.).
Mặc dù hiếm hơn, bạn cũng có thể muốn gắn kết một chia sẻ NFS và thực hiện chia sẻ tệp bằng cách sử dụng nó sau khi hệ thống khởi động, ngay cả khi bạn không khởi động hệ thống của mình trực tiếp từ chia sẻ NFS. Để cả hai tình huống hoạt động, trước tiên bạn phải cài đặt máy chủ NFS trên máy tính mà bạn đang phát triển.
Cách cài đặt NFS trên Linux
Nếu bạn đang sử dụng hệ thống dựa trên Debian, chẳng hạn như Ubuntu hoặc Linux Mint, bạn nên cài đặt nfs-kernel-server gói như sau:
sudo apt install nfs-kernel-server
Trên Arch Linux:
sudo pacman -S nfs-utils
Trên Fedora, CentOS và RHEL:
sudo dnf -y install nfs-utils
Khi kết thúc quá trình, máy chủ NFS của bạn sẽ tự động chạy. Tuy nhiên, tại thời điểm này, nó vẫn chưa biết bạn muốn chia sẻ thư mục nào trên máy tính của bạn qua mạng. Do đó, nó không cung cấp bất kỳ chia sẻ nào theo mặc định.
Bạn có thể mở nhiều thư mục trên cùng một máy chủ để cho phép chia sẻ mạng với các quyền hạn và hạn chế khác nhau.
Cấu hình máy chủ NFS trên Linux
Để chia sẻ bất kỳ thư mục nào qua máy chủ NFS, cần phải định cấu hình cài đặt liên quan đến thư mục trong / etc / export tập tin. Mở tệp bằng bất kỳ trình soạn thảo văn bản nào bạn chọn. Đảm bảo thêm tiền tố sudo vào lệnh.
sudo vim /etc/exports
Bạn có thể tự hỏi các tùy chọn ánh xạ mà bạn thấy ở đây có nghĩa là gì:
- root_squash: Đánh dấu người dùng khách được ủy quyền của sudo là không ai là người dùng và nhóm trên NFS
- no_root_squash: Tắt tính năng bóp gốc
- all_squash: Không giống như root_squash, nó cho phép tất cả người dùng được ánh xạ với tư cách là người dùng và nhóm không ai khác. Nó thường được sử dụng để truy cập công cộng.
- no_all_squash: Ngược lại với all_squash; Tùy chọn này là mặc định
Khi một hệ thống nằm ngoài dải IP mà bạn cho phép trong tệp / etc / export trên máy chủ NFS cố gắng truy cập tài nguyên liên quan, máy chủ NFS sẽ từ chối yêu cầu.
Bạn có thể nhận được thông báo “quyền truy cập bị máy chủ từ chối” khi cài đặt trên hệ thống nhúng của mình. Các thông báo lỗi tương tự như sau sẽ xuất hiện ở cuối / var / log / syslog tệp trên máy tính có máy chủ NFS đang chạy:
rpc.mountd[1041]: refused mount request from 192.168.2.2 for /home/example/casper/target (/home/example/casper/target): unmatched host
Khi bạn thấy thông báo nhật ký máy chủ lưu trữ chưa khớp như thông báo ở trên, bạn nên mở rộng phần IP / Netmask của quy tắc liên quan trong tệp / etc / export hoặc sử dụng dấu hoa thị (*) ký tự đặc biệt nếu bạn muốn cấp quyền truy cập cho tất cả các địa chỉ IP.
Bạn phải khởi động lại dịch vụ NFS sau khi thực hiện các sửa đổi đối với / etc / export tập tin:
sudo service nfs-kernel-server restart
Hoặc, nếu bản phân phối của bạn có systemctl, hãy chạy lệnh sau:
sudo systemctl restart nfs-server.service
Bạn cũng có thể cung cấp cho -r tham số cho exportfs lệnh để nó chia sẻ lại các thư mục đã thay đổi bất kỳ cài đặt nào liên quan đến việc chia sẻ:
sudo exportfs -r
Khắc phục sự cố về độ trễ gắn kết
Khi bạn sử dụng giao thức NFS phiên bản 4 trở lên trên máy chủ của mình, có thể có độ trễ lên đến 15 giây trong quá trình gắn kết phía máy khách trong các tình huống hoạt động truyền thống với cấu hình mặc định của máy chủ NFS. Sự cố này có thể xuất hiện trên một số phiên bản Debian, Fedora và Ubuntu.
Nếu bạn đang gặp phải tình trạng trễ mount tương tự, bạn có thể kiểm tra tệp nhật ký phía máy chủ (/ var / log / syslog, / var / log / messages) cho một thông báo nhật ký tương tự như sau:
... RPC: AUTH_GSS upcall timed out
Thông báo này cho biết xác thực Kerberos không thành công và đã hết thời gian chờ. Bạn có thể sẽ không cần giao thức Kerberos để xác thực bảo mật trên mạng trong môi trường của bạn. Ngay cả khi bạn đang ở trên một mạng được định cấu hình theo cách này, ít nhất là với các hệ thống Linux nhúng của bạn, bạn sẽ không cần phải bật xác thực Kerberos.
Mặc dù các giải pháp thay thế để chạy dịch vụ GSSD với NFS để khắc phục sự cố đã được đưa ra, nhưng các phương pháp này không có tác động giống nhau trong tất cả các bản phân phối và phiên bản gói, và do đó, giải quyết vấn đề này từ gốc là hợp lý nhất.
Bạn phải chặn (hoặc danh sách đen) rpcsec_gss_krb5 mô-đun hạt nhân từ khi tải trên hệ thống Linux nơi máy chủ NFS đang thực thi.
Để tùy chọn này có hiệu lực mỗi khi bạn khởi động lại máy tính của mình, hãy tạo một tệp mới có tên /etc/modprobe.d/nfs-gss-blacklist.conf và thêm các dòng sau vào đó:
blacklist rpcsec_gss_krb5
Sau khi bạn lưu tệp và khởi động lại hệ thống, vấn đề về độ trễ gắn kết sẽ biến mất.
Tại sao sử dụng máy chủ NFS?
NFS đơn giản và giá cả phải chăng để thiết lập. Nó cho phép quản lý tập trung, giúp giảm yêu cầu về phần mềm bổ sung và không gian lưu trữ trên PC của người dùng cá nhân. Trên một máy, nhiều người dùng có thể chia sẻ cùng một không gian đĩa. Họ có thể đặt các đĩa này lên trên hệ thống tệp của mình để mở rộng không gian lưu trữ.
Chia sẻ NFS cho phép các chương trình yêu cầu nhiều dung lượng lưu trữ được nhóm lại trên một máy chủ duy nhất. Điều này có thể dẫn đến tiết kiệm không gian đĩa rất lớn. Trong khi các phiên bản NFS trước dễ bị tấn công, các phiên bản mới hơn đã giới thiệu các cấp bảo vệ bổ sung, bao gồm xác thực Kerberos.
Tuy nhiên, cũng có một số nhược điểm. NFS đã được phát hiện là làm chậm trong một số trường hợp khi lưu lượng mạng lớn. Có thể chia sẻ với Windows, nhưng có thể yêu cầu một số ứng dụng của bên thứ ba. Nhưng đây không phải là một thực hành rất hợp lý về mặt an ninh. Nếu cấu hình không đúng, có thể xảy ra truy cập trái phép.
Chia sẻ hệ thống tệp dễ dàng trên Linux bằng NFS
Biết các vấn đề bảo mật và tìm ra giải pháp là một trong những nhiệm vụ quan trọng nhất của quản trị viên hệ thống. Cần phải biết các quy trình bảo mật cho tất cả các hệ thống chia sẻ tệp và các công cụ quản lý chứ không chỉ NFS.