Saya memiliki masalah untuk memasang share NFS yang tidak bisa saya selesaikan yang membuat saya gila. Inilah situasinya:
Tiga mesin yang terlibat:
Host A: mandrake, IP 192.168.1.4, server NFS
Host B: athlon64, IP 192.168.1.64, klien NFS
Host C: lap-fzs-2, IP 192.168.1.27, klien NFS
Host A memiliki server NFS yang berjalan yang mengekspor direktori yang di-mount oleh host B. Ini berfungsi dengan sempurna dan telah berfungsi sejak lama. Tidak masalah. Sekarang host C muncul di gambar. Ubuntu 12,04 LTS, sistem modern. Saya mencoba me-mount share yang sama dari host A tetapi mendapatkan izin ditolak kesalahan:
root@lap-fzs-2:~# mount -t nfs mandrake:/data /data -onfsvers=2
mount.nfs: access denied by server while mounting mandrake:/data
Fakta bahwa ia berfungsi antara host A dan B harus membuktikan bahwa ekspor NFS per se berfungsi. Ini adalah info yang bisa saya berikan yang membuat saya berpikir itu harus bekerja. Mungkin seseorang melihat apa yang tidak saya lakukan dan tahu mengapa ini gagal pada host baru C.
Ekspor server:
[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 sedang berjalan, ekspor diketahui dan dipasang oleh host 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
Ketika host athlon64 me-mount share NFS, log server menunjukkan keberhasilan:
Feb 11 20:06:46 mandrake mountd[460]: authenticated mount request from atlhon64.acme.local:770 for /data (/data)
Tetapi ketika host C mencoba me-mount share yang sama, log server menunjukkan:
Feb 11 20:12:42 mandrake mountd[460]: refused mount request from lap-fzs-2 for /data (/): no export entry
Host C melihat server, mencapai portmapper dan nfsd, tetapi gagal pada izin.
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
Saya harus menggunakan NFSv2 pada klien. Menggunakan NFSv4 akan gagal karena server tidak mendukungnya. Gagal saat mencoba terhubung melalui TCP langsung ke 2049 tetapi port tidak terbuka. Tidak ada fallback yang terjadi. Menggunakan NFSv3 akan menghasilkan ketidakcocokan program / versi RPC.
Apa yang saya lewatkan?
Pembaruan:
Ketiga mesin berada pada satu LAN, pada sakelar yang sama. Tidak ada firewall yang aktif di host 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
Juga pada host A:
[root@mandrake /root]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
exportfs -a
perintah di Host A, lalu coba mount
perintah di Host C. Coba hostname eksplisit atau alamat IP lengkap di /etc/exports
.
exportfs -a
saat boot dan karena ini bukan entri baru, itu sudah diekspor. File ekspor tidak berubah, hanya host baru yang harus me-mount dan tidak bisa.
/etc/exports
sebenarnya membuatnya berfungsi. Saya sekarang memiliki / 24 net plus IP lengkap yang terdaftar dan host C dapat me-mount. Belum mencoba host B. ada yang tahu ini kenapa? Saya perhatikan bahwa host B (yang berfungsi) memang menggunakan panggilan MNT versi 2, sementara host C menggunakan panggilan MNT versi 1.