Cách cung cấp chia sẻ mạng NFS cho máy khách cụ thể

Tác giả sysadmin, T.M.Hai 31, 2022, 03:28:41 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cách cung cấp chia sẻ mạng NFS cho máy khách cụ thể


Với NFS, chúng tôi có thể xuất các thư mục cụ thể trong một hệ thống tệp qua mạng tới các máy khách khác cho phép chúng tôi chia sẻ các tệp khác nhau qua mạng. Điều quan trọng là phải định cấu hình đúng và bảo mật nó càng nhiều càng tốt để chỉ những máy khách được yêu cầu mới có quyền truy cập vào phần chia sẻ NFS, nếu không, bất kỳ ai cũng có thể cài đặt nó và truy cập dữ liệu.

Để làm điều này, chúng tôi sẽ sử dụng tệp /etc/exports trên máy chủ NFS và khóa các chia sẻ để chỉ các địa chỉ IP cụ thể mới có thể truy cập được.

Nếu bạn muốn xem các phiên bản NFS khác nhau hoạt động như thế nào, hãy nhớ xem điểm chuẩn NFS của chúng tôi.

1. Môi trường ví dụ

Đây là danh sách các máy chủ của chúng tôi mà chúng tôi sẽ thử nghiệm.

  • Máy khách NFS: 192.168.0.100 – Máy khách Linux này sẽ gắn một thư mục từ máy chủ NFS.
  • Máy chủ NFS: 192.168.0.200 – Máy chủ Linux này sẽ phục vụ một thư mục trên NFS.

2. Cấu hình NFS

Máy chủ có dữ liệu để chia sẻ sẽ đóng vai trò là máy chủ NFS và cần cài đặt gói nfs-utils.

Mã nguồn [Chọn]
yum install nfs-utils -y
Sau khi cài đặt, chúng tôi có thể cho phép máy chủ NFS của mình tự động khởi động dịch vụ NFS cần thiết khi khởi động, chúng tôi cũng sẽ khởi động dịch vụ ngay bây giờ vì nó không chạy theo mặc định sau khi cài đặt.

Mã nguồn [Chọn]
systemctl enable nfs

systemctl start nfs

Để biết thêm thông tin về quản lý dịch vụ cơ bản với systemctl, hãy xem hướng dẫn của chúng tôi tại đây.

Tiếp theo, tường lửa phải được cấu hình để cho phép lưu lượng NFS đi qua một cách chính xác, điều này có thể được thực hiện như minh họa với tường lửa. Thay đổi này sẽ cho phép lưu lượng truy cập NFS cổng TCP 2049 vào máy chủ từ bất kỳ nguồn nào. Cấu hình tường lửa cũng phải được tải lại vì chúng tôi đã đặt một quy tắc vĩnh viễn sẽ không áp dụng cho cấu hình đang chạy.

Mã nguồn [Chọn]
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload

Chúng tôi cũng sẽ tạo thư mục trên máy chủ NFS mà chúng tôi sẽ chia sẻ qua NFS, trong ví dụ này nó sẽ là /root/nfs tuy nhiên thư mục này có thể ở nơi khác.

Mã nguồn [Chọn]
mkdir /root/nfs
Các điểm gắn máy chủ NFS được cấu hình bằng tệp /etc/exports, tệp này liệt kê các thư mục có sẵn để truy cập qua NFS. Ngoài ra, các tệp cấu hình cũng có thể được tạo trong thư mục /etc/exports.d/ miễn là chúng có phần mở rộng.exports.

Dưới đây là một ví dụ về cấu hình NFS trong tệp /etc/exports.

Mã nguồn [Chọn]
[root@server ~]# cat /etc/exports
/root/nfs 192.168.0.100(rw,async)

Như được hiển thị, chúng tôi đang nói rằng thư mục /root/nfs chỉ khả dụng với địa chỉ IP 192.168.0.100, vì vậy chỉ hệ thống tại địa chỉ IP này mới có thể truy cập và gắn kết thành công thư mục. Tên máy chủ cũng có thể được sử dụng thay cho địa chỉ IP.

Điều quan trọng cần lưu ý là không có khoảng cách giữa địa chỉ IP và các tùy chọn (rw,async), nếu có khoảng trắng ở đây thì địa chỉ IP sẽ có các tùy chọn mặc định và thay vào đó, (rw,async) sẽ áp dụng cho bất kỳ ứng dụng khách khác cố gắng truy cập vào phần chia sẻ NFS, điều này về cơ bản sẽ cấp quyền truy cập đọc/ghi cho bất kỳ ai.

Sau bất kỳ thay đổi nào đối với tệp /etc/exports, chúng ta cần sử dụng lệnh exportfs để cập nhật bảng hệ thống tệp NFS đã xuất.

Mã nguồn [Chọn]
exportfs -arv
Cờ -a sẽ xuất tất cả các thư mục, cờ -r sẽ xuất lại tất cả các thư mục và xóa mọi mục nhập cũ, trong khi cờ -v cung cấp mức độ chi tiết và sẽ xuất tất cả các lần xuất NFS.

3. Gắn chia sẻ NFS

Bây giờ chúng ta đã chuẩn bị chia sẻ NFS, chỉ có 192.168.0.100 là có thể gắn kết nó, hãy thử nghiệm. Các hệ thống máy khách cũng sẽ cần cài đặt gói nfs-utils để có thể gắn kết NFS.

Đầu tiên trên máy khách, chúng ta có thể sử dụng lệnh showmount để xem danh sách các mount được xuất trên máy chủ NFS.

Mã nguồn [Chọn]
[root@client ~]# showmount -e 192.168.0.200
Export list for 192.168.0.200:
/root/nfs 192.168.0.100

Chúng ta có thể thử gắn cái này với NFS bằng lệnh mount, không gian trống trong mount sau đó sẽ hiển thị bằng lệnh df.

Mã nguồn [Chọn]
[root@client ~]# mount -t nfs 192.168.0.200:/root/nfs /mnt
[root@client ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/sda3                18G  4.3G   14G  25% /
devtmpfs                905M     0  905M   0% /dev
tmpfs                   914M   80K  914M   1% /dev/shm
tmpfs                   914M  8.9M  905M   1% /run
tmpfs                   914M     0  914M   0% /sys/fs/cgroup
/dev/sda1               297M  148M  150M  50% /boot
192.168.0.200:/root/nfs   18G  4.3G   14G  25% /mnt

Quá trình gắn kết này không liên tục, nếu chúng tôi thực hiện khởi động lại hệ thống máy khách, điều này sẽ không được gắn kết tự động, để làm điều này, chúng tôi có thể thêm phần sau vào tệp /etc/fstab trên máy chủ máy khách.

Mã nguồn [Chọn]
192.168.0.200:/root/nfs     /mnt    nfs rw,async   0       0
Sau khi lưu các thay đổi của bạn vào tệp này, trước tiên bạn có thể ngắt kết nối /mnt bằng 'umount /mnt', sau đó chạy 'mount -a'. Thao tác này sẽ cố gắn mọi thứ chưa được gắn trong /etc/fstab, thao tác này sẽ gắn 192.168.0.200: /root/nfs quay lại /mnt và điều này cũng sẽ tự động xảy ra khi khởi động lại.

Nếu bất kỳ hệ thống nào khác ngoài 192.168.0.100 cố gắng gắn hệ thống này, chúng sẽ nhận được lỗi bên dưới sau khi quá trình gắn không thành công.

Mã nguồn [Chọn]
mount.nfs: access denied by server while mounting 192.168.0.200:/root/nfs
Lưu ý rằng điều này chỉ giới hạn các máy khách theo địa chỉ IP dựa trên cấu hình trong tệp /etc/exports trên máy chủ NFS. Thực tế không có bất kỳ xác thực nào được thực hiện, vì điều đó chúng ta có thể sử dụng các bản xuất NFS đã bật Kerberos. Kerberos cũng có thể cung cấp mã hóa, vì theo mặc định, mọi nội dung được truyền qua NFS sẽ được gửi dưới dạng văn bản rõ ràng, điều này không an toàn.

Như được chỉ ra bằng cách chỉ định địa chỉ IP của máy khách được phép trong tệp cấu hình NFS /etc/exports, chúng tôi có thể giới hạn quyền truy cập chỉ đối với những máy khách đó và từ chối tất cả quyền truy cập khác, về cơ bản là khóa quyền truy cập vào tệp chia sẻ. Để chống lại cấu hình xuất không chính xác, tường lửa cũng có thể được sửa đổi để chỉ cho phép lưu lượng NFS từ các hệ thống máy khách cụ thể yêu cầu quyền truy cập vào máy chủ NFS. Để cung cấp xác thực và mã hóa, chúng tôi cần xem xét việc triển khai Kerberos.