Computer >> 컴퓨터 >  >> 시스템 >> Linux

Linux CentOS/RHEL에서 NFS 서버 및 클라이언트 구성 완벽 가이드

NFS(Network File System)는 파일과 폴더를 네트워크를 통해 공유하기 위한 분산 파일 시스템 프로토콜입니다. NFS는 ONC RPC(Remote Procedure Call) 프로토콜을 기반으로 하며, 원격 파일 시스템을 네트워크를 통해 마운트할 수 있게 해줍니다.

다만 NFS는 기본적으로 데이터가 암호화되지 않고, 클라이언트에 대한 인증도 제공되지 않는다는 점에 유의해야 합니다(접근은 IP 기반으로만 제한 가능). 따라서 보안이 중요한 환경에서는 방화벽 설정과 네트워크 접근 제어를 신중하게 구성하는 것이 좋습니다.

NFS는 서버와 클라이언트 모두 비교적 간단하게 구성할 수 있습니다. 이 글에서는 NFS 서버를 설치하고 구성하는 방법, 그리고 클라이언트에서 NFS 공유 디렉터리에 연결하는 방법을 단계별로 살펴보겠습니다. 이 가이드는 CentOS, RHEL, Fedora 등 RPM 기반 리눅스 배포판을 기준으로 작성되었습니다.

CentOS에서 NFS 서버 설치 및 구성 방법

CentOS는 표준 패키지 구성 시 NFS가 기본적으로 설치되어 있습니다. 만약 NFS 관련 패키지를 삭제했거나 Minimal Install 모드로 서버를 설치했다면, yum 또는 dnf 패키지 관리자로 NFS 패키지를 설치할 수 있습니다.

CentOS 8 이상에서는 다음 명령어를 사용합니다:

# dnf install nfs-utils -y

설치가 완료되었는지 확인한 후 진행하시기 바랍니다.

Linux CentOS/RHEL에서 NFS 서버 및 클라이언트 구성 완벽 가이드

현재 NFS 서버 버전은 NFSv3와 NFSv4 프로토콜 버전을 지원하며, NFSv2는 기본적으로 비활성화되어 있습니다. 지원되는 NFS 버전 목록은 다음 명령어로 확인할 수 있습니다:

cat /proc/fs/nfsd/versions

NFS 서비스 시작 및 부팅 시 자동 실행 설정

필요한 패키지 설치가 끝나면 nfs-server와 rpcbind 서비스를 시작하고, 시스템 부팅 시 자동으로 실행되도록 등록합니다:

# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server

참고로 NFSv4.1/4.2만 사용할 계획이라면 rpcbind 서비스는 필요하지 않습니다.

방화벽 포트 개방

firewalld를 사용하는 경우 다음 포트와 서비스를 허용해야 합니다:

# firewall-cmd --permanent --add-port=111/tcp
# firewall-cmd --permanent --add-port=20048/tcp
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=mountd
# firewall-cmd --permanent --zone=public --add-service=rpc-bind
# firewall-cmd --reload

Linux CentOS/RHEL에서 NFS 서버 및 클라이언트 구성 완벽 가이드

iptables를 사용하는 환경이라면 아래 명령어로 필요한 포트를 열어줄 수 있습니다:

# iptables -t filter -A INPUT -p tcp --dport 111 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 2049 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 20048 -j ACCEPT
# service iptables save
# service iptables restart

공유 디렉터리 생성 및 /etc/exports 설정

이제 NFS 서버가 공유할 디렉터리를 생성합니다:

# mkdir -p /backup/nfs
# chmod -R 777 /backup/nfs

NFS 공유 정보와 접근 권한은 NFS 서버 설정 파일인 /etc/exports에 작성합니다:

# nano /etc/exports

특정 IP 대역의 모든 호스트에 NFS 접근을 허용하려면 다음 줄을 추가합니다:

/backup/nfs 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)

또는 특정 IP 주소 하나에만 접근을 허용할 수도 있습니다:

/backup/nfs 192.168.2.24(rw,sync,no_root_squash,no_all_squash, anonuid=1000,anongid=1000) 192.168.3.100(ro,async,no_subtree_check)

/etc/exports 주요 옵션 정리

  • rw – 쓰기 권한 부여, ro – 읽기 전용 접근 허용
  • sync – 동기화 모드로 동작, async – 디스크 쓰기 확인을 기다리지 않음(NFS 성능은 향상되지만 데이터 안정성은 저하됨)
  • no_root_squash – 클라이언트의 root 사용자가 NFS 디렉터리에 root 권한으로 접근 가능(일반적으로는 권장하지 않음)
  • no_all_squash – 사용자 인증 활성화, all_squash – 모든 접속을 익명 사용자(anonymous) 권한으로 매핑
  • no_subtree_check – 하위 디렉터리 파일 접근 검사 비활성화(기본값은 subtree_check)
  • anonuid, anongid – NFS 사용자/그룹을 지정된 로컬 사용자/그룹(UID 또는 GID)에 매핑

새로운 NFS 공유 설정을 적용하려면 다음 명령어를 실행합니다:

# exportfs -a

그리고 NFS 서버를 재시작합니다:

# systemctl restart nfs-server

이것으로 NFS 서버 측 구성이 완료되었습니다. 이제 클라이언트 설정으로 넘어가겠습니다.

CentOS에서 NFS 클라이언트 구성 방법

NFS 클라이언트를 구성하려면 서버와 마찬가지로 nfs-utils 패키지가 필요합니다:

# yum install nfs-utils -y

관련 서비스를 부팅 시 자동 실행으로 등록하고 시작합니다:

# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server

그다음, 원격 NFS 디렉터리를 마운트할 로컬 디렉터리를 생성합니다:

# mkdir /backup

이제 다음 명령어로 원격 NFS 공유를 마운트할 수 있습니다:

# mount -t nfs 192.168.0.100:/backup/nfs/ /backup

사용할 NFS 프로토콜 버전을 강제로 지정할 수도 있습니다:

# mount -t nfs -o vers=4 192.168.0.100:/backup/nfs/ /backup

여기서 IP는 앞서 구성한 NFS 서버의 주소입니다.

Linux CentOS/RHEL에서 NFS 서버 및 클라이언트 구성 완벽 가이드

마운트가 완료되면 연결된 NFS 공유가 마운트된 드라이브 목록에 표시됩니다. 해당 디렉터리에서 데이터를 읽거나 쓸 수 있으며(권한은 NFS 서버에서 IP별로 할당한 설정에 따름), 재부팅 후에도 자동으로 마운트되도록 하려면 fstab 파일을 수정해야 합니다:

# nano /etc/fstab

파일에 다음 줄을 추가합니다:

192.168.0.100:/backup/nfs/ /backup/ nfs rw,sync,hard,intr 0 0

fstab 저장 후에는 다음 명령어로 바로 적용할 수 있습니다:

# mount -a

이렇게 해서 원격 NFS 스토리지를 구성하고 연결했습니다. 이제 여러 호스트에서 공유 리소스에 투명하게 네트워크 접근할 수 있으며, 백업 파일, ISO 이미지 등을 NFS 디렉터리에 저장하여 활용할 수 있습니다.