Какие порты мне нужно открыть в брандмауэре, чтобы использовать NFS?


73

Я использую Ubuntu 11.10 - настраиваю NFS для общего доступа к каталогу среди многих других серверов. Какие порты необходимо открыть на брандмауэре?


6
Это зависит от версии протокола, который вы собираетесь использовать. NFS 4 требует только 2049, в то время как более старые версии требуют большего.
lzap

Ответы:


97
$ rpcinfo -p | grep nfs

Порты 111 (TCP и UDP) и 2049 (TCP и UDP) для сервера NFS.

Есть также порты для статуса кластера и клиента (порт 1110 TCP для первого и 1110 UDP для второго), а также порт для диспетчера блокировки NFS (порт 4045 TCP и UDP). Только вы можете определить, какие порты вам нужно разрешить, в зависимости от того, какие сервисы необходимы кросс-шлюзу.


4
Я не знал о rpcinfo, это довольно полезно. Я не видел порт 111 с grep nfs, но я остановил grep, чтобы узнать, что 111 для portmapper. Также приятно знать! (и, как вы упомянули, необходимо)
Кенни

@KennyYounger rpcinfo также полезен. Если это ответило на ваш вопрос, не забудьте пометить его как ответ для будущих зрителей.
Уэсли

6
Вам нужно mountd open при первом монтировании файловой системы. Он работает на динамическом порту, поэтому он не всегда будет одинаковым. Я поставил ссылку на руководство в моем ответе.
Бонсайвинг

1
Спасибо @bonsaiviking. Критическая информация для этого процесса. Я проголосовал за ваш ответ!
Кенни

Не могли бы вы дать краткое описание того, что делают эти службы («статус кластера и клиента», «диспетчер блокировки NFS») и когда они могут понадобиться? Если эти службы заблокированы брандмауэром, будут ли серверы и клиенты NFS изящно деградировать или просто заблокируют ожидание ответа?
Натан Крейк

27

В дополнение к 111 для portmapper и 2049 для nfs вам потребуется разрешить порт mountd и, возможно, rquotad, lockd и statd, которые могут быть динамическими. Это превосходное руководство по безопасности NFS рекомендует изменить сценарии запуска и настройки модуля ядра, чтобы заставить их использовать статические порты.

В дополнение к приведенному выше руководству, в котором есть раздел о брандмауэрах , см. Мой ответ на еще один вопрос об усилении защиты NFS.


7
Мы действительно предпочитаем контент, а не указатели на контент. Точность содержания со ссылкой тоже в порядке и предпочтительнее ссылки.
user9517 поддерживает GoFundMonica

2
Не уверен насчет 2012 года, но рекомендация в ссылках кажется сильно устаревшей. NFS через TCP предпочтительнее по разным причинам, а NFS через UDP может вызывать тихое повреждение данных на быстром канале из-за ограничений протокола. Руководство по безопасности не упоминает Kerberos / GSS и т. Д.
Maciej Piechotka

Что касается mountd, то жизнь намного проще, если вы переконфигурируете, чтобы убедиться, что порт mountd зафиксирован. В Debian системах, редактировать значение RPCMOUNTDOPTS к чему - то , как RPCMOUNTDOPTS="--port 34567"и затем перезапустить sysctl --systemи/etc/init.d/nfs-kernel-server restart
user45793

14

На этой странице я нашел полезные указания для своей проблемы, но не было простого рецепта. Итак, вот мой рецепт.

TL; DR - необходимо разрешить порты nfs (111, 2049) и порт mountd после его исправления.

Инструкции:


Настройка фиксированного порта для 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)

Это все, что нужно.


3
Вам не нужно перезагружать всю коробку. Простое sudo service nfs-config restartперед перезапуском nfs-kernel-serverподойдет просто отлично.
showp1984

@ showp1984 спасибо, попробую в следующий раз
Амир Увал

Или, если ваша система использует systemctl, это systemctl restart nfs-kernel-server.service.
fbicknel

Вы также можете сделать все это одним циклом: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333затем два (хорошо) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333. Примечание: порт 33333 соответствует приведенному выше примеру. Вы можете использовать другой порт в качестве ответа.
fbicknel

5

Это даст список всех портов, используемых всеми программами, связанными с NFS:

rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq

3

С FERM можно использовать Backticks для получения портов от 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часть).


1

Для записей мне пришлось добавить разрешения для портов 111, 2049 и 1048 для конфигурации, где общий ресурс NFS экспортируется сервером Windows 2008 R2, а клиенты - Ubuntu 12.04.4.

Я надеюсь, что это поможет кому-то.


2
Это может помочь объяснить, зачем вам нужен порт 1048 и как вы это определили.
HBruijn

3
Честно говоря, я понятия не имею, почему мне нужно было добавить разрешение для 1048, но это решило мою проблему. Я просто хотел поделиться, если это может сэкономить время кого-то еще в будущем. Прошу прощения, что не смог ответить на вопрос.
Эрдем Кайя,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.