티스토리 뷰
rocky 9 - NFS utils 설정 , ( nfs 설정 , 방화벽 설정 ,오류 해결 방법 )
우주아줌마 2023. 3. 23. 16:43이글은 centos 에 대체로 사용 되고 있는 rocky 9 (kernal 5.0) 에서 NFS 서버를 연동 하는 방법을 작성 합니다.
근래 리눅스 관련 강의 를 듣다 보니 cento7 버전 기준에 firewalld 까지 끄고 강의 하는 클래스들을 듣다 보니
내가 현업 에서 사용 하게 되면 kernal3 이상을 사용 하게 되고 firewalld 를 끄는 일도 없기 때문에 이러한 부분들을 고려해서
내용들을 좀더 상세하게 작성 하려 한다.
문제가 되었던것은 docker 교육을 들으며 nfs 설정을 실습하고 하는 과정에서 집에서 내 시스템을 가지고 연습하려하니
도통 연결이 되지 않았는데 cento7버전에서의 적용 방법과 9 버전들의 (kernal 5.~) 방법에는 조금에 차이가 있었다.
rocky 9 - NFS utils 설정 방법은 커널 버전 마다 조금씩 다를수 있다.
목차
1. nfs-utils 설치
2. nfs 서버 , 클라이언트 설정
3. nfs 재부팅 후 에도 적용 하기
4. nfs mount 옵션
NFS - utils 란?
윈도우 OS 에서는 공유 폴더라 라던가 하는 기능을 통해서 여러 사용자가 한곳의 데이터들을 읽고 쓰고 하지만
리눅스에서는 cli 구성환경 에서 폴더를 공유 하고 스토리지를 연결 하는등에 작업을 nfs 를 통해서 진행 하게 된다.
NFS 를 구성할 server 아 client 가 있으면 nfs-utils 패키지를 설치하면 모두 설치가 된다. rocky 9 - NFS utils 설정 에는 방화벽 설정도 필요 하다.
NFS 서버 라고도 부른다.
nfs-uitls 설치
rocky linux 에서 yum , dnf 로 설치 하면 되는데 debian 계열 에서는 꼭 apt-get update 를 진행한 후 에 패키지 를 다운로드 하자.
$ yum install nfs-utils -y
# nfs-utils 패키지를 설치
여기서 그냥 넘어갈게 아니괴 ' rpcbind' 를 꼭 눈여겨 봐둬야 한다! 우선 기억 해두자
설치가 되었다면 지금 설치된 서버와 다른 서버에 하나더 설치를 진행 한다!
총 2대 의 서버에 설치를 진행 하는것이다 이어서는 A 서버 , B 서버 라고 지칭 하겠다.
A , B 두 서버에 nfs-utils 를 설치 했으면 nfs 서버로 사용할 A 서버에서 nfs-server 를 시작 시켜 주자
$ systemctl enable --now nfs-server
실행 된것을 확인 하고 파일들으르 보관할 디렉토리를 만들고 연결하는 과정을 진행
$ mkdir /home/nfs_a
# nfs 로 공유할 디렉토리 생성
$ chmod 644 /home/nfs_a
# 파일을 읽고 쓰기 를 해야 하기 때문에 사용권한을 준다
$ vi /etc/exports
## 내용 입력 ##
1 /home/nfs_a *(rw,sync, no_root_squahs)
# /home/nfs_a 디렉토리를 읽기,쓰기 권한 을주고 ,실시간으로 변경내용을 반영
/etc/exports 내용에서 * 부분은 접속 허용 IP 범위 를 지정 해주는데
192.168.0.0/24 로 하면 C class 전부 접근 가능 하다 그럼 설정 을 적용 할때 보안관련 해서 문제가 있을수 있다는 내용이 출력될수 있다. ( * 말고 0.0.0.0/0 으로 해도 같은 결과다 다들어와라 이다)
# 적용 방법
$ exportfs -a
# 확인 방법
$ exportfs
#결과
$ /home/nfs_A
다른 오류가 없길 바란다.... 이씅면 댓글 ㄱㄱㄱ
그리고 nfs 가 잘 동작 중인지 rpcinfo 명령어로 확인 한다.
$ rpcinfo -p localhost
이제 리눅스 방화벽인 firewalld 에서 nfs 를 열어 준다.
$ firewall-cmd --permanent --add-service=nfs
$ firewall-cmd --permanent --add-service=rpc-bind
$ firewall-cmd --permanent --add-serivce=mountd
# nfs, rpc-bind , mountd 서비스 허용 적용
#### centos 7 버전 까지는 nfs 서비스 만 허용 해줘도 됬는데 이제 3개 다 넣어야 되더라...
$ firewall-cmd --reload
# 방화벽 변경 내용 적용
nfs 방화벽 설정 에서 오류가 가장 많이 날것이다... 라우팅 이 안되 었다던가
찾을수 없다던가 하는 답답한 문제들....
kernal 5 버전 이상 centos 8 버전 이상 부터는 위에 것들을 설정 해주면
오류 해결 방법 을 찾을수 있다.
서버 B 작업
이제 B서버에서 nfs 연결 상태를 확인 하고 연결할 디렉토리를 만들어 보고 파일이 들어가는지 테스트 한다
서버 A 작업에서 방화벽에 서비스를 3개 정상적으로 등록 했다면 다음 명령어에 내용을 확인 할수 있다.
$ showmount -e 서버A ip 또는 hostname
서버 A 에서 생성하고 /etc/exports 에서 설정해둔 디렉토리 명 과 ip 대역이 나오면 오케이
나는 * 로 모드느 연결 허용 을 해두었으니 * 로 나온다.
이제 동기화할 디렉토리를 만들어 준다
$ mkdir /home/nfs_b
# 서버 B 에서 동기화할 디렉토리 생성
이제 nfs 를 통한 연결 준비는 끝났고 이제 실제로 동기화 를 위해 만든 디렉토리를 마운트 해준다.
$ mount -t nfs -o rw,sync rocky1:/home/nfs_a /home/nfs_b
# mount 명령어로 서버 A 의 ip/hostname 으로 /home/nfs_a 를
서버 B 의 /home/nfs_b 에 연결
# 연결 확인 #
$ df -h
맨 아래 줄에 ' rocky1:/home/nfs_a ' 가 추가 된것을 확인 할수 있다.
Mounted on 열을 보면 ' /home/nfs_b ' 가 있는것을 확인 !!!!
이제 서버 B 의 /home/nfs_b 디렉토리에서 파일을 생성하고 서버 A 의 /home/nfs_a 디렉토리에서 생성됬는 지 확인 하면 된다.
**** 허가 거부 에러가 떨어지면 서버 A 에서 /home/nfs_a 디렉토리에 rw 권한을 안준것! chomd 644 로 권한을 꼭주자
nfs 재부팅 후에도 적용 하기
지금 까지 과정은 일시적인 것이다... 혹시라도 여기까지 하고 재부팅 하거나 했다면;;; mount 작업을 다시 해줘야 한다..
리눅스 를 아는 분들이라는 fstab 설정을 해줘야 한다는걸 알고 있을것이다.
!!! 여기서 중요 !!!!!
리눅스 경험이 많지 않는 사람들은 분명히 /etc/fstab 을 직접 수정하지만..... 이건 큰일날 짓이다...
꼭 현재 파일을 백업해대고 파일을 수정하자... /etc/fstab은 시스템이 시작할때 파일시스템을 자동으로 마운트 하기 때문에
경로가 틀리거나 하는 오류 , 오타 등이 있을경우 OS 자체가 부팅하지 못할수 있다....
$ cp /etc/fstab /etc/fstab_날짜.bak
# 꼭 복사해서 백업 본을 만들어야 한다.
이제 fstab 을 수정하기 !!!
아래 내용을 추가 해준다
$ vi /etc/fstab
# Shift + g 눌러 파일 맨하단 이동
## 입력 내용 ##
$ rocky1:/home/nfs_a /home/nfs_b nfs defaults 0 0
# 서버 IP 또는 hosts 에 등록된 hostname : 입력후 서버A 공유 디렉터리 /home/nfs_a
# 연결한 서버B 디렉토리 /home/nfs_b
# 연결 타입인 nfs
# 그리고 defaults 0 0 # 이 3개는 설명하자면 길어 진다.
수정후
$ mount -a
# fstab 에 등록된 것들을 불러 온다.
# 에러가 없으면 다행 혹시 모르니 재부팅해서 이상없는지 확인 한다.
nfs mount 옵션
이제 알아 옵션들에 대해 알아보자면
/etc/export 파일을 수정 할때 넣는 옵션들을 알아보자
위에서 작성 했던 내용 가지고 하자면
/home/nfs_a *(rw,sync, no_root_squahs)
ip 다음에 올 ( ) 안의 옵션들
옵션 | 설명 |
ro | 읽기 전용으로 공유 |
rw | 읽기 / 쓰기 모드로 공유 |
root_squash | 클라이언트의 root를 익명 사용자(nobody)로 매핑(기본) |
no_root_squash | 클라이언트의 root를 서버의root로 매핑 |
all_squash | 모든 사용자를 익명 사용자(nobody)로 매핑 |
sync | 클라이언트와 서버간 실시간 동기화(기본) |
async | 클라이언트와 서버간 비동기 통신(속도 향상 목적) |
secure | 마운트 요청 시 1024 PORT 이하로 |
insecure | 마운트 요청 시 1024 PORT 이상도 허용 |
클라이어트 쪽( 서버 B) mount 옵션 -o 뒤에 붙는 것들 생략 가능하다.
mount -t -o rw,sync nfs 서버ip:/home/nfs_a /home/nfs_b
옵션 | 설명 |
rsize = 1024 | nfs 서버로부터 읽어오는 바이트수 지정(기본 1024) |
wsize = 1024 | nfs 서버로 쓰기를 할때 사용 바이트수 지정 (기본 1024) |
timeo = 숫자 | 타임 아웃이 발생 후 재전송 간격 |
restrans = 숫자 | 타임 아웃 발생 시 재 전송 시도 횟수 ( 기본 3) |
port = 숫자 | nfs 서버와 연결할 때 Port 번호 지정 |
bg | 첫번 째 마운트 시도 시 타임 아웃이 되더라도 백그라운 동작 마운트 시도 |
fg | 첫번 째 마운트 시도 시 타임 아웃되면 바로 중단 |
hard | 서버가 응답할 때까지 계속 마운트 시도 , 응답 없는경우 umount 로 마운트 취소 불가 |
soft | 타임 아웃 발생시 retrains 값만큼만 재전송 시도 umount 로 마운트 취소 가능 |
마무리
오늘드 드럽게 길게 썼다... 짧게 매번 그냥 넘들 처럼 대충 접속만 되게 쓸까 하다가 쓰다보면..... 길어 진다....
누가 본다고....
여러분 다음에는 도커를 통한 nfs 연결 진행 할께용~
'System > Linux(Rhel,Ubuntu)' 카테고리의 다른 글
Linux Local reository 설정 (RHEL , centso , debian) (0) | 2023.04.13 |
---|---|
(내용수정)리눅스 Admin III 과정(rhel8) - Network bonding 하기(티밍,브리징) (4) | 2023.03.21 |
리눅스 기초 - docker images 만들기 (0) | 2023.03.15 |
Rocky Linux yum update error 해결 방법 (1) | 2023.03.08 |
리눅스 개념 #3 - Linux 배포판 (0) | 2022.11.14 |
- Total
- Today
- Yesterday
- 쉘 스크립트 기초
- PODman기초
- grootsecuriry
- 리눅스
- Rcity1번
- rhcsa8 덤프
- grootboan
- gzip
- rhcsa8 기출문제
- rhcsa8덤프
- 파이썬기초
- CTF
- 주소DB만들기
- 리눅스 환경변수 지정
- 파이썬실습
- 리눅스본딩
- rhcsa8
- RCity operation 1
- 리눅스 쉘 스크립트
- Rcity 9번
- 리눅스 명령어
- rhcsa8 시험문제
- podman
- 라쿤시티
- Rcity CTF
- Rcity
- Rcityboan.com
- 맨탈훈련
- 7-zip
- Grootsecurity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |