Które porty muszę otworzyć w zaporze, aby korzystać z NFS?

73

Używam Ubuntu 11.10 - konfigurowanie NFS do udostępniania katalogu między wieloma innymi serwerami. Które porty należy otworzyć w zaporze?

Kenny
źródło
6
To zależy od wersji protokołu, którego zamierzasz użyć. NFS 4 wymaga tylko 2049, podczas gdy starsze wersje wymagają więcej.
lzap

Odpowiedzi:

97
$ rpcinfo -p | grep nfs

Port 111 (TCP i UDP) i 2049 (TCP i UDP) dla serwera NFS.

Istnieją również porty dla statusu klastra i klienta (Port 1110 TCP dla pierwszego i 1110 UDP dla drugiego), a także port dla menedżera blokady NFS (Port 4045 TCP i UDP). Tylko Ty możesz określić, które porty musisz zezwolić, w zależności od potrzebnych usług cross-gateway.

Wesley
źródło
4
Nie wiedziałem o rpcinfo, co jest dość przydatne. Nie widziałem portu 111 z grep nfs, ale zrezygnowałem z grep, aby dowiedzieć się, że 111 jest dla portmapper. Również dobrze wiedzieć! (i jak wspomniałeś, konieczne)
kenny,
@KennyYounger rpcinfo jest również przydatny. Jeśli odpowiedziałeś na to pytanie, nie zapomnij zaznaczyć go jako odpowiedzi na korzyść przyszłych widzów.
Wesley,
6
Musisz zamontować otwarte przy pierwszym podłączeniu systemu plików. Działa na porcie dynamicznym, więc nie zawsze będzie taki sam. W odpowiedzi umieściłem link do przewodnika.
bonsaiviking
1
Dzięki @bonsaiviking. Informacje krytyczne dla tego procesu. Poparłem twoją odpowiedź!
kenny
Czy możesz krótko opisać, co robią te usługi („status klastra i klienta”, „menedżer blokady NFS”) i kiedy mogą być potrzebne? Jeśli te usługi są blokowane przez zaporę ogniową, to czy serwery i klienci NFS ulegną degradacji z gracją, czy po prostu zablokują się w oczekiwaniu na odpowiedź?
Nathan Craike,
27

Oprócz 111 dla portmapper i 2049 dla nfs, musisz zezwolić na montowany port i ewentualnie rquotad, lockd i statd, z których wszystkie mogą być dynamiczne. Ten doskonały przewodnik bezpieczeństwa NFS zaleca zmianę skryptów startowych i konfiguracji modułów jądra, aby zmusić je do używania portów statycznych.

Oprócz powyższego przewodnika, który zawiera sekcję dotyczącą zapór ogniowych , zobacz moją odpowiedź na inne pytanie dotyczące wzmacniania NFS.

bonsaiviking
źródło
7
Naprawdę wolimy treść, a nie wskaźniki od treści. Precyzja treści z linkiem jest również w porządku i preferowana od linku.
user9517
2
Nie jestem pewien co do roku 2012, ale zalecenie w linkach wydaje się rażąco nieaktualne. NFS zamiast TCP jest preferowany z różnych powodów, a NFS zamiast UDP może powodować ciche uszkodzenie danych na szybkim łączu z powodu ograniczeń protokołu. Przewodnik bezpieczeństwa nie wspomina o Kerberos / GSS itp.
Maciej Piechotka
Jeśli chodzi o mountd, życie jest znacznie łatwiejsze, jeśli zmienisz konfigurację, aby upewnić się, że port mountd jest naprawiony. W systemach Debian zmień wartość RPCMOUNTDOPTS na coś podobnego, RPCMOUNTDOPTS="--port 34567"a następnie uruchom ponownie za pomocą sysctl --systemi/etc/init.d/nfs-kernel-server restart
user45793
14

Na tej stronie znalazłem przydatne wskazówki dotyczące mojego problemu, ale przepis nie był łatwy do wykonania. Oto mój przepis.

TL; DR - po naprawie należy zezwolić zarówno na porty nfs (111, 2049), jak i port montowany.

Instrukcje:


Konfigurowanie stałego portu dla mountd

gksudo gedit /etc/default/nfs-kernel-server
  • skomentuj ten wiersz: RPCMOUNTDOPTS=--manage-gids
  • dodaj to zamiast: RPCMOUNTDOPTS="--port 33333"

Lub dowolny inny numer portu.

teraz spróbuj zresetować NFS używając:

sudo service nfs-kernel-server restart

I sprawdź, czy pomogło to w użyciu:

rpcinfo -p | grep "tcp.*mountd"

Dla mnie to nie wystarczyło, ale pełne ponowne uruchomienie rozwiązało problem.

( kredyt )


Konfigurowanie zapory ogniowej

(1) usuń stare reguły, zrób to ręcznie lub zresetuj, jeśli jest to jedyne zastosowanie zapory:

sudo ufw reset
sudo ufw enable

(2) dodaj nfs i zamontowane porty

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

(Zmień na lokalne adresy IP lub na „ any” zamiast 10.0.0.1/20)

To wszystko.

Amir Uval
źródło
3
Nie musisz ponownie uruchamiać całego pudełka. Proste sudo service nfs-config restartprzed ponownym uruchomieniem nfs-kernel-serverbędzie w porządku.
showp1984
@ showp1984 dzięki, spróbuję następnym razem
Amir Uval
Lub jeśli twój system używa systemctl, to jest systemctl restart nfs-kernel-server.service.
fbicknel
Możesz to zrobić wszystko w jednym spuchniętym foopie: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333a następnie (ok, dwa spuchnięte foopie) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333. Uwaga port 33333 jest zgodny z powyższym przykładem. Możesz użyć innego portu, jak wskazuje odpowiedź.
fbicknel
5

Spowoduje to wyświetlenie listy wszystkich portów używanych przez wszystkie programy związane z NFS:

rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
charlesnadeau
źródło
3

Za pomocą FERM można użyć Backticks, aby uzyskać porty z rpcinfo, na przykład:

Serwer:

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
}}

Klient:

proto udp {saddr ($SERVER) {ACCEPT;}}  # NFS

(Jeśli zamierzasz używać tylko TCP, potrzebujesz tylko proto tcpczęści).

Artem
źródło
1

Do celów rejestracyjnych musiałem dodać uprawnienia dla portów 111, 2049 i 1048 dla konfiguracji, w której udział NFS jest eksportowany przez serwer Windows 2008 R2, a klientami są Ubuntu 12.04.4.

Mam nadzieję, że to komuś pomoże.

Erdem KAYA
źródło
2
Może to pomóc wyjaśnić, dlaczego potrzebujesz portu 1048 i jak to określiłeś.
HBruijn
3
Szczerze mówiąc, nie mam pojęcia, dlaczego muszę dodać pozwolenie na 1048, ale dodanie tego rozwiązało mój problem. Chciałem się tylko podzielić, jeśli to pozwoli zaoszczędzić czas komuś innemu w przyszłości. Przykro mi, że nie mogłem odpowiedzieć na pytanie.
Erdem KAYA,