DNS(Domain Name System) 서버 구축

carlkim·2023년 12월 28일
0

시스템엔지니어링

목록 보기
21/35

DNS(Domain Name System) 란 무엇인가

-- 호스트의 이름 (예시 www.hwan.com)에 요청을 보내면 IP주소(예시 192.168.0.1)을 반환하거나 IP를 요청하면 www.hwan.com을 반환하는 시스템이다.

-- 호스트이름(www.hwan.com)과 IP(192.168.0.1)를 매핑시켜주는 시스템으로 보면 된다.
-- 사용자들이 이해하기 쉬운 도메인 주소로 서버에 접근할 수 있게 해주는 편의성 작업이라 이해하면 쉽다.
특정 사이트(www.naver.com or www.goolgle.com)으로 들어갈 때 주소를 입력하지 IP주소를 입력해서 들어가지 않지 않는다 IP는 외우기 힘드니까.
-- DNS 서버는 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지 제어하며, 이 요청을 쿼리라 부른다.
-- DNS 서버는 IP 주소와 도메인을 저장하고 매핑(mapping)하는 일종의 데이터베이스라 이해하자.

DNS 서버 구축 이유

기관 등의 내부 네트워크가 클 경우, DNS 서버가 기관 내부에 있을 경우 캐쉬 효과가 있습니다. 그리고 서비스 제공을 목적일 경우 직접 DNS 서버를 운영하게 되면 동적으로 DNS 레코드를 관리할 수 있다는 장점이 있습니다.

그리고 도메인 설정에서 지원하지 않는 DNS 레코드를 직접 설정해야 할 수도 있을 수 있는데 여러가지 이유로 직접 DNS 서버를 구축할 수 있습니다.
즉 속도와 IP가 변경되더라도 유연하게 대처하기 위해 구축합니다.

Domain 구조

-- 인터넷상에서 사용되는 도메인은 전 세계적으로 고유하게 존재하는 이름이있다.(ex) www.google.com)
-- 도메인은 정해진 규칙과 체계를 따라야한다, 임의로 변경되거나 생성될 수 없다.
-- 도메인의 체계적인 분류, 관리를 위해 도메인 이름은 몇 개의 짧은 영문자를 '.'(닷)으로 연결한 계층 구조를 가진다. (ex) www.google.com)같이 생성된다.
-- 역트리(Inverted tree)구조라 하며 트리 구조의 정점을 루트라 부른다.

----- 1 단계 도메인 -----

도메인 또는 최상의 도메인(TLD, Top Level Domain)을 루트 바로 아래 단계의 도메인
kr같은 국가 도메인
(ccTLD[country code Top Level Domain])
또는
com 같은 등록인의 목적에 따라 사용되는 일반 도메인
(gTLD [generic Top Level Domain])

----- 2단계 도메인 ------

조직의 속성을 구분하는 'co'(영리 기업), 'go'(정부 기관), 'ac'(대학)과 같은 도메인이 있다.

----- 3단계 도메인 ------

조직이나 서비스의 이름을 나타내는 도메인 이름으로 도메인 사용자가 원하는 문자열을 사용할 수 있다
(www.xxxx.com 의 xxxx 부분을 나타낸다.)
(www.naver.com의 naver 부분이 3단계 도메인이지.)

----- 호스트 -----

www가 호스트이다.

-- 도메인을 표기할 때는 낮은 단계부터 표현하여 최상위 도메인이 가장 뒤에 나타납니다.
때문에 www.naver.com 이렇게 표현한다.

호스트,3단계 도메, 2단계 도메인, 1단계 도메인 이렇게 표기된다.

-- 도메인은 도메인 계층 구조를 반영한 네임 서버(DNS 서버로 칭한다)에 저장 및 관리된다.
-- 각 네임 서버는 도메인 계층의 일부 영역을 담당하고 그 영역에 속한 도메인을 관리한다.
-- 상위 계층의 네임 서버는 하위 계층의 도메인에 대한 정보를 관리하고 하위 계층 네임드 서버의 IP 주소를 갖고 있다.
-- 최상위 계층인 루트 네임 서버의 IP 주소는 모든 DNS 서버가 등록 관리한다.

DNS 기본 동작 순서

  1. 유저가 브라우저의 주소창에 www.naver.com 을 입력하고 엔터를 누른다(요청)한다.
  2. www.naver.com의 요청은 Local DNS 서버에 도달한다.
    2-1 Local DNS 서버에 www.naver.com에 해당하는 IP가 있다면 해당 IP를 응답한다. 2-2 Local DNS 서버에 www.naver.com에 해당하는 IP가 없다면
    Root (DNS) -> com (DNS) -> naver (DNS) 순서로 IP를 찾는다.

DNS 서비스 실습

dns를 띄우라는건 bind(named) 서버를 띄워서
내가 이름을 준 아이피를 반환하게 하는 것이 목표.

nslookup(53번포트 조회)을 했을 때
A recorde에 아이피가 나와야한다.

www.bationhwan.com 을 입력했을 때.
172.16.40.200 ip를 반환하게 하면 된다.

DNS서버 구축시 필수적으로 거쳐야할 6가지 설정파일!!

1) /etc/hosts
2) /etc/resolv.conf
3) /etc/named.conf
4) /etc/named.rfc1912.zones
5) /var/named/포워드 존 설정파일
6) /var/named/리버스 존 설정파일

실무에서는 오픈시프트 구성을 했을 때 dns 이름으로 하니까.
마스터 노드, 워커 노드, 인프라, 어플 등을 dns서버에서 하기 때문에 필수 작업.

systemctl status named

systemctl start named

-------- 정방향 조회 -------

정방향 조회 : 이름을 주소로 변환하는 작업

패키지 설정

sudo yum update -y

패키지 설치

sudo yum install bind-chroot bind-utils -y

1. 호스트 네임 설정

(내서버의 도메인 이름 정하는 행위)
bationhwan.com 으로 들어오면 내 서버의 DNS서버를 보게 된다.

hostnamectl set-hostname bationhwan.com

DNS 추가(호스트에 추가)
(DNS 설정파일 resolv.conf를 연다)

NetworkManager로 수정하는 방법도 있다, 아래에 간략하게 수정
이 실습에서는 resolv.conf를 직접 수정하는 방법을 사용한다.

연결 프로필 확인

sudo nmcli connection show

변경할 커넥션과 아이피 주소 입력

nmcli connection modify eth0 ipv4.dns "10.0.0.24"

네트워크 매니저 재시작

sudo nmcli connection down eth0
sudo nmcli connection up eth0
sudo systemctl restart NetworkManager

네임서버

sudo vim /etc/resolv.conf

자체 서버인 172.16.40.200 을 바라보게한다.

named.serice 시작

systemctl enable --now named

DNS 53 포트에 모든 아이피가 접근 가능하도록 변경
DNS 서버의 쿼리에 대한 모든 IP가 접근가능하게 변경

2. named.conf 수정 -- (정방향 설정) 수정

vim /etc/named.conf

zone 파일(BIND 서버에서 사용되는)을 반드시 새로 만들어준다.
bationhwan.com DNS 영역에 대한 기본 파일을 만들어준다.

vim /var/named/bationhwan.com.db

이렇게 해야 에러가 안난다.

$TTL 1D
@       IN      SOA     ns1.bationhwan.com. admin.bationhwan.com. (
                        2023010101 ; Serial number (YYYYMMDDXX)
                        1H ; Refresh
                        15M ; Retry
                        1W ; Expire
                        1D ; Minimum TTL
                        )

; Name Servers
@       IN      NS      ns1.bationhwan.com.
ns1     IN      A       172.16.40.200 # 이부분을 추가

; A Records
@       IN      A       172.16.40.200 
www     IN      A       172.16.40.200
mail    IN      A       192.168.1.3

ZONE 파일 해석(레코드 파일)

1. $TTL 1D: Time To Live(TTL) 값을 1일로 설정합니다. TTL은 레코드가 캐시에서 유지되는 시간을 나타냅니다.

2. @ IN SOA ns1.bationhwan.com. admin.bationhwan.com. (: Start of Authority (SOA) 레코드를 정의합니다. 이 레코드는 해당 DNS 영역에 대한 기본 설정을 포함합니다.

ns1.bationhwan.com.: 도메인 이름
admin.bationhwan.com.: 주 관리자(admin)의 이메일 주소
나머지는 SOA 레코드의 시리얼 넘버, Refresh 주기, Retry 주기, Expire 시간, Minimum TTL 값 등입니다.
3. @ IN NS ns1.bationhwan.com.: DNS 영역의 네임 서버를 ns1.bationhwan.com.로 지정합니다.

4. ns1 IN A 172.16.40.200: 도메인 ns1.bationhwan.com.의 IPv4 주소를 지정합니다.

5. @ IN A 172.16.40.200: 도메인 bationhwan.com의 IPv4 주소를 지정합니다.

6. www IN A 172.16.40.200: 도메인 www.bationhwan.com의 IPv4 주소를 지정합니다.

7. mail IN A 192.168.1.3: 도메인 mail.bationhwan.com의 IPv4 주소를 지정합니다.

재설정 시작

sudo systemctl restart named

틀린 부분있나 체크존 돌려본다.

sudo named-checkzone bationhwan.com /var/named/bationhwan.com.db

nslookup

정방향 설정은 정상적으로 이루어졌습니다.

----------------- 역방향 설정 ------------------

역방향 설정이란?

IP 주소에서 호스트 이름을 찾게 설정하는 것.
정방향이 호스트 이름을 입력하면 IP를 반환하게 하면 되는 것처럼
역방향은 IP주소를 입력하면 호스트 이름을 반환하면된다.

역방향 설정 하는 이유, 왜 하는가?

  1. 안전한 통신 : 역방향 DNS 사용하면 인터넷에서 오는 데이터가 어디서 왔는지 확인할 수 있다.
  2. 이메일 신뢰성 : 이메일 서버가 정통한 서버인지 확인하는데 사용.
    (어떤 서버에서 왔는지 확인 가능)
  3. 서비스 식별 : 특정 IP 주소가 어떤 서비스를 제공하는지 알 수 있지.
  4. 문제 해결을 위해서 : 어떤 기기에서 문제가 발생했는지 쉽게 파악 가능

요약

역방향 DNS 설정 이유
1. 네트워크 트래픽의 출처 확인
2. 로깅 및 감사
3. 서버 식별
4. 네트워크 문제 해결 등 다양한 이유로 중요

설정 방법

목표 : nslookup 172.16.40.200을 입력했을 때 www.bationhwan.com을 출력하게 하면 된다.

--- 패키지 설치, 호스트 네임 설정은 생랼 ----

  1. BIND DNS 서버 설정 파일에 PTR 레코드 추가
    /etc/named.conf

/var/named/db.200.40.172 (역방향 zone)파일 설정

설정 재시작

sudo systemctl restart named

확인

nslookup 172.16.40.200
profile
기본부터 가면 됩니다.

0개의 댓글