Ubuntu 18.04에 NFS 서버 설치 및 구성 방법

Ubuntu 18.04에 NFS 서버 설치 및 구성 방법

2022-06-01 last update

15 minutes reading nfs ubuntu terminal mount
NFS(Network File System)는 네트워크를 통해 원격 디렉토리를 공유할 수 있는 분산 파일 시스템 프로토콜입니다.NFS를 사용하면 원격 디렉토리를 시스템에 마운트하고 로컬 파일처럼 원격 컴퓨터의 파일을 처리할 수 있습니다.NFS 프로토콜은 기본적으로 암호화되지 않습니다Samba와 다름
사용자 인증을 제공하지 않습니다.서버에 대한 액세스는 클라이언트 IP 주소 또는 호스트 이름으로 제한됩니다.이 강좌에서는 Ubuntu 18.04에 NFSv4 서버를 설정하는 방법을 설명합니다.클라이언트에 NFS 파일 시스템을 마운트하는 방법도 보여 드리겠습니다.

선결 조건

이 예는 Ubuntu 18.04를 실행하는 서버가 있고 다른 Linux 버전을 실행하는 서버가 있다고 가정합니다.서버와 클라이언트는 전용 네트워크를 통해 서로 통신할 수 있어야 한다.위탁 관리 공급자가 개인 IP 주소를 제공하지 않으면 공공 IP 주소를 사용하고 서버 방화벽을 설정하여 포트2049의 데이터가 신뢰할 수 있는 출처에서만 나올 수 있도록 할 수 있다.이 예제의 시스템에는 다음과 같은 IP가 있습니다.
NFS Server IP: 192.168.33.10
NFS Clients IPs: From the 192.168.33.0/24 range

NFS 서버 설정

NFS 서버를 설치하고 구성할 때부터 시작합니다.

NFS 서버 설치

패키지 인덱스를 새로 고치고 NFS 서버 패키지를 설치합니다.
sudo apt updatesudo apt install nfs-kernel-server
설치가 완료되면 NFS 서비스가 자동으로 시작됩니다.기본적으로 NFS 버전 2는 Ubuntu 18.04에서 비활성화됩니다.버전 3과 4가 활성화되었습니다.다음 명령 cat command을 실행하여 확인할 수 있습니다.
:
sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
NFSv2는 이미 낡았기 때문에 사용할 이유가 없습니다.NFS 서버 구성 옵션은 /etc/default/nfs-kernel-server/etc/default/nfs-common 파일에서 설정됩니다.우리의 예에서 기본 설정만으로도 충분하다.

파일 시스템 만들기

NFSv4 서버를 구성할 때 글로벌 NFS 루트 디렉토리를 사용하고 공유 마운트 지점에 실제 디렉토리를 바인딩하는 것이 좋습니다.이 예에서는 /srv/nfs4 디렉토리를 NFS 루트 디렉토리로 사용합니다.우리는 서로 다른 구성 설정을 사용하여 두 개의 디렉터리 /var/www/opt/backups 를 공유하여 NFS 마운트를 구성하는 방법을 더욱 잘 설명할 것입니다. mkdir 를 사용하여 내보내기 파일 시스템 만들기
명령:
sudo mkdir -p /srv/nfs4/backupssudo mkdir -p /srv/nfs4/www
실제 디렉터리 마운트:
sudo mount --bind /opt/backups /srv/nfs4/backupssudo mount --bind /var/www /srv/nfs4/www
바인딩 마운트를 영구화하려면 /etc/fstab 파일을 엽니다.
sudo nano /etc/fstab
다음 줄을 추가합니다./etc/fstab
/opt/backups /srv/nfs4/backups  none   bind   0   0
/var/www     /srv/nfs4/www      none   bind   0   0

파일 시스템 내보내기

다음 단계는 NFS 서버가 내보낼 파일 시스템, 공유 선택 항목, 이 파일 시스템에 접근할 수 있는 클라이언트를 정의하는 것입니다.이렇게 하려면 /etc/exports 파일을 엽니다.
sudo nano /etc/exports
/etc/exports 파일에는 디렉터리를 내보내는 방법에 대한 설명도 포함되어 있습니다.이 예에서는 wwwbackups 디렉터리를 내보내고 192.168.33.0/24 네트워크에서 온 클라이언트의 접근만 허용해야 합니다./etc/exports
/srv/nfs4         192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
/srv/nfs4/www     192.168.33.110(rw,sync,no_subtree_check)
첫 번째 줄에는 fsid=0 NFS 루트 디렉터리/srv/nfs4가 정의되어 있습니다.192.168.33.0/24 서브넷의 클라이언트만 이 NFS 볼륨에 액세스할 수 있습니다.내보내기 디렉토리의 하위 디렉토리로 사용할 디렉토리를 공유하려면 crossmnt 옵션을 사용해야 합니다.두 번째 줄은 한 파일 시스템에 여러 개의 내보내기 규칙을 지정하는 방법을 보여 줍니다.전체 /srv/nfs4/backups 범위에 대해서만 읽기 액세스를 허용하고 192.168.33.0/24 에 대해서만 읽기 및 쓰기 액세스를 허용하는 디렉터리 192.168.33.3 를 내보냅니다.sync 옵션은 NFS가 응답하기 전에 디스크에 쓰기를 변경할 것을 알려 줍니다.마지막 줄은 말하지 않고 자명해야 한다.터미널에서 사용할 수 있는 모든 옵션에 대한 자세한 내용은 man exports 를 입력합니다.파일을 저장하고 공유를 내보냅니다.
sudo exportfs -ra
파일을 수정할 때마다 위의 명령을 실행해야 합니다.오류나 경고가 있으면 터미널에 표시됩니다.현재 활동의 수출과 상태를 보려면
sudo exportfs -v
수출에는 모든 주식과 옵션이 포함됩니다.보시다시피 /etc/exports 파일에 정의되지 않은 옵션도 있습니다.이것은 기본 옵션입니다. 변경하려면 이 옵션을 명시적으로 설정해야 합니다.
/srv/nfs4/backups
		192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.33.110(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4     	192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
		192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
Ubuntu에서 기본적으로 사용됩니다/etc/exports.이것은 NFS 보안과 관련된 가장 중요한 옵션 중 하나입니다.클라이언트에서 연결된 루트 사용자가 불러오는 공유에 루트 권한을 가지는 것을 방지합니다.루트root_squashUIDGID/nobody/nogroup/UID 에 매핑합니다.클라이언트 컴퓨터의 사용자가 액세스할 수 있도록 NFS는 클라이언트의 사용자 및 그룹 ID가 서버의 사용자 및 그룹 ID와 일치하도록 합니다.또 다른 선택은 NFSv4 idmapping 기능을 사용하여 사용자와 그룹 ID를 이름으로 변환하는 것입니다.그렇습니다.Ubuntu 서버에 NFS 서버가 이미 설치되어 있습니다.이제 클라이언트를 구성하고 NFS 서버에 연결할 수 있습니다.

방화벽 구성

네트워크에서 방화벽을 실행하는 경우 NFS 포트에서 트래픽을 활성화하는 규칙을 추가해야 합니다.사용 중인 경우 GID UFW 서브넷에서 액세스할 수 있도록 방화벽을 관리하려면 다음과 같은 명령을 실행해야 합니다.
sudo ufw allow from 192.168.33.0/24 to any port nfs
변경 실행 확인:
sudo ufw status
출력은 허용 포트192.168.33.0/24의 흐름을 표시해야 합니다.
To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)  

NFS 클라이언트 설정

현재 NFS 서버가 설정되어 공유를 유도하고 있습니다. 다음 단계는 클라이언트를 설정하고 원격 파일 시스템을 마운트하는 것입니다.당신도 가능mount the NFS share
macOS와 Windows 시스템에서는 Linux 시스템에 중점을 둡니다.

NFS 클라이언트 설치

클라이언트 컴퓨터에서 원격 NFS 파일 시스템을 마운트하는 데 필요한 도구만 설치하면 됩니다.
  • Debian과 Ubunthuth에 NFS 클라이언트를 설치하면 Debian 기반 릴리스에 NFS 파일 시스템을 설치하는 데 사용되는 프로그램의 패키지의 이름이 포함됩니다 2049.설치하려면 다음을 실행하십시오:
    sudo apt updatesudo apt install nfs-common
  • CentOS 및 FedoraOn Red Hat 및 파생물에 NFS 클라이언트 설치nfs-common 패키지:
    sudo yum install nfs-utils
  • 파일 시스템 마운트

    IPnfs-utils가 있는 클라이언트 컴퓨터에서 작업합니다. 이 클라이언트는 192.168.33.110 파일 시스템에 대한 읽기 및 쓰기 액세스 권한과 /srv/nfs4/www 파일 시스템에 대한 읽기 전용 액세스 권한을 가지고 있습니다.마운트 지점을 위한 두 개의 새 디렉터리를 만듭니다.어느 위치에서든 이 디렉터리를 만들 수 있습니다.
    sudo mkdir -p /backupssudo mkdir -p /srv/www
    내보내기 파일 시스템 마운트 /srv/nfs4/backups 사용
    명령:
    sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backupssudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www
    여기서 mount 은 NFS 서버의 IP입니다.IP 주소가 아닌 호스트 이름을 사용할 수도 있지만 클라이언트 컴퓨터에서 확인해야 합니다.이 작업은 일반적으로 호스트 이름 192.168.33.10 의 IP에 매핑하여 수행됩니다.
    파일NFSv4 파일 시스템을 마운트할 때 NFS 루트 디렉터리를 생략해야 하므로 /etc/hosts 대신 /srv/nfs4/backups 를 사용해야 합니다.마운트 또는 /backups 을 사용하여 원격 파일 시스템이 성공적으로 마운트되었는지 확인
    명령:
    df -h
    이 명령은 마운트된 모든 파일 시스템을 인쇄합니다.마지막 두 줄은 마운트 공유입니다.
    Filesystem                       Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-LogVol00   38G  1.7G   36G   5% /
    devtmpfs                         236M     0  236M   0% /dev
    tmpfs                            244M     0  244M   0% /dev/shm
    tmpfs                            244M  4.5M  240M   2% /run
    tmpfs                            244M     0  244M   0% /sys/fs/cgroup
    /dev/sda2                       1014M   87M  928M   9% /boot
    tmpfs                             49M     0   49M   0% /run/user/1000
    192.168.33.10:/backups           9.7G  1.2G  8.5G  13% /backups
    192.168.33.10:/www               9.7G  1.2G  8.5G  13% /srv/www
    마운트를 재부팅할 때 영구화하려면 df 파일을 엽니다.
    sudo nano /etc/fstab
    다음 줄을 추가합니다./etc/fstab
    192.168.33.10:/backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
    192.168.33.10:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0
    
    NFS 파일 시스템을 마운트할 때 사용할 수 있는 옵션에 대한 자세한 정보를 찾으려면 끝에 /etc/fstab 를 입력하십시오.원격 파일 시스템을 불러오는 또 다른 옵션은 man nfs 도구를 사용하거나 시스템d 단원을 만드는 것입니다.

    NFS 액세스 테스트

    공유에 대한 접근 테스트creating a new file를 통해
    그들 모두에게먼저 autofs 디렉터리에 테스트 파일을 만들기 위해 /backups 를 시도합니다
    명령:
    sudo touch /backups/test.txt
    파일 시스템을 읽기 전용으로 내보내면 touch 오류 메시지가 표시됩니다.
    touch: cannot touch ‘/backups/test’: Permission denied
    
    다음으로 /backup 테스트 파일을 루트 디렉터리로 Permission denied 디렉터리에 만들기 위해
    명령:
    sudo touch /srv/www/test.txt
    다시 메시지가 표시됩니다.
    touch: cannot touch ‘/srv/www’: Permission denied
    
    기억난다면/srv/wwwdirectory is ownedsudo 사용자가 만든 이 공유에는 Permission denied 옵션 집합이 있습니다. 이 옵션 집합은 루트 사용자를 원격 공유에 쓰기 권한이 없는 /var/www 사용자와 www-data 그룹에 매핑합니다.클라이언트 컴퓨터에서 사용하는 경우root_squash가 원격 서버에서 사용하는 경우nobodynogroup와 동일하다고 가정합니다(예: 사용자installed nginx.
    이 두 기기에서) 사용자 신분www-data으로 파일을 만드는 것을 테스트할 수 있습니다.
    sudo -u www-data touch /srv/www/test.txt
    이 명령은 출력을 표시하지 않습니다. 이것은 파일이 성공적으로 만들어졌다는 것을 의미합니다.그것을 확인하려면 UID 디렉터리에 있는 파일을 열거하십시오.
    ls -la /srv/www
    출력은 새로 만든 파일을 표시해야 합니다.
    drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18 .
    drwxr-xr-x 3 root     root     4096 Jun 23 22:29 ..
    -rw-r--r-- 1 www-data www-data    0 Jun 23 21:58 index.html
    -rw-r--r-- 1 www-data www-data    0 Jun 23 22:18 test.txt
    

    NFS 파일 시스템 제거

    원격 NFS 공유가 필요하지 않으면umount 명령을 사용하여 다른 마운트된 파일 시스템으로 마운트 해제할 수 있습니다.예를 들어, 실행할 공유GID를 제거하려면:
    sudo umount /backups
    마운트 지점이 www-data 파일에 정의되어 있는 경우 행을 삭제하거나 행의 시작 부분에 /srv/www 을 추가하여 주석을 달아야 합니다.

    결론

    이 강좌에서는 NFS 서버를 설정하는 방법과 클라이언트 컴퓨터에 원격 파일 시스템을 마운트하는 방법을 보여 줍니다.만약 생산 과정에서 NFS를 실현하고 민감한 데이터를 공유한다면kerberos 인증을 사용하는 것은 좋은 생각입니다.NFS 대안으로 사용 가능SSHFS
    SSH 연결을 통해 원격 디렉토리를 마운트합니다.기본적으로 SSHFS는 암호화되어 구성 및 사용이 용이합니다.질문이 있으시면 언제든지 논평을 주십시오.