0부터 시작하는 Linux 공부 - DNS 서버 & Proxy

Jaehong Lee·2022년 7월 22일
3
post-thumbnail

1. 네임 서버

p. 483

  • 네임 서버는 DNS 서버라고도 하며, URL 을 해당 컴퓨터의 Ip 주소로 변환 시켜 주는 ' 이름 해석 ' 을 해주는 서버. Domain 에 대한 Ip 정보 전달

DNS 동작 방식

p. 493

    1. 컴퓨터에서 도메인 주소 www.test.com 을 입력하면 DNS 서버 8.8.8.8 에 쿼리를 보낸다
    1. DNS 서버에서는 루트 도메인 서버에 간다
    1. 루트 도메인에서는 DNS 서버에게 .COM 서버의 주소를 알려준다
    1. DNS 서버는 최상위 도메인 서버 ( .COM 서버 ) 에게 가서 test.com 주소에 대해 물어본다. 최상위 도메인 서버가 해당 주소를 알려준다
    1. DNS 서버가 test.com 서버 ( 회사의 DNS 서버 ) 에 가서 www.test.com 주소에 대해 물어본다
    1. test.com 서버는 자신의 ZONE FILE 에서 www 에 대한 주소 5.5.5.6 를 검색하여 DNS 서버에게 알려준다. 해당 ZONE FILE 을 구성할 때, 주소를 요청하는 서버들에 대해 일정 기간 동안 캐시에 보관하게 설정해준다
    1. DNS 서버는 받은 주소를 캐시에 저장한다. www.test.com = 5.5.5.6. 이 주소는 www.test.com 을 관리하는 DNS 서버의 ZONE FILE 에서 지정한 기간 동안 저장된다
    1. 이를 사용자에게 알려주어, 접속이 가능하게 한다
  • 도메인을 구매했을때 www.test.com 에서 test.com 을 구매한 것 이다
  • 회사에서 사용하는 DNS 주소를 관리하는 서버를 DNS 서버라고 하며, Master Name 서버 라고 한다
  • 루트 도메인 서버에서는 . 하위의 com / net / kr 등을 관리한다
  • 최상위 도메인 서버에서는 .com 하위의 google.com / naver.com 등을 관리한다

네임 서버 종류

  • 사용자 입장에서 자신의 NIC 에 DNS 항목에 작성한 DNS 서버 주소 = 로컬 네임 서버

  • 실제로 DNS 서비스를 제공하는 서버

    • 캐시 네임 서버 : 자신이 직접 도메인을 관리하지 않고, 루트 도메인 서버, .com 서버 등에게 질의한 다음, 최종 결과를 자신의 캐시에 저장하고, 해당 결과를 사용자에게 전달해 주는 역할만을 수행한다. 이후에 동일 주소에 대한 query 가 또 있을 경우 캐시에 있는 정보를 확인하여 전달해 준다 ( ex - 8.8.8.8 )
    • 마스터 네임 서버 : test.com , test.co.kr 과 같은 도메인을 직접 관리하는 서버이며, zone 파일이라는 곳에 서브 도메인 등을 작성하여, 외부에서 www.test.com 과 같은 주소로의 접속을 희망했을 경우, 서브 도메인에 대한 주소를 알려주는 역활을 수행한다

2. 사용할 네임 서버 Ip 설정

  • CentOS 8 은 CentOS 7 을 캐시 네임 서버로 사용할 것 이다
  • DNS 주소를 CentOS 7의 Ip 주소로 변경
  • 변경한 네임 서버의 주소를 확인 가능 하다

3. 캐시 네임 서버 구현

p. 499

  • bind bind-chroot 를 설치하자
  • 네임 서버 설정 파일을 수정하자
  • 포트 번호 53 번을 사용하므로 UDP 를 사용한다
  • IPV6 는 NONE 으로 사용하여 제공하지 않으며, 요청할 수 있는 IP 는 모든 IP 로 설정하고, 제공해주는 IP 도 모든 IP 로 설정한다
  • Ip 에 대해 정상적인 Ip 인지 Key 를 통해 확인하는 설정이다. Key 를 등록해줘야 한다
  • 실습 편의상 no 로 설정하자
  • 저장하고, named 를 재실행 및 상태를 확인하자

  • CentOS 8 에서 DNS 서버로 지정한 CentOS 7 에서 정상적으로 해당 도메인 주소에 대한 Ip 주소를 알려준다. 이는 CentOS 8 이 CentOS 7 에 요청하면 CentOS 7 은 자신의 도메인 서버인 8.8.8.8 에 물어봐서 해당 결과를 전달해 준 것이다
  • 세부 정보를 출력해보면, www 가 아닌 rapa.or.kr 에 대한 주소는 ns21.hanbiro.com. 에서 관리하는 것을 확인할 수 있다
  • www 는 14.63.183.79 에서 관리한다

    p. 515 참조

4. 시나리오

우리 회사에 있는 캐시 네임 서버 192.168.1.118 을 마스터 네임 서버로 활용할 계획이다. 도메인 주소는 jaehong.com 이다. 내부에 있는 211.183.3.111 이 주소창에 www.gildong.com 이라고 했을 때 마스터 네임 서버에서 동시에 서비스 하고 있는 웹 서비스를 제공할 수 있어야 한다

p. 513

  • /etc/named.conf 를 편집기로 열어주자
  • 다음과 같이 작성한다
    • master 와 slave 는 DNS 서버를 두 개 두어, master 서버의 내용을 sync 를 통해 slave 서버에 저장하며, master 서버가 응답이 없다면, slave 서버에서 제공해준다
    • 만약, master 에서 업데이트가 된다면, allow-update 안에 작성한 slave 서버 Ip 로 해당 업데이트 사항을 전달해준다. 허나, 현재 slave 서버가 없으므로 none 이라고 설정 한다

  • 설정 파일에 오류가 없는지 확인하자. 아무것도 출력되면 안된다
  • 다음 폴더에 들어와서 db 파일을 만들고, 편집기로 열어주자
  • 다음과 같이 작성한다
  • named 를 재실행 해준다
  • eth0 구성 파일을 편집기로 열어보자
  • 다음과 같이 설정한다. 요청이 들어왔을 때, 먼저 127.0.0.1 인 본인의 ZONE FILE을 확인하고, 없다면 DNS2 주소에 물어본다
  • network 를 재실행 해준다
  • httpd 도 재실행 해준다
  • 잘 작동한다

5. 프록시 서버

  • 프록시는 대리인 역활을 하는 서버다. 웹 환경에서 프록시 서버는 클라이언트와 서버 사이에서 요청한 데이터를 전달하는 것이다

  • 프록시 서버는 웹 서버에서 가져온 데이터를 클라이언트에게 전성한 후 데이터를 캐시에 저장한다

  • DMZ ZONE 은 외부에 서비스 하는 곳 이다
  • INSIDE 에서는 외부로 나갈 수만 있게 하면 되므로, PAT 만 해주면 된다
  • 만약, 내부의 모든 사용자가 외부로 나가게 되면, OUTSIDE 회선의 속도가 느려진다. 이를 방지하기 위해, PROXY 를 사용한다. 내부 사용자가 외부에 접근할려하면, PROXY 에 접근한다. 그러면 PROXY 가 대신 외부에 다녀와서 DATA 를 본인의 캐시에 담고, 요청한 사용자에게 전달한다
  • 캐시에 담았으므로, 만약 다른 사용자가 동일한 주소에 대해 요청을 하면, 캐시에 담긴 내용을 전달해준다
  • web proxy 는 웹 서버의 내용을 cache 에 담고, 이를 클라이언트에게 전달한다. 이후, 동일 사이트 접속시 cache 에 있는 내용을 LAN 에서 전달하므로 속도가 빠르다
  • Proxy 에서는 요청한 장비에 대해 인증을 해야한다. 이를 위해, 인증을 위한 서버를 따로 만들어, 사용자가 Proxy 서버에 도달하면, 인증 서버에게 요청해서 해당 사용자가 허가된 사용자가 맞는지 인증을 하고, 맞다면, 외부에 나가 데이터를 가져온다
profile
멋진 엔지니어가 될 때까지

1개의 댓글

comment-user-thumbnail
2022년 7월 24일

항상 잘 보고 있습니다! 이해는 안가네요

답글 달기