Я использую Ubuntu 11.10 - настраиваю NFS для совместного использования каталога между многими другими серверами. Какие порты необходимо открыть на брандмауэре?
$ rpcinfo -p | grep nfs
Порт 111 (TCP и UDP) и 2049 (TCP и UDP) для сервера NFS.
Также есть порты для состояния кластера и клиента (порт 1110 TCP для первого и 1110 UDP для последнего), а также порт для диспетчера блокировок NFS (порт 4045 TCP и UDP). Только вы можете определить, какие порты необходимо разрешить, в зависимости от того, какие службы необходимы для кросс-шлюза.
В дополнение к 111 для portmapper и 2049 для nfs вам нужно будет разрешить порт mountd и, возможно, rquotad, lockd и statd, все из которых могут быть динамическими. Это отличное руководство по безопасности NFS рекомендует изменить сценарии запуска и конфигурации модулей ядра, чтобы заставить их использовать статические порты.
В дополнение к приведенному выше руководству, в котором раздел о межсетевых экранах, видеть мой ответ к другому вопросу об усилении защиты NFS.
На этой странице я нашел полезные инструкции по решению моей проблемы, но не было простого рецепта. Итак, вот мой рецепт.
TL; DR - необходимо разрешить оба порта nfs (111, 2049) и порт mountd после его исправления.
Инструкции:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="--port 33333"
Или любой другой номер порта.
теперь попробуйте сбросить nfs, используя:
sudo service nfs-kernel-server restart
И проверьте, помогло ли это, используя:
rpcinfo -p | grep "tcp.*mountd"
Для меня этого было недостаточно, но полный перезапуск устранил проблему.
(кредит)
(1) удалите старые правила, сделайте это вручную или сбросьте, если это единственное использование брандмауэра:
sudo ufw reset
sudo ufw enable
(2) добавить порты nfs и mountd
sudo ufw allow in from 10.0.0.1/20 to any port 111
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333
(Измените на свой локальный IP-адрес или на "any
" вместо того 10.0.0.1/20
)
Вот и все.
Это даст список всех портов, используемых всеми программами, связанными с NFS:
rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
С FERM можно использовать Обратные кавычки чтобы получить порты из rpcinfo, например:
Сервер:
proto tcp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
Клиент:
proto udp {saddr ($SERVER) {ACCEPT;}} # NFS
(Если вы собираетесь использовать только TCP, тогда вам понадобится только proto tcp
часть).
Для записей пришлось добавить разрешения для портов 111, 2049 И 1048 для конфигурации, в которой общий ресурс NFS экспортируется сервером Windows 2008 R2, а клиентами являются Ubuntu 12.04.4.
Я надеюсь, что это поможет кому-то.
Чтобы подключить Synology к системе Ubuntu 18.04, мне пришлось включить порты 111,892,2049
При подключении я вижу следующее (NFS 4 не включен на моем Synology):
root@ub18ovh# mount -a -vv
mount.nfs: trying text-based options 'vers=4.2,addr=5.6.7.8,clientaddr=1.2.3.4'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.1,addr=5.6.7.8,clientaddr=1.2.3.4'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.0,addr=5.6.7.8,clientaddr=1.2.3.4'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=5.6.7.8'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 5.6.7.8 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 5.6.7.8 prog 100005 vers 3 prot UDP port 892
successfully mounted