Я использую 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
, но я остановил grep, чтобы узнать, что 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) и порт 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
)
Это все, что нужно.
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.
Я надеюсь, что это поможет кому-то.