NFS를 사용하려면 방화벽에서 어떤 포트를 열어야합니까?


73

우분투 11.10을 실행 중입니다-NFS를 설정하여 다른 많은 서버와 디렉토리를 공유합니다. 방화벽에서 어떤 포트를 열어야합니까?


6
사용하려는 프로토콜의 버전에 따라 다릅니다. NFS 4에는 2049 만 필요하지만 이전 버전에는 더 필요합니다.
lzap

답변:


97
$ rpcinfo -p | grep nfs

NFS 서버의 포트 111 (TCP 및 UDP) 및 2049 (TCP 및 UDP).

NFS 잠금 관리자 (포트 4045 TCP 및 UDP) 포트뿐만 아니라 클러스터 및 클라이언트 상태 (이전 포트는 포트 1110 TCP, 후자는 포트 1110 UDP) 용 포트도 있습니다. 교차 게이트웨이에 필요한 서비스에 따라 허용해야 할 포트를 결정할 수 있습니다.


4
나는 rpcinfo에 대해 몰랐다. 그것은 매우 유용하다. 와 함께 포트 111을 보지 못했지만 grep nfsgrep을 중단하여 111이 있음을 알았습니다 portmapper. 알아두면 좋습니다! (그리고 당신이 언급했듯이)
kenny

@KennyYounger rpcinfo도 유용합니다. 이것이 귀하의 질문에 대한 답변 인 경우, 향후 시청자의 이익을 위해 답변으로 표시하십시오.
Wesley

6
파일 시스템을 처음 마운트 할 때는 마운트 된 마운트가 필요합니다. 동적 포트에서 실행되므로 항상 동일하지는 않습니다. 내 답변에 가이드 링크를 넣었습니다.
bonsaiviking

1
@ bonsaiviking 감사합니다. 이 프로세스에 대한 중요한 정보입니다. 나는 당신의 대답을 upvoted!
kenny

해당 서비스 ( "클러스터 및 클라이언트 상태", "NFS 잠금 관리자")의 기능과 필요한시기에 대한 간단한 설명을 제공 할 수 있습니까? 이러한 서비스가 방화벽에 의해 차단되면 NFS 서버와 클라이언트가 정상적으로 성능을 저하 시키거나 응답을 기다리기만합니까?
Nathan Craike

27

portmapper의 경우 111, nfs의 경우 2049 외에도 마운트 된 포트와 rquotad, 잠금 및 statd를 모두 동적으로 지정할 수 있어야합니다. 이 우수한 NFS 보안 안내서 에서는 시작 스크립트와 커널 모듈 구성을 변경하여 정적 포트를 사용하도록 권장합니다.

방화벽에 대한 섹션있는 위의 가이드 외에도 NFS 강화에 대한 다른 질문에 대한 답변 을 참조하십시오 .


7
우리는 내용에 대한 포인터가 아니라 내용을 선호합니다. 링크가있는 내용의 정확성도 좋고 링크보다 선호됩니다.
user9517

2
2012 년에 대해서는 확실하지 않지만 링크의 권장 사항은 매우 오래된 것으로 보입니다. 다양한 이유로 TCP를 통한 NFS가 선호되며 UDP를 통한 NFS는 프로토콜 제한으로 인해 빠른 링크에서 자동 데이터 손상을 일으킬 수 있습니다. 보안 가이드는 커버 로스 / GSS 등의 언급이 없습니다
마치에이 Piechotka에게

마운트 된 마운트와 관련하여 마운트 된 포트가 고정되도록 재구성하면 수명이 훨씬 더 쉽습니다. 데비안 시스템에서 같은에 RPCMOUNTDOPTS 값을 편집 RPCMOUNTDOPTS="--port 34567"한 다음에 다시 시작 sysctl --system하고/etc/init.d/nfs-kernel-server restart
user45793

14

이 페이지에서 내 문제에 대한 유용한 지침을 찾았지만 조리법을 따르기가 쉽지 않았습니다. 여기 제 레시피가 있습니다.

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 및 마운트 된 포트 추가

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 감사합니다, 다음에해볼 게요
Amir Uval

시스템이 사용하는 경우 또는 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그 다음에 (ok, 2 개의 부풀음)이 이어 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

레코드의 경우 Windows 2008 R2 서버에서 NFS 공유를 내보내고 클라이언트가 Ubuntu 12.04.4 인 구성에 대해 포트 111, 2049 1048에 대한 권한을 추가해야했습니다 .

나는 이것이 누군가를 돕기를 바랍니다.


2
포트 1048이 필요한 이유와 그 결정 방법을 설명하면 도움이 될 수 있습니다.
HBruijn

3
솔직히, 왜 1048에 대한 권한을 추가해야했는지에 대한 단서가 없지만 추가하면 문제가 해결되었습니다. 나중에 다른 사람이 시간을 절약 할 수 있다면 공유하고 싶었습니다. 질문에 답변하지 못해 죄송합니다.
Erdem KAYA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.