NFS 서버 및 방화벽


16

나는 이것에 관한 슬램 덩크 문서를 찾지 못 했으므로 시작하자.

CentOS 7.1 호스트 에서 항목을 포함하여 linuxconfig HOW-TO 를 진행했으며 firewall-cmd내보낼 수있는 파일 시스템이 있습니다.

[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
  interfaces: enp5s0
  sources: 192.168.10.0/24
  services: dhcpv6-client ipp-client mdns ssh
  ports: 2049/tcp
  masquerade: no
  forward-ports: 
  rich rules: 

[root@<server> ~]# showmount -e localhost
Export list for localhost:
/export/home/<user> *.localdomain

그러나 showmount클라이언트의 경우 에도 여전히 문제가 있습니다.

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

이제 이것이 방화벽 문제인지 어떻게 확신합니까? 쉬운. 방화벽을 끄십시오. 서버 측:

[root@<server> ~]# systemctl stop firewalld

그리고 클라이언트 쪽 :

[root@<client> ~]# showmount -e <server>.localdomain
Export list for <server>.localdomain:
/export/home/<server> *.localdomain

방화벽을 다시 시작하십시오. 서버 측:

[root@<server> ~]# systemctl start firewalld

그리고 클라이언트 쪽 :

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

이제 RHEL 6 NFS 서버iptables 명령을 적용하여 도시로 가보자 ...

[root@ ~]# firewall-cmd \
>  --add-port=111/tcp \
>  --add-port=111/udp \
>  --add-port=892/tcp \
>  --add-port=892/udp \
>  --add-port=875/tcp \
>  --add-port=875/udp \
>  --add-port=662/tcp \
>  --add-port=662/udp \
>  --add-port=32769/udp \
>  --add-port=32803/tcp
success

[root@<server> ~]# firewall-cmd \
>  --add-port=111/tcp \
>  --add-port=111/udp \
>  --add-port=892/tcp \
>  --add-port=892/udp \
>  --add-port=875/tcp \
>  --add-port=875/udp \
>  --add-port=662/tcp \
>  --add-port=662/udp \
>  --add-port=32769/udp \
>  --add-port=32803/tcp \
>  --permanent
success

[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
  interfaces: enp5s0
  sources: 192.168.0.0/24
  services: dhcpv6-client ipp-client mdns ssh
  ports: 32803/tcp 662/udp 662/tcp 111/udp 875/udp 32769/udp 875/tcp 892/udp 2049/tcp 892/tcp 111/tcp
  masquerade: no
  forward-ports: 
  rich rules: 

이번에는 클라이언트에서 약간 다른 오류 메시지가 나타납니다.

[root@<client> ~]# showmount -e <server>.localdomain
rpc mount export: RPC: Unable to receive; errno = No route to host

그래서 나는 내가 올바른 길을 가고 있다는 것을 안다. 그 말을했는데 왜 이것에 대한 결정적인 튜토리얼을 찾을 수 없습니까? 나는 이것을 알아 낸 최초의 사람이 될 수 없었다!

어떤 firewall-cmd항목이 누락 되었습니까?

아, 하나 더. 내 /etc/sysconfig/nfs에 CentOS 6 클라이언트와 CentOS는 7 서버에있는 파일은 지금까지 수정되지 않은 있습니다. 나는 가능하다면 그것들을 바꾸고 유지하지 않아도된다.

답변:


40

이것으로 충분합니다 :

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload

내 경우에는 충분하지 않습니다. 두 개의 NFS 서버가 있는데, 첫 번째 서버는 올바르게 브로드 캐스트하고 클라이언트가 구독하고, 두 번째는 분명히 모든 브로드 캐스트를 브로드 캐스트하지만 클라이언트 (첫 번째 서버)는 'showmount'(rpc 마운트 내보내기 : RPC :를 사용할 수 없음) 수신; errno = 호스트에 대한 경로 없음). 이 문제를 해결하면 여기로 돌아옵니다.
Urhixidur

서버가 방화벽에 추가 된 세 가지 서비스 (nfs, mountd, rpc-bind)가 필요하다는 것을 밝혀냅니다 (클라이언트가 세 가지를 모두 필요로하는 경우 몰라요. 필자의 경우 클라이언트 (첫 번째 NFS 서버)에는 있었지만 서버 (두 번째 NFS 서버)에는 마운트가 누락되었습니다.
Urhixidur

방화벽은 나가는 연결을 허용하기 때문에 @Urhixidur 클라이언트는 이들을 필요로하지 않아야합니다.
T0xicCode

rpc-bind의 철자를주의하십시오. systemctl enable rpcbind및로 활성화했지만 systemctl start rpcbindfirewall-cmd가 나에게 말했다 Error: INVALID_SERVICE: rpcbind. 곧 나는이 맥락에서 대시가 필요하다는 것을 깨달았습니다! 그들은 실제로 같은 서비스입니까?
Qwertie

5

NFS 서버를 구성한 후 다음 세 가지 서비스를 활성화하고 시작해야합니다.

  1. nfs-server.service
  2. rpcbind.service
  3. nfs-mountd.service (시작 만 필요)

또한 서버 방화벽에서 다음 서비스를 허용하십시오.

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload

4

방금 이것을 발견-문제가 SELinux가 로그인하는 동안 ~ / .ssh / authorized_keys의 읽기를 차단하는 경우 작동합니다! 먼저 ~ / .ssh / authorized_keys 파일이 올바르게 채워지고 권한 및 폴더 권한이 올바르게 설정되어 있는지 확인하십시오. 그런 다음 SSH 대상 호스트에서 "setenforce 0"을 실행하고 암호를 입력하지 않고 해당 호스트에 로그인 할 수 있지만 동일한 대상 호스트에서 "setenforce 1"을 입력 한 후에는 로그인 할 수 없으면 다음과 같은 문제가 해결 될 수 있습니다.

setsebool -P use_nfs_home_dirs 1

심판 : https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/


0

나는 nfsv4를 사용하고 해당 라인과 잘 작동하며 영역이 "public"이고 기본 포트 2049 및 4001을 사용한다고 가정합니다.

firewall-cmd --permanent --add-service=nfs --zone=public
firewall-cmd --permanent --add-service=mountd --zone=public
firewall-cmd --permanent --add-service=rpc-bind --zone=public
firewall-cmd --permanent --add-port=4001/udp --zone=public
firewall-cmd --permanent --add-port=4001/tcp --zone=public
firewall-cmd --permanent --add-port=2049/tcp --zone=public
firewall-cmd --permanent --add-port=2049/udp --zone=public
firewall-cmd --reload
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.