Tôi gặp sự cố khi gắn chia sẻ NFS mà tôi không thể giải quyết được, điều đó đang khiến tôi phát điên. Đây là tình huống:
Ba máy liên quan:
Máy chủ A: mandrake, IP 192.168.1.4, máy chủ NFS
Máy chủ B: athlon64, IP 192.168.1.64,
Máy khách NFS Máy chủ C: lap-fzs-2, IP 192.168.1.27, máy khách NFS
Máy chủ A có máy chủ NFS đang chạy, xuất một thư mục được gắn bởi máy chủ B. Điều này hoạt động hoàn hảo và đã hoạt động từ rất lâu. Không có vấn đề. Bây giờ máy chủ C đi vào hình ảnh. Ubuntu 12.04 LTS, hệ thống hiện đại. Tôi đã cố gắn kết chia sẻ tương tự từ máy chủ A nhưng bị lỗi từ chối cấp phép:
root@lap-fzs-2:~# mount -t nfs mandrake:/data /data -onfsvers=2
mount.nfs: access denied by server while mounting mandrake:/data
Thực tế là nó hoạt động giữa máy chủ A và B nên được chứng minh rằng xuất NFS mỗi se đang hoạt động. Đây là thông tin tôi có thể cung cấp khiến tôi nghĩ rằng nó nên hoạt động. Có lẽ ai đó nhìn thấy những gì tôi không biết và tại sao điều này thất bại trên máy chủ mới C.
Xuất khẩu máy chủ:
[root@mandrake /root]# cat /etc/exports
/suse 192.168.1.0/16(ro,no_root_squash)
/data 192.168.1.0/24(rw)
#/data3 192.168.2.0/24(rw)
#/data 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)
#/data3 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)
[root@mandrake /root]# exportfs
/suse 192.168.1.0/16
/data 192.168.1.0/24
Portmapper đang chạy, xuất khẩu được biết đến và được gắn bởi máy chủ B "athlon64".
[root@mandrake /root]# showmount -e
Export list for mandrake:
/data 192.168.1.0/24
/suse 192.168.1.0/16
[root@mandrake /root]# showmount -a
All mount points on mandrake:
atlhon64.acme.local:/data
Khi máy chủ athlon64 gắn kết chia sẻ NFS, nhật ký máy chủ hiển thị thành công:
Feb 11 20:06:46 mandrake mountd[460]: authenticated mount request from atlhon64.acme.local:770 for /data (/data)
Nhưng khi máy chủ C cố gắng gắn kết cùng một chia sẻ, nhật ký máy chủ hiển thị:
Feb 11 20:12:42 mandrake mountd[460]: refused mount request from lap-fzs-2 for /data (/): no export entry
Máy chủ C nhìn thấy máy chủ, đến portmapper và nfsd, nhưng không thành công ở các quyền.
root@lap-fzs-2:~# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/data 192.168.1.0/24
/suse 192.168.1.0/16
root@lap-fzs-2:~# mount -t nfs -v mandrake:/data /data -onfsvers=2,proto=udp
mount.nfs: timeout set for Mon Feb 11 21:49:23 2013
mount.nfs: trying text-based options 'nfsvers=2,proto=udp,addr=192.168.1.4'
mount.nfs: prog 100003, trying vers=2, prot=17
mount.nfs: trying 192.168.1.4 prog 100003 vers 2 prot UDP port 2049
mount.nfs: prog 100005, trying vers=1, prot=17
mount.nfs: trying 192.168.1.4 prog 100005 vers 1 prot UDP port 636
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting mandrake:/data
Tôi phải sử dụng NFSv2 trên máy khách. Sử dụng NFSv4 sẽ thất bại vì máy chủ không hỗ trợ. Không thành công vì nó cố gắng kết nối trực tiếp qua TCP đến năm 2049 nhưng cổng không mở. Không có dự phòng xảy ra. Sử dụng NFSv3 sẽ dẫn đến sự không phù hợp với chương trình / phiên bản RPC.
Tôi đang thiếu gì?
Cập nhật:
Cả ba máy đều trên một mạng LAN, trên cùng một công tắc. Không có tường lửa hoạt động trên máy chủ C:
root@lap-fzs-2:~# iptables -vnL
Chain INPUT (policy ACCEPT 17 packets, 1853 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 20 packets, 5611 bytes)
pkts bytes target prot opt in out source destination
Cũng không phải trên máy chủ A:
[root@mandrake /root]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
exportfs -a
lệnh tại Host A, sau đó thử mount
lệnh trên Host C. Thử tên máy chủ rõ ràng hoặc địa chỉ IP đầy đủ trong /etc/exports
.
exportfs -a
lúc khởi động và vì đây không phải là mục mới, nên nó đã được xuất. Tệp xuất không thay đổi, nó chỉ là một máy chủ mới nên gắn kết và không thể.
/etc/exports
thực tế làm cho nó hoạt động. Bây giờ tôi có / 24 mạng cộng với IP đầy đủ được liệt kê và máy chủ C có thể gắn kết. Chưa thử máy chủ B. Có ai biết vì sao lại thế này không? Tôi nhận thấy rằng máy chủ B (máy chủ đang hoạt động) đã sử dụng cuộc gọi MNT phiên bản 2, trong khi máy chủ C đã sử dụng cuộc gọi MNT phiên bản 1.