Які порти мені потрібно відкрити в брандмауері, щоб використовувати 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.