[Linux] Name Server
기존 웹서버 복원-스냅샷 체크박스 해제
초기화 상태 만들기
[Name Server]
1. 개요
👉 호스트(PC, 서버)에 호스트 이름을 붙여 사용하기 쉽게 만든것이 '도메인'이다
👉 컴퓨터는 '호스트' 이름으로는 상대방을 찾아갈 수 없다!
- 0과 1로 이루어진 IP주소가 필요!
👉 호스트 이름 <-> IP주소를 변환하는 과정이 필요
👉 호스트 이름을 IP 주소로 변환하는 것을 '이름 분석(Name Resolution)' 이름 주소 해석을 실행하는 서비스를 '네임 서비스'라고 한다
👉 현재 인터넷은 네임 서비스로 DNS(Domain Name Sysytem)을 사용
2. 도메인 이름
👉 DNS는 인터넷 전체의 이름 공간(도메인)을 계층화하고, 차례대로 권한을 위임해서 분산 관리를 함
👉 도메인 이름은 트리 구조의 도메인 계층을 오른쪽에서부터 마침표(.)으로 구분해서 표현
👉 점으로 구분되는 부분을 '레이블'이라고 하고 '레이블'의 길이는 63자 이하로 제한 전체 길이는 마침표를 포함해서 253자 이하로 제한
ex) 도메인 이름의 예
www.itwillbs.co.kr
www: 4레벨 도메인
itwillbs: 3레벨 도메인
co: 2레벨 도메인
kr: 최상위 레벨 도메인
👉 도메인은 IP주소와 마찬가지로 인터넷상에서 유일해야 한다!
- 도메인 주소로 패키지를 만든다!
👉 도메인 내부에서 유일하게 표현되는 호스트 이름까지 전부 표현하는 방식을 FQDN(Fully Qualified Domain Name)이라고 함
ex) www.itwillbs.co.kr/main/index.html
3. 정방향 조회 & 역방향 조회
👉 호스트 이름으로 IP주소를 찾는 것을 '정방향 조회'
👉 IP주소로 호스트 이름을 찾는 것을 '역방향 조회'
👉 일반적으로 사용자가 애플리케이션을 사용해 인터넷에 접근할 때 '정방향 조회'를 사용함
👉 '역방향 조회'는 호스트 이름을 확인하는 특수한 경우에 사용
4. 네임 서버 시작
ip add
👉 현재 리눅스에 설정된 IP 주소를 확인
nslooup
에러 메시지가 나오면 nslookup 설치가 필요
👉 yum install bind-utils -y
> www.itwillbs.co.kr 등의 도메인주소를 입력하면 서버의 주소가 표시됨
ctrl+c눌러서 종료
cat /etc/resolv.conf
👉현재 설정된 네임서버의 주소를 볼 수 있음
ping www.google.co.kr
👉 네임서버가 잘 동작해서 이름 형태의 DNS 주소로 ping 명령어가 동작!
Ctrl + C
vi /etc/resolv.conf
👉 편집기(vi)로 파일 수정
👉 nameserver 단에 앞에 '#'을 붙여서 주석처리
ex) #nameserver 203.248.252.2
esc -> :wq
ping www.google.co.kr
👉 이름 형태로는 ping 명령어를 실행할 수 없음!
👉 현재 '#' 처리로 인해 네임서버가 동작하지 않기 때문!
ping 172.217.27.3 (www.google.co.kr의 ip주소, nslookup으로 확인 가능)
👉 성공!
👉 네트워크(인터넷) 자체가 안 되는 것이 아니라 네임 서버가 동작하지 않을 뿐
👉 네임 서버의 장애가 곧 네트워크의 장애는 아니다!
vi /etc/hosts
👉 i 또는 a를 눌러 입력모드로 전환
👉 3번째 라인에 172.217.27.3 [탭] www.google.co.kr 입력
esc -> :wq
ping www.google.co.kr
👉 성공!
[리눅스가 IP주소를 얻는 내부 흐름도]
URL 입력 👉 /etc/host.conf 조회 👉 /etc/hosts 👉 1) 있으면 입력된 IP주소로 동작, 2) 없으면 /etc/resolv.conf 참조 네임서버에게 물어봄
vi /etc/resolv.conf
👉 # 주석처리 한 것들 삭제
[캐싱 전용 네임 서버]
👉 컴퓨터에서 URL주소로 IP주소를 얻고자 할 때 해당되는 URL의 IP 주소를 알려주는 네임 서버
👉 자신이 아는 IP 주소라면 요청한 컴퓨터에게 해당 URL의 IP주소를 바로 알려주고 모르는 URL이라면 "ROOT 네임 서버"로부터 차례대로 URL에 해당하는 IP주소를 알아낸다
👉 현재 서버에 설정된 통신사의 로컬 네임 서버는 '캐싱 전용 네임 서버'
리눅스에서 name server의 설치(패키지)는 'bind'로 하고 동작(실행)은 'named'
yum install -y bind
👉 name server 동작시키기 위해 패키지 설치
vi /etc/named.conf
👉 설정 파일 수정
👉 :set nu
13번 listen-on port 53 { 127.0.0.1; }; 👉 listen-on port 53 { any; }; 로 변경
- 네임 서버에 접속이 허용된 컴퓨터의 IP 주소라고 생각하면 됨
14번 listen-on-v6 port 53 { ::1; }; 👉 listen-on-v6 port 53 { none; }; 로 변경
- IPv6 주소를 가지는 컴퓨에 대한 내용으로 IPv6를 사용하지 않으려면 none처리를 해야 함
21번 allow-query { localhost; } ; 👉 allow-query { any; } ; 로 변경
- 클라이언트가 질의할 수 있도록 모든 클라이언트를 허용
esc -> :wq
systemctl restart named
👉 설정파일을 수정 후 다시 named(네임서비스)를 재시작
윈도우에서 제어판 -> 네트워크 및 공유센터 -> 이더넷 -> 우클릭 속성 -> 인터넷 프로토콜 버전 4 더블클릭 -> 다음 DNS 서버 주소 사용의 기본 설정 DNS 서버 주소를 리눅스의 네임서버로 변경
웹 브라우저에서 특정 웹사이트의 URL 주소를 입력하면 페이지 뜨지 않음!!
👉 리눅스 머신(NS)에게 DNS 관련 질의 시 방화벽(Firewalld)이 이를 막고 있기 때문
👉 방화벽에 DNS 관련 설정을 해야 함
방화벽 설정 방법
1) 터미널 -> firewall-config 명령어 입력 (GUI 환경)
2) 프로그램 -> 잡다 -> 방화벽 (GUI 환경)
3) 터미널 -> firewall-cmd 명령어를 통해 직접 입력 (TUI 환경)
1의 경우
설정 : 런타임 -> 영구적 변경
서비스의 스크롤을 내려서 □dns 에 체크!
옵션탭 -> 'Firewlld 다시 불러오기' 클릭
윈도우 웹 브라우저 주소창에 원하는 URL 주소 입력 확인
[마스터 네임 서버]
👉 자신만의 데이터를 갖는 네임 서버
👉 itwillbs.com과 같은 도메인에 속해 있는 컴퓨터들의 이름을 관리하고 외부에서 www.itwillbs.com이나 ftp.itwillbs.com등의 컴퓨터 IP주소를 알기 원할 때 해당 컴퓨터에게 IP주소를 알려주는 네임 서버
주소창에 www.itwillbs.co.kr을 을 입력하면 WebServer 가상 머신의 웹페이지가 보이도록 실습
WebServer 가상머신 시작
바탕화면 우클릭 👉 터미널 👉 ip add 주소 확인(192.168.7.141)
rpm -qa httpd
👉 아파치 웹 서비스가 설치되어 있는지 확인
yum install -y httpd
👉 설치되어 있지 않으면 설치
vi /var/www/html/index.html
👉 시작페이지 설정
👉 간단한 내용 입력 후 저장
systemctl start httpd
👉 아파지 웹 서비스 시작
터미널 방화벽 설정
firewall-config
설정 : 런타임 -> 영구적 변경
서비스의 스크롤을 내려서 □http 에 체크!
옵션탭 -> 'Firewlld 다시 불러오기' 클릭
윈도우 웹 브라우저에서 WebServer의 IP주소를 입력(192.168.7.141)
👉 시작 페이지 내용이 보이는지 확인
이제 웹 브라우저 주소창에 www.itwillbs.com 입력 시 같은 시작 페이지를 보도록 설정!
확인이 되었다면 다시 NS 서버로 이동
vi /etc/named.conf
👉 네임서버 설정 파일 수정
아래쪽 빈 라인에 입력
zone "itwillbs.com" IN {
type master; // 마스터 네임 서버
file "itwillbs.com.db"; // 데이터베이스 파일명
allow-update { none; }; // 2차 네임 서버의 주소
};
esc -> :wq
named-checkconf
👉 아무런 내용이 나오지 않으면 잘된것
cd /var/named
👉 데이터베이스 파일이 위치할 디렉터리 이동
vi itwillbs.com.db
👉 수정
@ : 도메인이름 = itwillbs.com
A : 호스트 이름에 상응하는 IP 주소를 지정(1:1)
설정 후 :wq 로 저장 후 빠져나옴
named-checkzone itwillbs.com itwillbs.db
👉 zone 설정이 잘됐는지 확인
👉 OK가 보이면 설정 완료
systemctl restart named
👉 네임서버 재시작
[라운드 로빈 방식의 네임 서버]
👉 동시 접속자가 많은 웹 사이트의 경우 여러 대의 웹 서버를 동시에 운영한다
👉 이때, 웹 서버에 대한 질의에 대해 순차적으로 교대로 여러 웹 서버의 IP주소에 대한 응답을 하는 네임 서버를 라운드 로빈 방식의 네임 서버라고 함
실습 시 웹 서버 2대 이상 NS 서버 1대가 필요
vi /var/www/html/index.html
👉 vi편집기로 webServer1, db서버는 webServer2 작성
사전 준비 작업
👉 두 대의 웹서버에 아파치 웹 서비스를 시작하고 윈도우 주소창에서 해당 웹 페이지가 보이는지 확인
두 대의 웹서버 IP주소 확인(첫 번째: 141/두 번째: 142)
준비가 되었으면 NS 서버로 이동
vi itwillbs.com.db( 현재 위치 pwd : /var/named/)
주의! web.itwillbs.com.에서 맨 뒤 마침표(.)가 있는지 확인!
CNAME(Canonical Name) 기준이 되는 이름, CNAME 행 아래 2개행의 기준이 해당됨
100, 200의 숫자는 단순히 차례를 나타내는 것이며 서로 다른 숫자면 상관없다!
systemctl restart named
👉 네임 서버 재시작
윈도우에서 (web.itwillbs.com)확인
[Master/Slave 설정을 통한 이중화]
기존에 설정된 /etc/named.conf 파일을 수정
vi /etc/named.conf
zone "itwillbs.com" IN {
type master;
file "itwillbs.com.db";
allow-update { 192.168.7.141; }; // slave로 구현되는 2차 네임 서버 IP주소
allow-transfer { 192.168.7.141; };
};
Slave 서버로 사용할 WebServer의 네임 서비스 설정
1. 설치
yum install -y bind
2. 방화벽 설정
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
3. 설정 파일 수정
vi /etc/named.conf
빈 공간 가서
systemctl restart named
👉 네임 서버 재시작
cd /var/named/slaves/
ls
👉 itwillbs.com.db 파일이 존재!
이제 윈도우 IP주소를 2차 DNS 서버(=webserver)로 변경해도 DNS 제대로 동작!!