NFS 실습, 문제

sso·2025년 4월 23일
0

리눅스 서버

목록 보기
30/40

https://docs.google.com/document/d/1BvSv11iWanhEF79totdC0sAFff4c2jDyZ1QxH031i6E/edit?tab=t.0

1. NFS (Network File System)

상대방의 파일 시스템 일부를 마치 자기 자신의 디렉터리인 것처럼 사용할 수 있음

NFS는 리눅스 - 리눅스, 유닉스 - 리눅스 간의 파일 시스템으로 특정 OS에서만 사용이 가능함

rpcbind : RPC 기반 연결을 위한 패키지
nfs-utils : NFS 서버 관련 패키지

dnf -y install rpcbind nfs-utils

systemctl --now enable rpcbind nfs-server

환경 설정 파일 : /etc/exports

공용으로 사용할 서버 디렉터리 생성
mkdir /nfs

vi /etc/exports

  • /nfs 192.168.111.0/24(rw,no_root_squash,sync)
  • /nfs *(옵션) - 모든 ip 허용
  • /nfs 192.168.111.100(rw,no_root_squash,sync) 192.168.111.200(rw,no_root_squash,sync) - 여러대의 호스트를 한번에 적용

systemctl restart nfs-server

systemctl status nfs-server
systemctl status rpcbind

서버에서 nfs로 공유하는 디렉터리 목록 확인 명령어

  • exportfs -v

여기까지 nfs 서버 구축이 완료되었으므로 다른 장비를 클라이언트로 활용하여 테스트

dnf -y install nfs-utils

클라이언트에서 nfs로 접근 가능한 디렉터리 목록 확인 명령어

  • showmount -e 서버
  • showmount -e 192.168.111.200
  • showmount -e slime.com

RPC를 찾을 수 없기에 서버에서 RPC 포트 허용 처리

<서버 작업>

  • 서비스 이름 rpc-bind, 111
  • 서비스 이름 mountd, 동적
  • 서비스 이름 nfs, 2049

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

서버에서 방화벽 개방 후 클라이언트에서 정상적으로 확인되는것을 알 수 있음

클라이언트에서 사용할 마운트 디렉터리 생성
mkdir /nfsmount

NFS 클라이언트에서는 mount 명령을 이용하여 NFS 서버의 파일 시스템을 이용할 수 있고, 부팅할 때 마운트하여 사용하려면 /etc/fstab(자동마운트) 파일에 등록하면 된다.

  1. 마운트 명령어를 사용 (두개 모두 같은 의미)

mount -t nfs 192.168.111.200:/nfs /nfsmount
mount.nfs 192.168.111.200:/nfs /nfsmount

  1. 자동 마운트를 사용

vi /etc/fstab
192.168.111.200:/nfs /nfsmount nfs (default 0 0)

dt -dH


Server A, B 초기화

A에는 DNS 2명 분량의 도메인을 기입
ftp 서브 도메인에 대해 중개
nfs 서브 도메인에 대해 중개

DNS 구성 이후에는 접속, 설정 시에 IP 사용 금지

B에는 FTP 서버를 각각 설정, 상호 간 익명 접속 및 상호 간의 이니셜로 된 사용자 이름으로 접속 후 테스트 파일 업로드

또한 B에 추가적으로 NFS 서버를 설정하고 가능한 상대방의 호스트만 접근할 수 있도록 설정하여 마운트 및 자동 마운트까지 완료하시오. (자동 마운트는 재부팅으로 확인)

공유 경로 등은 임의로 설정

Server A

dnf -y install bind
vi /etc/named.conf
vi /etc/named.rfc1912.zones

zone "slime.com" IN {
type master;
file "slime.com.zone";
allow-update {none;}
};

zone "hero.com" IN {
type master;
file "hero.com.zone";
allow-update {none;}
};

cd /var/named
cp -p named.empty slime.com.zone
cp -p named.empty hero.com.zone

vi slime.com.zone
ftp IN A 192.168.111.200
nfs IN A 192.168.111.200

vi hero.com.zone
ftp IN A 10.0.2.224
nfs IN A 10.0.2.224
ns IN A 10.0.2.194

systemctl --now enable named
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

nslookup
ftp.slime.com
nfs.slime.com

vi /etc/resolv.conf
nameserver 192.168.111.100

Server B

dnf -y install vsftpd bind-utils
vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

systemctl --now enable vsftpd
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload

dnf -y install nfs-utils

mkdir /nfsserver

vi /etc/exports
/nfsserver ns.hero.com(rw,no_root_squash,sync)

vi /etc/resolv.conf
nameserver 192.168.111.100

systemctl restart nfs-server

서버에서 어떤 호스트에게 어떠한 디렉터리를 열었는지 확인
export -v

dnf -y install rpc-bind
firewall-cmd --add-service={nfs,mountd,rpc-bind} --permanent
firewall-cmd --reload

Server A

클라이언트에서 공유 디렉터리 확인
showmount -e nfs.slime.com
showmount -e nfs.hero.com

mkdir /nfsclient
mount -t nfs nfs.slime.com:/nfsserver /nfsclient

mkdir /nfsclient/testnfs

vi /etc/fstab
ns.slime.com:/nfsserver /nfsclient nfs default 0 0
ns.hero.com:/nfsserver /nfsclient nfs default 0 0

systemctl daemon-reload

nmcli 설정

연결 이름 확인
nmcli con sh - name에 있는게 진짜 이름으로 설정 시 해당 이름을 기준으로 설정해줘야함

nmcli con mod ens33 ipv4.dns "192.168.111.100"

DHCP에서 DNS 받아오지 않게 하기
nmcli con mod ens33 ipv4.ignore-auto-dns yes

여러 DNS 주소 삽입
nmcli con mod ens33 ipv4.dns "192.168.111.100 1.1.1.1"

nmclie con down ens33
nmclie con up ens33

cat /etc/resolv.conf
10.0.2.1이 가장 첫번째로 올라오는 문제 발생

DNS priority라는 우선 순위 설정 방법
nmcli con mod ens33 ipv4.dns-priority 10

nmcli con mod "유선 연결 1" ipv4.dns-priority 100

nmcli con down "유선 연결 1"
nmcli con up "유선 연결 1"

cat /etc/resolv.conf
10.0.2.1이 후순위로 밀려있는것을 확인

vi /etc/fstab에 옵션 추가해서 마운트 성공

defaults,_netdev,x-systemd.requires=network-online.target

_netdev → nfs 용 네트워크 파일 시스템(장치)를 마운트 하겠다고 알림

systemctl status NetworkManager-wait-online.service
systemd 데몬(슈퍼 데몬)이 네트워크 연결 확인 이후 작동

nfs.my.io:/nfsserver /nfsclient nfs defaults,_netdev,x-systemd.requires=network-online.target 0 0

자동화 → 타이밍

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글