Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Помогите пожалуйста настроить nfs (http://forum.oszone.net/showthread.php?t=88560)

alive_corpse 13-08-2007 21:40 627149

Помогите пожалуйста настроить nfs
 
Есть подсеть 192.168.1.0/24, в ней сервер 192.168.1.6 под управлением Alt Linux Server 4.0.
Код:

[root@server ~]# uname -a  Linux server 2.6.18-ovz-smp-alt14 #1 SMP Wed May 2 15:41:15 MSD 2007 i686 GNU/Linux
Установлены пакеты, связанные с NFS и клиент и сервер:
Код:

[root@server ~]# rpm -qa | grep nfs
nfs-server-1.0.10-alt5
nfs-utils-1.0.10-alt5
libnfsidmap-0.18-alt1
nfs-clients-1.0.10-alt5

Вот содержимое /etc/exports (пример был взят из книги по редхету, так же не работает и если поставить не подсеть а один хост):
Код:

[root@server ~]# cat /etc/exports
/mnt/disk/shares/files          192.168.1.0/255.255.255.0(rw,sync)
/mnt/disk/shares/distrib        192.168.1.0/255.255.255.0(rw,sync)
/mnt/disk/shares/temp          192.168.1.0/255.255.255.0(rw,sync)

Запускаем exportfs и nfs (всё, что связано с rpc прописано в этом же скрипте) и проверяем, что запущено и чтобы для чистоты эксперимента был опущен файрвол:
Код:

[root@server ~]# /usr/sbin/exportfs
/mnt/disk/shares/distrib
                192.168.1.0/255.255.255.0
/mnt/disk/shares/files
                192.168.1.0/255.255.255.0
/mnt/disk/shares/temp
                192.168.1.0/255.255.255.0
[root@server ~]# /etc/init.d/nfs start
Exporting NFS file systems:                                            [ DONE ]
Starting NFS daemon:                                                    [ DONE ]
Starting NFS mount service:                                            [ DONE ]
[root@server ~]# /etc/init.d/nfs status
rpc.mountd is running
rpc.svcgssd is stopped
nfsd is running
[root@server ~]# /usr/sbin/rpcinfo -p
  прог-ма верс прото  порт
    100000    2  tcp    111  portmapper
    100000    2  udp    111  portmapper
    100003    2  udp  2049  nfs
    100003    3  udp  2049  nfs
    100003    4  udp  2049  nfs
    100003    2  tcp  2049  nfs
    100003    3  tcp  2049  nfs
    100003    4  tcp  2049  nfs
    100021    1  udp  32810  nlockmgr
    100021    3  udp  32810  nlockmgr
    100021    4  udp  32810  nlockmgr
    100021    1  tcp  58713  nlockmgr
    100021    3  tcp  58713  nlockmgr
    100021    4  tcp  58713  nlockmgr
    100005    1  udp    880  mountd
    100005    1  tcp    881  mountd
    100005    2  udp    880  mountd
    100005    2  tcp    881  mountd
    100005    3  udp    880  mountd
    100005    3  tcp    881  mountd
[root@server ~]# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target    prot opt source              destination

Chain FORWARD (policy ACCEPT)
target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination

Пытаемся монтировать с той же самой машины (права на монтируемую шару стоят 777, ибо уже не знал в чём загвоздка):
Код:

[root@server ~]# mount -t nfs 192.168.1.6:/mnt/disk/shares/temp /mnt/disk1
mount: mount to NFS server '192.168.1.6' failed: System Error: Connection refused.

Пробуем монтировать с другой машины. 192.168.1.5 (Debian 4.0 Etch):
Код:

croco:/home/corpse# mount -t nfs 192.168.1.6:/mnt/disk/shares/temp /mnt/disk
mount to NFS server '192.168.1.6' failed: server is down

Исползал весь /var/log в поисках сислога или лога нфс, но ничего не нашёл. Впрочем, у семейства Alt сислог выводится на 12-ю консоль. Очень удобно надо сказать. Так вот там ни слова, связанного с RPC или NFS. :(
Cудя по /etc/servces, nfs сервер слушает 2049-й порт, rpc2portmap - 369-й, но при попытке монтирования tcpdump относительно обоих этих портов молчит как партизан:
Код:

[root@server ~]# /usr/sbin/tcpdump port 2049
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

0 packets captured
0 packets received by filter
0 packets dropped by kernel
[root@server ~]# /usr/sbin/tcpdump port 369
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

0 packets captured
0 packets received by filter
0 packets dropped by kernel

Интерфейс на машине один - eth0, машины друг друга пингуют в обе стороны, файрвол на обеих опущен. Подскажите пожалуйста, что я делаю не так и куда копать? От чтения манов уже голова пухнет.

must die 14-08-2007 19:41 627585

alive_corpse,

Такое ощущение что все-таки проблема с сетью.
Попробуйте через 127.0.0.1
[root@server ~]# cat /etc/exports
/mnt/disk/shares/files 127.0.0.1 (rw,sync)

alive_corpse 14-08-2007 21:03 627619

Цитата:

Цитата must die
Такое ощущение что все-таки проблема с сетью.

Странно, если проблема с сетью, то почему проходят другие соединения? SAMBA, SSH... С этим проблем нет. Но не смотря на это, c лупбека подмонтировалось без вопросов.
Код:

[root@server ~]# cat /etc/exports
/mnt/disk/shares/files          192.168.1.0/255.255.255.0(rw,sync)
/mnt/disk/shares/distrib        192.168.1.0/255.255.255.0(rw,sync)
#/mnt/disk/shares/temp          192.168.1.0/255.255.255.0(rw,sync)
/mnt/disk/shares/temp          127.0.0.1 (rw,sync)
[root@server ~]# /usr/sbin/exportfs
/mnt/disk/shares/distrib
                192.168.1.0/255.255.255.0
/mnt/disk/shares/files
                192.168.1.0/255.255.255.0
/mnt/disk/shares/temp
                192.168.1.0/255.255.255.0
[root@server ~]# /etc/init.d/nfs restart
Stopping NFS mount service:                                            [ DONE ]
Stopping NFS daemon:                                                    [ DONE ]
Unexporting NFS file systems:                                          [ DONE ]
Exporting NFS file systems:                                            [ DONE ]
Starting NFS daemon:                                                    [ DONE ]
Starting NFS mount service:                                            [ DONE ]
[root@server ~]# mount -t nfs 127.0.0.1:/mnt/disk/shares/temp/ /mnt/disk1/
[root@server ~]# mount | grep disk1
127.0.0.1:/mnt/disk/shares/temp/ on /mnt/disk1 type nfs (rw,addr=127.0.0.1)

Куда же теперь копать дальше?

Telepuzik 15-08-2007 11:24 627869

Попробуйте оставить в /etc/exports одну строку:
Код:

/mnt/disk/shares/files 192.168.1.5(sync,rw)
/mnt/disk/shares/files - должен быть полным путем и не содержать ссылок (симлинков).
Перезапустите сервисы (mountd тоже перезапустите) и попробуйте подмонтировать каталог с машинки 192.1681.5
Логи посмотрите в /var/log/messages.

must die 15-08-2007 14:50 628020

alive_corpse,

portmap запущен на клиентской машине?

alive_corpse 16-08-2007 22:05 628738

Пробуем...
Код:

[root@server etc]# cat /etc/exports
/mnt/disk/shares/temp          192.168.1.3 (rw,sync)
[root@server etc]# /etc/init.d/portmap status
portmap is running
[root@server etc]# /etc/init.d/nfs restart
Stopping NFS mount service:                                            [ DONE ]
Stopping NFS daemon:                                                    [ DONE ]
Unexporting NFS file systems:                                          [ DONE ]
Exporting NFS file systems:                                            [ DONE ]
Starting NFS daemon:                                                    [ DONE ]
Starting NFS mount service:                                            [ DONE ]
[root@server etc]# /usr/sbin/exportfs
/mnt/disk/shares/temp
                192.168.1.3
/mnt/disk/shares/temp
                <world>

Что значит запись world в данном случае?
Теперь на клиентской машине...
Код:

[root@old corpse]# /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 4C:00:10:A2:84:2F
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:565 errors:0 dropped:0 overruns:0 frame:0
          TX packets:436 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:63877 (62.3 Kb)  TX bytes:56280 (54.9 Kb)
          Interrupt:10 Base address:0x4000

[root@old corpse]# ping server
ping: unknown host server
[root@old corpse]# ping 192.168.1.6
PING 192.168.1.6 (192.168.1.6) 56(84) bytes of data.
64 bytes from 192.168.1.6: icmp_seq=1 ttl=64 time=0.219 ms
64 bytes from 192.168.1.6: icmp_seq=2 ttl=64 time=0.198 ms

--- 192.168.1.6 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.198/0.208/0.219/0.017 ms

[root@old corpse]# /etc/init.d/portmap status
portmap is running

[root@old corpse]# mount -t nfs 192.168.1.6:/mnt/disk/shares/temp /mnt/disk/
mount: RPC: Remote system error - Connection refused

Как видите, portmap запущен, mountd я просто не нашёл, и описанное выше с одной строчкой в /etc/exports тоже не работает.

alive_corpse 20-08-2007 12:20 630117

Неужели, никто не подскажет?

must die 20-08-2007 12:40 630128

alive_corpse,

В логах точно ничего нет?
Попробуй на клиенте на одной консоли tail -f /var/log/syslog, а на другой поробовать монтировать.

alive_corpse 20-08-2007 13:40 630178

А какой именно лог интересует? Дело в том, что в семействе альт, насколько я понял, начиная с версии Compact 2.3 syslog как таковой отсутствует, есть папка syslog, в которой записи сортируются по следующему принципу:
Код:

[corpse@server ~]$ l /var/log/ | grep syslog
lrwxrwxrwx  1 root root        14 Июл 30  2007 spooler -> syslog/spooler
lrwxrwxrwx  1 root root        12 Июл 30  2007 alert -> syslog/alert
lrwxrwxrwx  1 root root        11 Июл 30  2007 boot.log -> syslog/boot
lrwxrwxrwx  1 root root        15 Июл 30  2007 messages -> syslog/messages
drwxr-x---  2 root adm        153 Апр 15 04:06 syslog/

Я так понимаю, нужно смотреть в messages, ибо остальные пустые.

Вот при запуске exportfs, перезапуске nfs сервера и дальнейшей успешной попытке монтирования с лупбека (последняя строка):
Код:

Apr 20 15:28:38 server exportfs: exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "127.0.0.1:/mnt/disk/shares/temp".
Apr 20 15:28:38 server exportfs:  Assuming default behaviour ('no_subtree_check').
Apr 20 15:28:38 server exportfs:  NOTE: this default has changed since nfs-utils version 1.0.x
Apr 20 15:28:38 server exportfs: exportfs: No host name given with /mnt/disk/shares/temp (rw,sync), suggest *(rw,sync) to avoid warning
Apr 20 15:28:38 server exportfs: exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/mnt/disk/shares/temp".
Apr 20 15:28:38 server exportfs:  Assuming default behaviour ('no_subtree_check').
Apr 20 15:28:38 server exportfs:  NOTE: this default has changed since nfs-utils version 1.0.x
Apr 20 15:28:38 server nfs: Exporting NFS file systems: succeeded
Apr 20 15:28:38 server kernel: NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
Apr 20 15:28:38 server kernel: NFSD: starting 90-second grace period
Apr 20 15:28:38 server nfs: Starting NFS daemon: succeeded
Apr 20 15:28:38 server nfs: rpc.mountd startup succeeded

Apr 20 15:30:31 server mountd[6972]: authenticated mount request from server:822 for /mnt/disk/shares/temp (/mnt/disk/shares/temp)

Последняя строка появляется при монтировании с 127.0.0.1. При попытке монтирования с другой машины или с 192.168.1.6 в messages ничего не появляется.

Выходит, что nfs работает, но смонтировать что-либо можно только с лупбека. То же самое говорит и tcpdump. Вот монтирование с лупбека:
Код:

[root@server ~]# /usr/sbin/tcpdump -i lo port 2049
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
15:43:25.963190 IP server.46250 > server.nfs: S 990243489:990243489(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 4>
15:43:25.994771 IP server.nfs > server.46250: S 994695995:994695995(0) ack 990243490 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 4>
15:43:25.994906 IP server.46250 > server.nfs: . ack 1 win 2050
15:43:25.963417 IP server.96224562 > server.nfs: 44 null
15:43:25.963439 IP server.nfs > server.46250: . ack 45 win 2050
15:43:25.963622 IP server.nfs > server.96224562: reply ok 28 null
15:43:25.963633 IP server.46250 > server.nfs: . ack 29 win 2050
15:43:25.963668 IP server.46250 > server.nfs: F 45:45(0) ack 29 win 2050
15:43:25.963790 IP server.nfs > server.46250: F 29:29(0) ack 46 win 2050
15:43:25.963805 IP server.46250 > server.nfs: . ack 30 win 2050
15:43:26.028353 IP server.847 > server.nfs: S 999220638:999220638(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 4>
15:43:26.028391 IP server.nfs > server.847: S 997357582:997357582(0) ack 999220639 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 4>
15:43:26.028417 IP server.847 > server.nfs: . ack 1 win 2050
15:43:26.028895 IP server.926647536 > server.nfs: 44 null
15:43:26.028922 IP server.nfs > server.847: . ack 45 win 2050
15:43:26.029151 IP server.nfs > server.926647536: reply ok 28 null
15:43:26.029168 IP server.847 > server.nfs: . ack 29 win 2050
15:43:26.029413 IP server.943424752 > server.nfs: 44 null
15:43:26.029591 IP server.nfs > server.943424752: reply ok 28 null
15:43:26.029773 IP server.960201968 > server.nfs: 120 fsinfo [|nfs]
15:43:26.030006 IP server.nfs > server.960201968: reply ok 84 fsinfo [|nfs]
15:43:26.030185 IP server.976979184 > server.nfs: 120 getattr [|nfs]
15:43:26.030377 IP server.nfs > server.976979184: reply ok 116 getattr [|nfs]
15:43:26.070968 IP server.847 > server.nfs: . ack 257 win 2050

На попытки монтирования с других IP тоже молчит. То есть, пакеты просто не долетают до NFS. В чём может быть загвоздка?

must die 20-08-2007 13:50 630189

А с самого сервера через 192.168.1.x монтируется?

alive_corpse 21-08-2007 08:28 630571

192.168.1.6 - это и есть сам сервер. Реакция на монтирование с самого сервера полностью идентична реакции на монтирование с любой другой машины из 192.168.1.0/24. Может быть посмотреть nmap'ом снаружи 2049-й порт? Я только с nmap'ом ещё обращаться не умею. На вскидку сможете подсказать синтаксис?

Telepuzik 21-08-2007 16:39 630810

Что выдает на сервере команда: rpcinfo -p
Приведите содержимое файлов: hosts.allow hosts.deny hosts

alive_corpse 21-08-2007 17:46 630846

Если мне не изменяет память, то вывод rpcinfo -p уже фигурировал в одном из предыдущих сообщений, притом, если я правильно понимаю, тот фатк, что мне удаётся смонтировать шару с лупбека, уже автоматически означает, что портмаппер, mountd и всё прочее работает корректно.
Код:

[root@server /]# /usr/sbin/rpcinfo -p
  прог-ма верс прото  порт
    100000    2  tcp    111  portmapper
    100000    2  udp    111  portmapper
    100003    2  udp  2049  nfs
    100003    3  udp  2049  nfs
    100003    4  udp  2049  nfs
    100003    2  tcp  2049  nfs
    100003    3  tcp  2049  nfs
    100003    4  tcp  2049  nfs
    100021    1  udp  32852  nlockmgr
    100021    3  udp  32852  nlockmgr
    100021    4  udp  32852  nlockmgr
    100021    1  tcp  56257  nlockmgr
    100021    3  tcp  56257  nlockmgr
    100021    4  tcp  56257  nlockmgr
    100005    1  udp    854  mountd
    100005    1  tcp    855  mountd
    100005    2  udp    854  mountd
    100005    2  tcp    855  mountd
    100005    3  udp    854  mountd
    100005    3  tcp    855  mountd
[root@server /]# cat /etc/hosts
127.0.0.1      server server localhost.localdomain localhost
192.168.1.1    router
192.168.1.2    croco
192.168.1.3    old
192.168.1.4    book
192.168.1.5    old
192.168.1.7    loox
[root@server /]# cat /etc/hosts.allow
#
# hosts.allow  This file describes the names of the hosts which are
#              allowed to use the local INET services, as decided
#              by the '/usr/sbin/tcpd' server.
#
192.168.1.6
[root@server /]# cat /etc/hosts.deny
#
# hosts.deny    This file describes the names of the hosts which are
#              *not* allowed to use the local INET services, as decided
#              by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

hosts.allow приведён на момент попытки монтирования со 192.168.1.6. При попытке монтирования с других хостов в hosts.allow дописывались соответствующие строки.

Telepuzik 21-08-2007 18:23 630860

Пропишите в hosts:
127.0.0.1 localhost.localdomain localhost
192.168.1.6 server

alive_corpse 21-08-2007 22:25 630986

Хм. Не понимаю, почему это должно было что-то изменить? Ведь в hosts.allow я прописал IP. Не помогло, симптомы совершенно те же.

Telepuzik 22-08-2007 11:09 631226

А сервисы (nfs,mountd,portmapper) после редактирования hosts перезапустили?

Цитата:

Цитата alive_corpse
Хм. Не понимаю, почему это должно было что-то изменить? Ведь в hosts.allow я прописал IP.

Вот эта строка лога:
Цитата:

Цитата alive_corpse
Apr 20 15:28:38 server exportfs: exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "127.0.0.1:/mnt/disk/shares/temp".

наводит на мысль что nfs экспортирует шары только на адресс 127.0.0.1, возможно nfs использует имя хоста при экспорте шары, а в hosts у Вас прописано что для server-а ip 127.0.0.1 поэтому только и можно подключиться через 127.0.0.1 - это было только предположение.

alive_corpse 23-08-2007 01:21 631707

Цитата:

Цитата Telepuzik
А сервисы (nfs,mountd,portmapper) после редактирования hosts перезапустили?

nfsd и mountd перезапускал, откуда стартует portmapper - не нашёл.

Цитата:

Цитата Telepuzik
Apr 20 15:28:38 server exportfs: exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "127.0.0.1:/mnt/disk/shares/temp" >>>

Это обычный ворнинг. Можно было прописать в exports одну из опций и его бы не было, а так говорит, что ни той, ни другой директивы не нашёл и берёт по дефолту. Насколько я понимаю, это никак не связано с адресацией. Если речь идёт именно об этом: specified for export "127.0.0.1:/mnt/disk/shares/temp", то эта строчка в логах появилась перед попыткой монтирования как раз со 127.0.0.1, когда в /etc/exports было прописано 127.0.0.1 и запущен exportfs. Естесственно, те же действия были проделаны и с адресом 192.168.1.6 перед попыткой монтирования с него и в логах соответствующие строки содержали уже 192.168.1.6 вместо 127.0.0.1.

alive_corpse 02-09-2007 13:48 637107

Хотя я тут раскопал ещё вот что:
Код:

[root@server ~]# netstat -aun|grep 111  udp 0 0 127.0.0.1:111 0.0.0.0:* 
[root@server ~]# netstat -aun|grep 2049  udp 0 0 0.0.0.0:2049 0.0.0.0:*

Если я правильно понимаю, то 111-й порт слушает портмап, но слушает его только на лупбеке. Вот поэтому и монтируется только с лупбека.
Буду читать ман, и искать, откуда стартует портмап, чтобы запустить его таким образом, чтобы слушал всё. Или если кто-нибудь на вскидку знает, напишите тут пожалуйста.

[Debian]Odmin 05-09-2007 20:25 638798

Мы с тобой решаем одну задачу...только я пробился дальше...у меня ядро загружается...и даже работает вторая станция..но только для ЧТЕНИЯ...вот решаю как сделать ее для записи...опиши конкретно ГДЕ ты встопорился...и что пишет когда грузишь Клиента

alive_corpse 06-09-2007 19:13 639317

В ближайшие две недели, к сожалению, не смогу, ибо не в городе. В смысле - что пишет? В логи? Я уже сюда это выбрасывал. И логи и вывод tcpdump'а, даже нашёл проблему, которую осталось устранить...

[Debian]Odmin 07-09-2007 14:05 639704

Нет..при загрузке Клиента, что он выводит на экран?

alive_corpse 16-10-2007 08:30 661382

Цитата:

Цитата [Debian
Odmin]опиши конкретно ГДЕ ты встопорился »

Я застопорился вот здесь:
Цитата:

Цитата alive_corpse
[root@server ~]# netstat -aun|grep 111 udp 0 0 127.0.0.1:111 0.0.0.0:* »

Портмап должен слушать не только лупбек. По идее, там должно стоять 0.0.0.0:111, снаружи я бы прикрыл файрволом. Если я прописываю в /etc/exports вместо серого ip лупбек, то с лупбека на сервере всё отлично монтируется.
В /etc/hosts.allow прописано:
ALL: 127.0.0.1, 192.168.1.
/etc/hosts.deny - пустой.

Цитата:

Цитата [Debian
Odmin]Нет..при загрузке Клиента, что он выводит на экран?

При загрузке клиента или при попытке монтирования?

ake02 26-10-2007 14:52 667617

В /etc/sysconfig/portmap надо закомментить:
# PORTMAP_ARGS="-l" (= local only)

После этого
/etc/init.d/portmap restart
/etc/init.d/nfs restart

alive_corpse 30-10-2007 09:52 669574

ake02, большое спасибо! :) Я решил проблему пару дней назад простым переносом /etc/init.d/portmap с другого дистрибутива, где оно работало. Но полезно знать, в чём именно была проблема. Спасибо. :)

ake02 30-10-2007 10:18 669586

Пожалуйста :) Сам решал эту проблемку, пришлось тщательно погуглить...


Время: 04:05.

Время: 04:05.
© OSzone.net 2001-