본문 바로가기

메가존 클라우드 2기 교육/실무 심화

ESXi - SAMBA, NFS, DNS 설치

예상 네트워크 망도

 


WEB03

WebShare 설치에 앞서 HAProxy의 밑작업으로 로컬페이지를 헷갈리지 않게 수정하자.

IT`S NICE TO MEET YOU 를 WEB03으로 수정할 것이다.
index.html을 메모장으로 키자
It`s Nice To Meet You를 찾아서 WEB03으로 바꿔주자.
수정완료.
정상적으로 변경됐다.

WEB03 - WebShare

WebShare0.952Rev1187.zip
0.99MB

해당 파일을 다운로드 받자.

저번처럼 복사해서 붙여넣자. 그 다음, 압축해제를 하자.
실행이 잘 된다. 상단의 공유추가를 누르자.
다운로드 폴더를 추가하자.
추가 성공. 이제 좌측 상단의 '꺼짐'을 눌러 '켜짐'으로 해보자.
실패.

이미 웹서버로 80포트로 사용 중이므로, 포트 충돌이 일어난다. 그러므로 포트를 변경해줘야한다.

상단의 환경설정 클릭
포트를 8080으로 변경하고 확인

 

포트 충돌을 해결해서 '켜짐'으로 변경된다.
실제로 '127.0.0.1:8080'에 접속하면 웹쉐어에 접속한다.

 

aws.tar
1.52MB

위의 파일을 다운로드 해주자.

WEB03의 다운로드 폴더에 붙여넣어주자.

서버들에 키 전송

MobaXterm에서 NGW로 접속
전에 발급한 퍼블릭키와 프라이빗키를 업로드하자.
전송 성공
mv id_rsa* .ssh/
업로드한 키를 이동시켜주자

ssh-copy-id -i .ssh/id_rsa root@[WEB01 주소]

 

WEB01에 키 전송 성공

ssh-copy-id -i .ssh/id_rsa [우분투 아이디]@[WEB02 주소]
평소와 달리 'root'가 아니라 '아이디'로 해줘야한다.

 

이제 전송된 키로 접속을 해볼 것이다.

그 전에, 전송된 키의 퍼미션이 너무 개방돼서 퍼미션을 수정해줘야한다.

퍼미션 644로 너무 개방됐다. 이를 400으로 변경해주자
chmod 400 .ssh/id_rsa
퍼미션 변경 성공.

ssh -i .ssh/id_rsa root@[WEB01 주소]
WEB01에 키 접속 성공.

WEB01 - CentOS7 

WEB01 기본 세팅

# 호스트 네임 설정
hostnamectl set-hostname web01

# 자동완성 설치
yum install -y bash-completion

# wget 설치
yum isntall -y wget

 편의성을 위해 호스트 네임 변경하고 자동완성과 wget을 설치 해주자.


# httpd 설치
yum install -y httpd

# httpd 설치 확인
ss -ant

# httpd 재기동
systemctl enable --now httpd

# httpd 설치 확인
ss -ant
80포트가 개방됐다.

WEB01에서 WEB03 웹쉐어 파일 받기

웹쉐어의 포트를 8080으로 변경했으므로, WEB03에서 8080포트를 개방해줘야한다.

Windows Defender Firewall 좌측의 Advanced settiong에 들어가보자.
좌측의 Inbound Rules를 우클릭하고 New Rule.. 클릭
Port 선택 후 Next
TCP / 8080 으로 변경 후 Next
우리는 8080포트를 개방하는 것이므로 Allow(허용)해야한다.
그대로 Next
이름과 부가설명은 각자 알아서 설정하고 Finish하자.
잘 추가됐다.
aws.tar의 링크를 복사한다.

다시 MobaXterm으로 돌아와 WEB01에서 wget으로 해당 링크를 다운로드 받을 것이다.

wget http://[WEB03 주소]:8080/Downloads/aws.tar

# aws.tar 파일을 /var/www/html 에 압축해제.
tar xvf aws.tar -C /var/www/html

WEB02 - Ubuntu

 키 방식 접속

ssh -i .ssh/id_rsa [아이디]@[WEB02 주소]
우분투의 경우는 'root'가 아닌 계정으로 로그인

root 계정으로 변경

sudo su - root

이런 식으로 'root'계정을 사용할 수 있다. 하지만, 당분간은 일반 사용자로 이용할 것이다

# 직전으로 돌아가기
exit

기본 세팅 및 설치

# 호스트 네임 설정
sudo hostnamectl set-hostname web02

 

이번엔 전과 달리 아파치가 아니라 nginx을 사용해볼 것이다.

# 패키지 설치 전에 저장소 확인
sudo apt update

# nginx 설치
sudo apt install -y nginx

# nginx 확인
sudo systemctl status nginx

# 포트 확인
ss -ant

참고로,  우분투는 방화벽이 기본적으로 있지 않다. 필요한 경우에 다운로드 받아 사용해야한다.

WEB03에서 WEB02에 접속하면 다음과 같이 뜬다.

 

WEB02와 달리 WEB01은 접속이 안될 것이다. 그 이유는, WEB01은 아직 방화벽으로 막고 있기 때문이다.

그렇기 때문에 설정을 해줘야한다.

# WEB01에서 방화벽 설정
firewall-cmd --permanent --add-service=http
# 방화벽 재기동
firewall-cmd --reload
# 방화벽 확인
firewall-cmd --list-all
WEB03에서 WEB01로 접속이 된다.
# WEB01의 index.html 수정
vi /var/www/html/index.html
변경 반영

 

다시 WEB02로 돌아와서,

 

이제 aws.tar파일을 web01에서 한 것 처럼 다운받을 것이다

wget http://[WEB03 주소]:8080/Downloads/aws.tar
aws.tar파일 다운로드 성공
# 다운로드 받은 aws.tar파일을 index.html 이 있는 폴더에 압축 해제
sudo tar xvf aws.tar -C /var/www/html
WEB03에서 WEB02로 접속하니 변경 사항 확인 가능

# WEB02의 index.html 수정
sudo vi /var/www/html/index.html

web02로 수정
정상 반영


WEB01 - SAMBA

SAMBA 설치

전에 실습에서 배운대로 SAMBA를 설치할 것이다.

web01로 이동하자.

# SAMBA 설치
yum install -y samba

mkdir -p /var/samba/share		// '-p' 경로상에 폴더 생성(없는 폴더에도 가능)
chmod 777 /var/samba/share		// 모두에게 해당 디렉토리에 대한 모든 권한을 부여

adduser kosa
passwd kosa				// 비밀번호. 필자는 kosa0220 으로 설정
smbpasswd -a kosa			// 서버메쉬블록. 필자는kosa0220으로 설정

# 삼바 설정
vi /etc/samba/smb.conf

// 맨 아래에 이어 붙이기
[share]
        comment = Share Directory
        path = /var/samba/share
        browserable = yes
        writable = yes
        valid users = kosa
        create mask = 0777
        directory mask = 0777
//
#[share]
#        comment = Share Directory	// 설명(주석)
#        path = /var/samba/share		// 경로
#        browserable = yes		// yes =모두가 읽을 수 있음, no = 허가된 사용자만
#        writable = yes			// yes =모두가 저장할 수 있음, no = 허가된 사용자만
#        valid users = kosa		// 인가된 사용자
#        create mask = 0777		// 파일을 만들면 자동으로 777권한을 부여
#        directory mask = 0777		// 폴더를 만들면 자동으로 777권한을 부여
파일 수정
# 재기동 해줘야한다.
systemctl enable --now smb
systemctl enable --now nmb

SAMBA 포트 개방

# SAMBA 서비스 개방
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

SAMBA 를 이용한 파일 공유

검색창에 '\\[WEB01 주소]'로 검색
위에서 설정한 계정으로 로그인
Share 폴더에 aws.tar을 붙여넣어보자.
MobaXterm에서도 업로드 됨을 알 수 있다.

WEB02에서 SAMBA  클라이언트 설치

# 우분투로 SAMBA 클라이언트 설치
sudo apt install smbclient -y

WEB02에서 SAMBA 로그인

smbclient //10.11.0.100/share -U kosa

WEB02(Ubuntu) - NFS

WEB02 - NFS 설치

# 패키지 설치 전에 해주는 습관을 들이자
sudo apt update

# nfs에 필요한 패키지 설치
sudo apt install nfs-common nfs-kernel-server portmap -y

# 10.11.0.0 대역폭만 nfs폴더를 마운트 할 수 있도록 설정
sudo chmod 777 /etc/exports
sudo mkdir /share && cd $_
vi /etc/exports
//
/share 10.11.0.0/24(rw,sync)
//
sudo chmod 707 /share
sudo systemctl restart nfs-server
sudo exportfs -v
만일 'read only'여서 수정이 안된다면, 퍼미션을 777로 바꾸거나 :wq!를 하자

WEB01 - NFS 클라이언트

# 클라이언트
sudo yum install -y nfs-utils

# 마운트 정보 확인
showmount -e 10.11.0.101

# 망누트 폴더 만들고 설정
mkdir share
mount -t nfs 10.11.0.101:/share share
vi /etc/fstab	
//
10.11.0.101:/share /root/root nfs defaults 0 0
//

 


WEB03(Windows) - NFS 클라이언트

Server Manager - Manage - Add Roles and Features
Next
Next
Next
Next
NFS 클라이언트 선택 후 Next
Install

 설치가 끝났으니 계정 지정 없이 GUI로 NFS 서버와 연결해보자.

내 PC에서 상단의 Computer - Map nework drive
폴더에 '\\[NFS 서버 아이피]\[공유폴더명]' 을 쓰자
연결 성공

DNS 서버

VM 만들기

CentOS7으로 운용할 것이므로, 전에 만들었던 CentOS7가 설치된 백업파일을 가져오자. 

VM 생성/등록 클릭
사진처럼 목록 선택 후 다음
예전에 만든 백업 파일 선택
다음
다음
Internal로 설정 후 다음
이미 CentOS7이 설치됐으므로 상관없다. 완료를 눌러주자.

키 인증 방식 접속

 NS서버의 전원을 켜보자.

그리고 MobaXterm에서 다른 서버와 같이 키를 전송하여 키 인증 방식으로 접속해보자.

# DNS서버에 키 전송
ssh-copy-id -i .ssh/id_rsa root@[DNS 서버 아이피]

# 키 인증 접속
ssh -i .ssh/id_rsa root@[DNS 서버 아이피]

DNS 서버 기본 설정 및 패키지 설치

hostnamectl set-hostname ns
yum install -y bash-completion

 

# bind 설치
yum -y install bind bind-chroot bind-utils

# DNS 설정
vi /etc/named.conf
// 다 지우고 붙여넣기
options {
        listen-on port 53 { 127.0.0.1; [퍼블릭 대역폭]; [프라이빗 대역폭]; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; [퍼블릭 대역폭]; [프라이빗 대역폭]; };
        forwarders { 8.8.8.8; 8.8.4.4; }; 					

        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view "internal" {
        zone "." IN {
                type hint;
                file "named.ca";
        };

        include "/etc/named.rfc1912.zones";
        include "/var/named/[원하는 도메인명].shop.zones";
};
//

vi /var/named/[위에서 설정한 도메인명].shop.zones
// 붙여넣기
zone "[설정한 도메인명]" IN {
        type master;
        file "[설정한 도메인명].shop.db";
        allow-update { none; };		
};

zone "[프라이빗 대역폭 역주소].in-addr.arpa" IN {
        type master;
        file "[프라이빗 대역폭 역주소].in-addr.arpa.db";
        allow-update { none; };	
};
//

vi /var/named/[설정한 도메인명].shop.db
//
$TTL    86400	
@       IN      SOA     [설정한 도메인].shop.   root.[설정한 도메인].shop.(
                        2022041401 ; Serial
                        3h         ; Refresh
                        1h         ; Retry
                        1w         ; Expire
                        1h )       ; Minimum

        IN      NS      ns.[설정한 도메인].shop.
        IN      MX 10   ns.[설정한 도메인].shop.
ns      IN      A       [DNS 서버 주소]
web01   IN      A       [WEB01 서버 주소]
web02   IN      A       [WEB02 서버 주소]
web03   IN      A       [WEB03 서버 주소]
//

vi /var/named/[프라이빗 역주소].in-addr.arpa.db
//
$TTL    86400
@       IN      SOA     [설정 도메인].shop. root.[설정 도메인].shop.(
                        2022041401 ; Serial
                        3h         ; Refresh
                        1h         ; Retry
                        1w         ; Expire
                        1h )       ; Minimum

        IN      NS      ns.[설정 도메인].shop.
[끝주소]     IN      PTR     ns.[설정 도메인].shop.
[끝주소]     IN      PTR     web01.[설정 도메인].shop.
[끝주소]     IN      PTR     web02.[설정 도메인].shop.
[끝주소]     IN      PTR     web03.[설정 도메인].shop.
//

# named 재기동
systemctl enable --now named

# 방화벽 설정
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload

NAT에서 DNS 설정

# dhcpd에서 DNS서버 주소 추가
vi /etc/dhcp/dhcpd.conf
//
option domain-name-servers [DNS서버 주소], 8.8.8.8, 8.8.4.4;
//

# 재기동
systemctl restart dhcpd

# DNS서버 주소 추가
vi /etc/sysconfig/network-scripts/ifcfg-ens192
// 중간에 DNS1 바꾸고 나머지 뒤로
IPADDR=192.168.1.18
NETMASK=255.255.248.0
GATEWAY=192.168.0.1
DNS1=10.11.0.103
DNS2=8.8.8.8
DNS3=8.8.4.4
//

성공적으로 도메인으로 통신이 된다.

DNS 서버에서 테스트

# 네트워크 매니저 재기동
systemctl restart NetworkManager
정상적으로 구동

WEB02 (Ubuntu)에서 DNS 테스트

# 재기동
sudo systemctl restart networking

# DNS 확인
cat /etc/resolv.conf
정상적으로 구동됨

WEB03 (Windows 10) 에서 DNS 테스트

 Powershell을 실행한다.

# 아이피 다시 받아오기
ipconfig /renew
DNS가 성공적으로 갱신됐다.
도메인으로 접속 성공

 


여담으로, 원격 데스크톱은 MobaXterm에서도 가능하다. 

 

원격 데스크톱에서 썼던 대로 하면 된다.