Linux

Ch.9 네임 서버 설치 및 운영

낑깡꺙냥 2024. 4. 16. 11:19

9.1 네임 서버의 개념

9.1.1 네임 서버 개요

DNS(Domain Name Server) - 이름 해석을 전문으로 하는 서버 컴퓨터

실제 원하는 서버에 접속하려면 URL을 해당 컴퓨터의 IP 주소로 변환해야 하는데 바로 이 일을 네임 서버라고 불리는 컴퓨터가 담당한다

네임 서버는 인터넷상에서 변화하는 모든 컴퓨터의 URL과 IP주소 정보를 거의 실시간으로 제공하므로 사용자는 더 이상 URL에 해당하는 IP 주소를 신경 쓸 필요가 없어졌다.

 

NOTE

더보기

IP 주소만으로 접속하는 것은 위험하다
dns 서버의 보호를 받는 URL로 접속하는 것이 안전
애초에 접근을 막아둔 곳도 많다.

 

자동 IP 할당 - DHCP
IP, 서브넷, DNS, 게이트웨이

 

주소창에 URL을 입력하고 접속을 시도하면 웹 브라우저는 우선 /etc/hosts 파일을 조사하고 해당하는 URL 주소와 IP 정보가 있는지 확인한 후 IP 주소가 없으면 /etc/resolv.conf 파일에 기록된 nameserver를 통해 IP 주소를 얻는다.

 

NOTE

더보기

/etc/hosts
119.205.208.11 http://www.blizzard.com

-> 웹 브라우저는 단지 /etc/hosts 파일 또는 네임 서버가 알려준 IP 주소로 접속을 시도할 뿐 IP 주소를 검증할 능력은 없다.


/etc/host.conf
multi on -> /etc/hosts 파일에 여러 개의 IP 기록 가능

 

nslookup 명령어

-> dns 서버에 질의하여 도메인의 정보를 조회

 

*dns 서버에 문제가 생긴다고 네트워크가 작동되지 않는 것은 아니다.

 

9.2 네임 서버 구축

9.2.3 캐싱 전용 네임 서버

캐싱 전용 네임 서버는 PC에서 URL로 IP주소를 얻고자 할 때 해당하는 URL의IP 주소를 알려주는 네임서버를 말한다.
* 캐싱 - 임시 저장

 

#1. 연구문제

Server B를 초기화 하시오.

Server B의 호스트 이름을 dns.4gl.com으로 변경하시오.

해당 서버에 DNS 패키지가 설치되어 있으면 “installed”를, 설치되어있지 않으면 “Not Installed”를 반환하는 스크립트를 작성하고, 해당 DNS의 작동까지 자동으로 이루어지도록 스크립트 쉘을 작성하여 실행하시오.

*가능하다면 방화벽 개방도 자동으로 이뤄지도록 하시오.

이후 팀원들과 연결하여, 상호 간 DNS 서비스가 각자의 Server B로 이루어질 수 있도록 만드시오. 해당 서비스의 작동 확인까지 완료하시오.

#Server B의 호스트 이름을 dns.4gl.com으로 변경하시오.
hostnamectl set-hostname dns.4gl.com

exec bash
echo $HOSTNAME
#-> 사용자 기준이기 때문에 logout 후 login 필요
vi /dnsinstall

#######################
#!/bin/bash

fname=/usr/lib/systemed/system/named.service

if [ -e $fname ]
then
	echo "installd"
  	systemctl restart named
    
else
	echo "Not installd"
    dnf -y install bind
    systemctl --now enable named
    firewall-cmd --add-service=dns --permanent   #firewall-cmd -add-port=53/udp
    firewall-cmd --reload
fi

exit 0
########################

chmod 777 /dnsinstall
./dnsinstall
vi /etc/named.conf # 11, 12, 19행 변경
vi /etc/resolv.conf # nameserver 상대방의 IP주소로 변경

vi /etc/named.conf
dns 확인/ dig 또는 nslookup으로 확인

 

NOTE

더보기

chroot -> 해당 서버의 운용 파일을 숨기는 역할
/var/named

chroot 작용 시 -> /var/named가 아닌 임의의 디렉터리를 외부에서 DNS 프로토콜 상 /로 취급
*침투 후에도 / 이상으로 경로 접근이 불가능하여 추가 피해 방지

DNS 서버의 포트 번호: 53/udp

포트 
0~1023 잘 알려진 포트
Well-Known port

*systemctl disable named 자동 시작 링크를 제거하는 명령

*sed -i
파일 수정 후 변경을 해당 파일에 적용
*sed i "s/192.168.111.2/192.168.111.100/" /etc/resolv.conf
192.168.111.2(패턴1)을 192.168.111.100(패턴2)로 변경 후 저장


9.2.4 마스터 네임 서버

마스터 네임 서버는 자신이 별도로 관리하는 도메인이 있으며 외부에서 자신이 관리하는 컴퓨터의 IP주소를 물어 볼 때 자신의 DB에서 그 주소를 찾아 알려주는 네임 서버이다.
*캐싱 + 마스터 -> 만약 정보가 없으면 밖에서, 있으면 내가 가진 정보를 제공

 

NOTE

더보기

서버 시스템 정보 확인 
uname -a

커널 정보
uname -r

SElinux 현황 확인
sestatus - disabled 확인

 

*TTL (time to live)  (p.541)

-> 해당 IP 주소를 캐시에 저장하는 시간

 

*@ - 도메인 그 자체

(도메인으로 바꿔쓴다면 끝에 . 필요)

 

#2. 연구과제

Server A, B, C를 초기화 하시오.

 

해당 서버를 DNS로 하여 다음과 같은 구성을 구축하고, 팀원의 어떠한 DNS를 쓰더라도 팀원의 어떠하 서버에든 접속되도록 만드시오.

 

개인 당 도메인을 1개씩 사용하시오.

 

server A(FTP Server)

dnf -y install vsftpd
systemctl --now enable vsftpd
firewall-cmd --add-service=ftp --permenent && firewall-cmd --reload

vi /var/ftp/welcome.msg #생략 가능
vi /etc/vsftpd/vsftpd.conf
########################
1행 banner_file=/var/ftp/welcome.msg #생략 가능
13행을 YES로 변경
########################

vi /etc/resolv.conf #nameserver server B IP address
systemctl restart vsftpd

#dnf -y install ftp 클라이언트
#dnf -y install vsftpd 서버


server C(Web Server)

dnf -y install httpd
systemctl --now enable httpd
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

vi /var/www/html/index.html   #html코드 작성

vi /etc/resolv.conf #nameserver server B IP address
systemctl restart httpd     
#크롬으로 확인

크롬으로 확인

 

NOTE

더보기

index.html 대문 페이지 작성
웹 서버 접속 시 보여지는 페이지

/var/www/html
아파치(httpd) 웹 서버의 루트 디렉터리 경로

 

HTML, YAML 마크업 언어(정보 전달, 서식, 골격에 따른 정보 입력)
C, JAVA = 프로그래밍 언어(하드웨어 제어)

 

3 tier architecture(presentation - application - data)
프레젠테이션 계층과 데이터 계층은 서로 간에 직접 통신 할 수 없다.

 

server B(DNS Server)

dnf -y install bind
systemctl --now enable named
firewall-cmd --add-service=dns --permenent
firewall-cmd --reload

vi /etc/named.conf    #/etc/named.rfc1912.zones에서 존파일을 추가해도 상관 X

cd /var/named
cp -p named.empty csy.com.zone  # [-p 권한, 소유자, 시간까지 복사]
cp -p named.empty csy.com.rev
vi csy.com.zone
vi csy.com.rev

#디버깅, named-checkzone 없을 시 bind-utils 다운
named-checkconf 
named-checkzone csy.com csy.com.zone

systemctl restart named

vi /etc/named.conf
vi /var/named/csy.com.zone
vi /var/named/csy.com.rev

 

NOTE

더보기

포워딩 존 파일

주소 -> IP


리버스 존 파일 -> 메일...........?
IP -> 주소 

* allow-update는 생략 시 none이 default

 

Linux Client

vi /etc/resolv.conf #nameserver server B IP address
#resolv.conf 파일은 수정 시 바로 적용

firefox에서 웹 서버 확인
filezilla로 확인

 

 

--------------------------------팀원 도메인 추가 --------------------------------

server B

vi /etc/named.conf

cd /var/named/
cp -p csy.com.zone youtube.com.zone
vi youtube.com.zone
vi csy.com.rev

systemctl restart dns

 

 

vi /etc/named.conf //youtube 도메인 포워딩 존 추가
vi /var/named/youtube.com.zone
vi /var/named/csy.com.rev

 

Linux Client

vi /etc/resolv.conf #팀원의 DNS서버 IP 추가

firefox로 web 확인
filezilla로 ftp확인

 

NOTE

더보기

SElinux 확인 필요 (disabled)

GPG check failed 발생 시 dnf -y install --nogpgcheck httpd