У мене працює Ubuntu 11.10 - налаштування NFS для спільного використання каталогу серед багатьох інших серверів. Які порти потрібно відкрити на брандмауері?
У мене працює Ubuntu 11.10 - налаштування NFS для спільного використання каталогу серед багатьох інших серверів. Які порти потрібно відкрити на брандмауері?
Відповіді:
$ rpcinfo -p | grep nfs
Порт 111 (TCP і UDP) і 2049 (TCP і UDP) для сервера NFS.
Існують також порти для кластера та статусу клієнта (порт 1110 TCP для першого та 1110 UDP для другого), а також порт для менеджера блокування NFS (порт 4045 TCP та UDP). Тільки ви можете визначити, які порти потрібно дозволити, залежно від того, які сервіси потрібні перехресним шлюзом.
grep nfs
, але я припинив греп, щоб дізнатися, що 111 для portmapper
. Також добре знати! (і як ви вже згадали, необхідне)
На додаток до 111 для portmapper та 2049 для nfs, вам потрібно дозволити порт mountd та, можливо, rquotad, lockd та statd, і все це може бути динамічним. Цей чудовий посібник із безпеки NFS рекомендує змінити сценарії запуску та конфігурації модуля ядра, щоб змусити їх використовувати статичні порти.
На додаток до вище посібника, в якому є розділ про брандмауери , дивіться мою відповідь на інше запитання щодо загартовування NFS.
RPCMOUNTDOPTS="--port 34567"
а потім перезапустіть sysctl --system
і/etc/init.d/nfs-kernel-server restart
На цій сторінці я знайшов корисні вказівки щодо своєї проблеми, але дотримуватися рецепту було нелегко. Отже ось мій рецепт.
TL; DR - потрібно дозволити як порти nfs (111, 2049), так і порт монтажу після виправлення.
Інструкції:
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
)
Це все, що там є.
sudo service nfs-config restart
перед перезапуском заповідника nfs-kernel-server
буде добре.
systemctl
, це systemctl restart nfs-kernel-server.service
.
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 вказана на наведеному вище прикладі. Ви можете використовувати інший порт, як свідчить відповідь.
Це дасть список усіх портів, які використовуються всіма програмами, пов'язаними з NFS:
rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
З 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
частина).
Для записів мені довелося додати дозволи для портів 111, 2049 І 1048 для конфігурації, коли доля NFS експортується сервером Windows 2008 R2, а клієнтами є Ubuntu 12.04.4.
Я сподіваюся, що це комусь допоможе.