
У меня есть две машины A и B, которые не находятся в одной сети, и я хотел бы экспортировать общий ресурс NFS с одной машины на другую.
Посередине у меня стоит машина M, которая находится в обеих сетях.
Я успешно смонтировал свою долю A на M. Теперь я хотел бы экспортировать эту монтировку на B.
Я создал экспорт на M, вот так:
/mnt/path/to/mountpoint/of/A's/nfsshare <B's IP address>(rw,insecure,secure,root_squash,wdelay,sync,no_subtree_check)
И попробовал установить его на B, вот так:
<M's hostname>:/mnt/path/to/mountpoint/of/A's/nfsshare /some/empty/directory nfs auto,rw,rsize=65535 0 0
Когда я пытаюсь смонтировать экспорт M, я получаю следующее сообщение на B:
mount.nfs: vm-dc:/mnt/dcstore01/data02/formats_exploitation не удалось, причина указана сервером: Отказано в доступе
И я получаю это сообщение в системном журнале M:
Dec 6 13:53:05 vm-dc rpc.mountd[27916]: authenticated mount request from 10.0.0.1:773 for /mnt/dcstore01/data02/formats_exploitation (/mnt/dcstore01/data02)
Dec 6 13:53:05 vm-dc rpc.mountd[27916]: qword_eol: fflush failed: errno 22 (Invalid argument)
Dec 6 13:53:05 vm-dc rpc.mountd[27916]: Cannot export /mnt/dcstore01/data02, possibly unsupported filesystem or fsid= required
Что я должен делать ?
решение1
Это называется nfs re-export и запрещено современными ядрами/дистрибутивами Linux. В качестве обходного пути попробуйте переадресацию портов на хосте M:
iptables -t nat -A PREROUTING -p tcp --dport 2049 -j DNAT --to-destination 10.10.10.10:2049
iptables -t nat -A POSTROUTING -p tcp --dport 2049 -j MASQUERADE
Сделайте то же самое для mountd, но лучше сначала исправить порт mountd в /etc/sysconfig/nfs на хосте A.
RPCMOUNTDOPTS="--port 2052"
Имейте в виду, что mountd также может использовать udp.