ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DNS
    클라우드 교육/네트워크 2022. 11. 11. 10:00

     

     

     

     

     

    DNS ( Domain Name Service )

     

     

    호스트의 도메인 네임 ( www.hello.com )네트워크 주소( 000.000.000.000 ) 로 변환하거나 그 반대의 역할을 수행한다.

    도메인이란 IP를 사람이 직접 외우기 어렵기 때문에, IP에 이름을 부여하는 것인데 만일 DNS가 없다면 우리는 가려는 사이트의 IP주소를 외워야한다.

     

     

     

     

    Ping 테스트를 통해 도메인의 존재를 알 수 있다.  

    아래처럼 cmd 창에서 구글에 ping을 보내보면 구글은 IP주소에 ping을 보내는것을 알 수 있다. 

     

     

     

     

     

    DNS가 작동하는 원리를 보자

     

     

     

    클라이언트가 도메인명을 브라우저에 검색하면 DNS서버로 가서 도메인명과 일치하는 IP주소를 얻어온다. 

     

    우리의PC에서는 단순히 이 작업만 이루어지는데, DNS서버에서는 좀 더 복잡한 과정이 이루어진다. 

     

    전세계에서는 도메인서버가 무수히 많기 때문에 이를 계층화해서 관리하고있다. 

     

    먼저 위에서 말한 DNS 서버는 Local 서버라고 하는데 우리가 사용하는 클라이언트와 직접적인 소통을 한다. 

     

    우리가 www.naver.com의  IP 주소를 찾는데에는 Local 서버에 요청한다.

     

    Local 서버에서는 찾고자 하는 IP 주소가 있을수도 있고 없을수도 있어서, 없다면 Root 서버로 요청을 넘긴다.

     

    Root 서버에도 없다면, 도메인의 끝부분을 지칭하는( 여기서는 .com ) TLD 서버,

     

    IP 주소의 직접적인 이름( 여기서는 naver.com )을 의미하는 Authoritative DNS로가서 물어본다.

    naver.com의 Authoritative DNS서버이기때문에, 네이버의 IP주소 [ 125.209.248.6 ] 가 있다. 

     

     

     

     

    Local DNS ( 기지국 DNS )

     

    인터넷을 사용하기 위해 통신사에서 IP를 할당해준다.

    그러면 가입했던 기지국 DNS서버가 등록되는데, 통신사의 DNS서버라고 보면된다. 

     

     

     

    Root DNS

     

    ICANN( 인터넷 주소 관리 기구 )이 직접 관리하는 최고 존엄 서버이다. 

    전세계에 13대의 Root DNS 서버가 존재하는데, 이를 복제한 수백가지 서버가 호스트 요청을 처리해준다. 

     

     

     

     

    TLD DNS ( 최상위 도메인 DNS )

     

    도메인 등록기관이 관리하는 서버이다. 

    우리가 자주 보는 .com .co.kr .net 같은 도메인들을 관리하고 부여하는 서버이다. 

     

     

     

    Authoritative DNS

     

    실제 도메인의 직접적인 서버 

    그래서 권한의 Authoritative이다. 

     

    위 과정을 통해 IP주소를 성공적으로 받아오면, 캐시에 정보를 저장한다.

    다시 이 복잡한 과정을 반복하는것이 비효율적이기 때문에 PC는 이를 잠시 저장해둔다.

    이를 확인하는 방법은 cmd 창에서 아래를 입력하면 나온다 

    ipconfig /displaydns

     

     

     

     

    DNS는 53번 Port의 UDP / TCP를 사용하는데 

    일반적인 DNS를 사용할 경우 UDP를 이용한다. 

    Zone Transfer ( 영역전송 )을 사용할때 512byte 를 초과하는 전송에는 TCP를 사용한다. 



     

    cmd 창에서 도메인서버가 어떻게 입력되었는지 확인해보자. 

     

    nslookup

    서버의 네트워크가 잘 설정되었는지 확인하는 명령어이다. 

     

    naver.com을 치면 8.8.8.8 서버에서 223.130.200.104 서버로 물어봐서 네이버의 ip를 가져왔다

     

    권한없는응답 : 구글 8.8.8.8이 직접 네이버에 물어봐서 가져온 ip라서 8.8.8.8권한없는 응답이라함

     

     

     

    Set type=all
    Naver.com

     

    all : DNS 정보를 모두 표시한다

     

     

    Set type=ns
    Naver.com

     

    ns : 각 도메인에 적어도 한 개 이상 있어야 하며, DNS 서버를 가리킨다

     

     

     

    Set type=mx
    Naver.com

     

    mx : 메일 서버 IP주소와 호스트명을 검색할때 사용한다.

     

     

     

     

     

     

     

     

    리눅스 DNS 구성

     

    BIND(berkeley internet name domain) 는 DNS 를 구현한 서비스 시스템

    거의 모든 시스템을 지원한다.

     

     

    설치후 녹색파일들은 수정하고 

    파란색 파일들은 새로 만들것이다

     

     

     

     

     

    설치방법

     

    yum install -y bind bind-utils bind-libs

     

     

     

     

     

    구성파일 주의사항

    해당 zone 파일을 named에 추가 구성 후 반드시 기타 사용자에 읽기권한 부여 해야한다.
    문자로 긑나면 반드시 끝에 . 
    관리자의 메일 주소 입력 ex) aaa.naver.com

     

     

     

     

     

     

    bind 설치를 완료하면, linux에서도 똑같이 nslookup을 사용할 수 있다.

     

     

     

    먼저 자신의 ip와 dns를 확인

     

     

     

    dig naver.com +trace

     

     

    어느부분에서 문제가 생겼는지 확인가능한 명령어이다. 알아두면 좋다. 

     

     

     

    dig에서 nameserver를 강제로 8.8.8.8로 설정하는것, 여기 작업과 무관하니 기억해두고 나중에 필요할때 보면된다. 

     

     

     

     

     

    vi 편집기로 아래 항목에 들어가 도메인 네임 설정한다. 

    vi /etc/dhcp/dhcpd.conf
    systemctl restart dhcpd

     

     

     

     

     

    vi편집기로 들가서 dns 접미사 설정

     

     

     

     

     

    vi /etc/named.conf

     

    아래처럼 변경

    저장

     

     

     

     

     

    정방향 조회영역 설정

     

    아래로 들어가서

     

    vi /etc/named.rfc1912.zones

     

    19~23줄 / 37~41번줄 복사

    :19,23co$
    :37,41co$

     

     

     

    아래에 추가가 되면, 

    zone "sangm.com" IN {
            type master;
            file "sangm.com";
            allow-update { 10.0.0.2;10.0.0.3;};
    };
    zone "0.0.10.in-addr.arpa" IN {
            type master;
            file "sangm.com";
            allow-update { 10.0.0.2;10.0.0.3;; };
    };

     

    위처럼 변경후 저장

     

     

     

    파일을 복사한다. 

     

    cp /var/named/named.localhost /var/named/sangm.com
    cp /var/named/named.loopback /var/named/com.sangm

     

    ls 명령어로 복사됐는지 확인됐으면

     

     

    내부 파일을 바꿔준다. 

    로 접속

     

     

    기본적으로 아래처럼 되어있다. 

    위에걸 아래로 바꿔준다

    아래에 @, www, ftp, ns1, mx1 들은 

    @ 은 도메인 이름 그 자체이고,

    호스트가 www로 들어오거나, ftp로 들어와도 10.0.0.1로 보내버린다는 의미이다. 

     

    저장

     

     

     

    다시 다른 복사 파일을 변경하자

     

    여기로 들어가서

     

    아래처럼 변경 후 저장

     

     

    기타 사용자에 대해 읽기권한을 부여해준다. 

    chmod o+r /var/named/{sangm.com, com.sangm}
    ls -l /var/named

     

     

    재부팅

     

    다음으로 53번 DNS 포트의 TCP, UDP 방화벽을 열자

    firewall-cmd --permanent --add-port=53/{tcp,udp}
    firewall-cmd --reload
    firewall-cmd --list-all

    재부팅 후 확인해보면, 아래처럼 열린것이 확인된다. 

     

     

    작업이 다 끝났으니 확인해보자. 

    nslookup
    sangm.com

     

     

    위래처럼 잘 확인된다. 

     

     

     

    '클라우드 교육 > 네트워크' 카테고리의 다른 글

    리눅스 서버로 메일 환경 설정  (0) 2022.11.16
    Linux 사용자, IP별 접근제한방법  (0) 2022.11.15
    OSI 7계층  (0) 2022.11.10
    포트 ( Port )  (0) 2022.11.10
    Subnet mask  (0) 2022.11.07

    댓글

Designed by Tistory.