Назад | Перейти на главную страницу

Не удается смонтировать общий ресурс NFS через TCP

Я бьюсь головой об стену этим. Среда - это 2 64-битные установки CentOS 6. И клиент, и сервер NFS полностью обновлены по состоянию на 1 час назад.

Я настроил экспорт NFS на сервере:

/opt/nfs     10.1.1.0/24(rw,sync,no_root_squash,no_all_squash)

AFAICT, все соответствующие службы NFS на сервере работают:

(2) (0 Jobs) [root@lb01-cbr01-au ~]$ service rpcbind status
rpcbind (pid  20079) is running...
(2) (0 Jobs) [root@lb01-cbr01-au ~]$ service nfslock status
rpc.statd (pid  19986) is running...
(2) (0 Jobs) [root@lb01-cbr01-au ~]$ service nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 20034) is running...
nfsd (pid 20031 20030 20029 20028 20027 20026 20025 20024) is running...
(2) (0 Jobs) [root@lb01-cbr01-au ~]$ 

На клиенте и rpcbind, и nfslock сообщают, что работают.

На сервере вывод rpcinfo для localhost выглядит хорошо:

[root@lb01-cbr01-au ~]# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  39893  status
    100024    1   tcp  59014  status
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049  nfs_acl
    100227    3   tcp   2049  nfs_acl
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049  nfs_acl
    100227    3   udp   2049  nfs_acl
    100021    1   udp  44725  nlockmgr
    100021    3   udp  44725  nlockmgr
    100021    4   udp  44725  nlockmgr
    100021    1   tcp  40736  nlockmgr
    100021    3   tcp  40736  nlockmgr
    100021    4   tcp  40736  nlockmgr
    100005    1   udp  55385  mountd
    100005    1   tcp  55481  mountd
    100005    2   udp  46027  mountd
    100005    2   tcp  59968  mountd
    100005    3   udp  45069  mountd
    100005    3   tcp  33231  mountd
[root@lb01-cbr01-au ~]# 

Точно так же rpcinfo -p localhost на клиенте указывает хорошее состояние:

   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  59519  status
    100024    1   tcp  39715  status

Межсетевой экран открыт между клиентом и сервером - разрешающее правило существует для интерфейса как для входной, так и для выходной цепочки на каждом хосте.

От клиента, когда я выдаю showmount -e <server_ip>, он зависает на 20 секунд, пока не будет создан список экспорта. Выдача rpcinfo -p <server_ip> он также зависает на 20 секунд, пока в конечном итоге не вернется «rpcinfo: невозможно связаться с portmapper: RPC: удаленная системная ошибка - время ожидания соединения истекло».

Когда я пытаюсь смонтировать экспорт из клиента, используя:

mount -t nfs 10.1.1.33:/opt/nfs /opt/test/nfs

Он зависает на 3 м 30 секунд, возвращая "mount.nfs: Connection timed out".

Однако, если я попытаюсь подключиться через UDP:

mount -o udp -t nfs 10.1.1.33:/opt/nfs /opt/test/nfs

Это мгновенно срабатывает, и крепление становится доступным.

Я ничего не сделал с hosts.allow или hosts.deny (оба пустые, что из моего чтения man 5 hosts_access указывает, что доступ будет разрешен).

Что мне здесь не хватает?

Изменить: SELinux разрешен на обоих хостах.

Оказывается, на нашем коммутаторе PowerConnect была включена функция «безопасности», которая нарушала SYN-пакеты NFS с исходными портами <1024 (dos-control tcpflag). Достаточно сказать, что отключение функции решило проблему.

Хотя SELinux разрешает, попробуйте: setsebool -P nfs_export_all_rw 1 Перезапустите rpcbind, nfs и nfslock, а затем exportfs -a