728x90

실습 개요


NFS 서버와 WEB 연동

 

NFS란

- Network File System

- 리눅스/유닉스에서 사용하는 표준 프로토콜

- 네트워크로 파일/디렉토리 공유 시 사용

- NAS 방식에 해당

- 보안 방식 구성을 위해 kerberos 서비스와 연동

 

구성 순서

서버

1. 패키지 설치

2. 디렉토리 준비

3. 설정

 1) 디렉토리 공유 설정

 2) 서비스 설정

4. 서비스 활성화

5. 방화벽 설정

 

클라이언트

1. 패키지 설치

2. 마운트


NFS 서버 구성 (서버)


패키지 설치 확인

yum list nfs-utils

nfs-utils.x86_64             1:1.3.0-0.68.el7.1             @updates
Available Packages
nfs-utils.x86_64             1:1.3.0-0.68.el7.2             updates

 

디렉토리 생성

[root@nfs ~]# mkdir /contents
[root@nfs ~]# ls -ld /contents/
drwxr-xr-x. 2 root root 6 May 25 14:32 /contents/

 

설정

nfs 설정 파일 확인

[root@nfs ~]# ls -l /etc/sysconfig/nfs
-rw-r--r--. 1 root root 1679 Jul 22  2021 /etc/sysconfig/nfs
[root@nfs ~]# ls -l /etc/nfs.conf
-rw-r--r--. 1 root root 1023 Jul 22  2021 /etc/nfs.conf

 

디렉토리 공유 설정

vi /etc/exports
/contents	*(rw,sync,sec=sys)

# * : 접근을 허용할 대상, 모두
# 10.0.2.0/24: 특정 네트워크 대역
# 10.0.2.40/24: 특정 시스템 지정
# rw: 읽기-쓰기 허용
# sync: 빠른 동기화
# sec: 인증 방식: sys(기본 값, 생략 가능)

# 설정 변경 시 항상 실행
exportfs -r

 

서비스 활성화

 systemctl enable --now nfs-server

 

방화벽 설정

firewall-cmd --add-service=nfs
firewall-cmd --add-service=nfs --permanent

 


WEB 서버 (클라이언트)

 


마운트 설정

/etc/fstab 설정 파일 수정

vi /etc/fstab
10.0.2.40:/contents     /var/www/html   nfs     rw,sync,sec=sys 0	0

# NFS 서버의 IP:공유 디렉토리 경로
# /var/www/html: 마운트포인트

 

마운트 확인

mount | grep /var/www/html
10.0.2.40:/contents on /var/www/html type nfs4 (rw,relatime,sync,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.2.30,local_lock=none,addr=10.0.2.40)

# nfs 서버에서 작업
echo "test nfs with web" > /contents/index.html

# web 서버에서 확인
cat /var/www/html/index.html
test nfs with web

 

=> 여기까지 NFS 서버와 연결은 성공

=> 그러나, httpd와 nfs 연동은 안됨 (SELinux 설정이 원인)

 

웹 브라우저 접속 시 접근 불가 에러: SELinux 설정 원인

## 클라이언트에서 확인: 컨텍스트 값이 변경되지 않아서 연동에 실패함

# 컨텍스트 확인(nfs_t)
ls -lZd /var/www/html
drwxr-xr-x. root root system_u:object_r:nfs_t:s0       /var/www/html

# SELinux 기본 값 적용
semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'
restorecon -Rv /var/www/html

# 값이 변경되지 않음(nfs_t)
# 4.1 버전은 클라이언트에서 마운트해서 사용할 경우 변경 불가
# => 4.2 버전으로 변경 필요
ls -lZd /var/www/html
drwxr-xr-x. root root system_u:object_r:nfs_t:s0       /var/www/html

 

 


NFS-WEB 연동


SELinux 설정 변경

클라이언트에서 마운트 해제 후 컨텍스트 확인

# 마운트 해제
umount /var/www/html

# 컨텍스트 확인(httpd_sys_content_t)
ls -lZd /var/www/html
...
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
...

 

서버에서 NFS 버전 설정

/etc/sysconfig/nfs 설정 파일

# 4.1에서 4.2로 버전 변경
vi /etc/sysconfig/nfs
14 RPCNFSDARGS="-V4.2"

# 서비스 재시작
systemctl restart nfs-server

 

클라이언트에서 마운트 설정

1) NFS 버전 지정: v4.2

2) context 항목 지정: 기존의 html 파일의 컨텍스트

# 마운트 설정 파일 수정(컨텍스트 추가)
vi /etc/fstab
10.0.2.40:/contents     /var/www/html   nfs     rw,sync,sec=sys,v4.2,context="unconfined_u:object_r:httpd_sys_content_t:s0"  0	0

# 마운트
mount -a

 

 

웹 서비스 연동 완료

 

 

728x90

+ Recent posts