NFS 서버 및 방화벽

NFS 서버 및 방화벽

아직 이에 대한 슬램덩크 문서를 찾지 못했으므로 시작해 보겠습니다.

CentOS 7.1 호스트에서 나는 경험했습니다.linuxconfig 작업 방법, 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 서버의 파일은 수정되지 않았습니다. 가능하다면 변경(및 유지 관리)할 필요가 없습니다.

답변1

이것으로 충분합니다:

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

답변2

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

  1. nfs-server.service
  2. rpcbind서비스
  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

답변3

방금 이것을 발견했습니다. SELinux가 로그인 중 ~/.ssh/authorized_keys 읽기를 차단하는 문제가 발생했을 때 작동했습니다! 먼저 ~/.ssh/authorized_keys 파일이 올바르게 채워졌는지, 해당 권한과 해당 폴더의 권한이 올바르게 설정되었는지 확인하세요. 그런 다음 SSH 대상 호스트에서 "setenforce 0"을 실행하고 비밀번호를 입력하지 않고 해당 호스트에 로그인할 수 있지만 동일한 대상 호스트에서 "setenforce 1"을 입력한 후에 로그인할 수 없는 경우 다음 방법으로 문제를 해결할 수 있습니다. :

setebool -P use_nfs_home_dirs 1

인용하다:https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/

답변4

나는 nfsv4를 사용하고 있으며 귀하의 영역이 "공개"이고 기본 포트 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

제가 잊어버린 한 가지 중요한 사실은 mountd에 대한 정적 포트를 설정하여 showmount -e공유를 보는 데 사용할 수 있다는 것입니다. 저는 개인적으로 34777을 사용합니다

root      1873     1  0 21:11 ?        00:00:00 /usr/sbin/rpc.mountd -p 34777

따라서 방화벽에서 포트를 엽니다.

  firewall-cmd --permanent --add-port=34777/udp --zone=public
  firewall-cmd --permanent --add-port=34777/tcp --zone=public

마운트 포트의 구성은 배포 버전과 다릅니다. 일부는 /etc/sysconfig를 사용하고 일부는 /etc/default를 사용하며 일부는 스크립트 편집이 필요합니다. 배포판 설명서를 확인하세요.

관련 정보