Які порти мені потрібно відкрити в брандмауері, щоб використовувати 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, але я припинив греп, щоб дізнатися, що 111 для portmapper. Також добре знати! (і як ви вже згадали, необхідне)
kenny

@KennyYounger rpcinfo теж корисний. Якщо це відповіло на ваше запитання, не забудьте позначити це як відповідь на благо майбутніх глядачів.
Веслі

6
Під час першого монтажу файлової системи вам потрібно відкрити mountd. Він працює на динамічному порту, тому він не завжди буде однаковим. Я поклав посилання на керівництво у своїй відповіді.
бонсайвінг

1
Дякую @bonsaiviking Критична інформація для цього процесу. Я підтримав вашу відповідь!
kenny

Чи можете ви дати короткий опис того, що роблять ці служби ("кластер і статус клієнта", "менеджер блокування NFS") і коли вони можуть знадобитися? Якщо ці сервіси заблоковані брандмауером, чи будуть сервіси та клієнти NFS граціозно деградувати або просто заблокують очікування відповіді?
Натан Крейк

27

На додаток до 111 для portmapper та 2049 для nfs, вам потрібно дозволити порт mountd та, можливо, rquotad, lockd та statd, і все це може бути динамічним. Цей чудовий посібник із безпеки NFS рекомендує змінити сценарії запуску та конфігурації модуля ядра, щоб змусити їх використовувати статичні порти.

На додаток до вище посібника, в якому є розділ про брандмауери , дивіться мою відповідь на інше запитання щодо загартовування NFS.


7
Ми дійсно віддаємо перевагу контенту, а не вказівникам на вміст. Примітка вмісту із посиланням також нормальна і надає перевагу посиланню.
користувач9517

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

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, але додавши, що це вирішило мою проблему. Я просто хотів поділитися, якщо це може заощадити час комусь іншому в майбутньому. Мені шкода, що не змогли відповісти на запитання.
Erdem KAYA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.