Contents
(Linux)DNS+WEB+DHCP 서버 설치와 구성
   2022년07월23일     4분정도면 다 읽어요     - Comments

[카카오 클라우드 스쿨] DNS+WEB+DHCP 기능을 제공하는 서버를 구축해 보자

(복습)DHCP 할당 과정

  • DHCP(Dynamic Host Configuration Protocol)
  • UDP 를 사용한다
    • 클라이언트: 68번 / 서버: 67번 포트 사용


  • DHCP 할당순서
    1. 전원을 켠 PC가 수행하는 것들
      • 자신의 ip 구성방식 확인
      • 정적 구성일 경우, 자신의 NIC에 해당 주소를 할당하고 gratuitous ARP를 발생시킴
        • (gratuitous ARP: 동일한 IP를 확인하고, 응답을 보내 돌아오면 해당 IP를 쓸 수 없다)
      • 동적 구성(DHCP)이라면 하단을 수행한다

    2. PC의 IP 주소 요청
      • DISCOVER: 255.255.255.255로 주소 요청(브로드캐스트)

    3. 서버의 Bind Table 확인, OFFER
      • Bind Table에 할당되지 않은 주소를 DHCP POOL에서 꺼내 PC에게 전달한다 => OFFER(이거쓸래?)
      • Bind Table: MAC에 할당된 IP의 Expire Time이 기록된 테이블

    4. PC의 Request
      • OFFER를 받은 PC는 서버에게 Requst를 전달함(내가 쓸게!)
      • 해당 주소를 다른 PC가 사용하고 있는지 여부를 확인한다

    5. 서버의 binding table 작성
      • 서버는 최종적으로 해당 주소에 대한 binding table을 작성한다
      • 즉, 최종적으로 임대 기간을 지정해 둔 테이블 작성한다


  • 임대 기간
    • default-lease
      • 해당 시간이 되면 PC가 동작중인지 여부를 확인함
      • 동작중인 PC로부터 응답이 돌아오면, 임대기간을 갱신(계속 사용할 수 있게 됨)
    • max-lease
      • 최대 임대기간
      • 임대 연장을 최대 언제까지 할건가?


실습 환경 (브리핑)

  • DNS/WEB/DHCP 모두 가지고 있는 서버를 구축하기 위해 환경을 구성해 보자
  • CentOS8: DNS, 웹서버로 사용, VMnet10 네트워크 사용(211.183.3.88)
  • CentOS7: 일반 PC로 사용, VMnet10 네트워크 사용 (211.183.3.201~239)


  • CentOS8
    • DNS 서버로 동작
      • 캐시 네임 서버이면서 동시에 마스터네임 서버
      • 관리하는 도메인 주소: test.pri
      • 웹서버: www.test.pri
    • DHCP 서버로 동작
      • 211.183.3.201 ~ 211.183.3.239
      • DNS: 211.183.3.88 (centos8)


  • 아키텍쳐는 다음과 같다
    • img_44


  • 실습을 위해 VMware 내장 DHCP 서버는 꺼 두도록 한다
    • img_101


  • 서버 준비 과정
    [root@srv7 ~]# hostnamectl set-hostname server
[root@srv7 ~]# su

[root@server ~]# systemctl set-default multi-user.target   런레벨 3으로 돌리려 한다
[root@server ~]# init 6



작업 순서

  1. 스텝1
    • CLI를 이용하여 server의 IP주소를 211.183.3.88로 입력한다
    • 기본 게이트웨이는 211.183.3.2가 되어야 한다
    • DNS 정보는 향후 이 서버가 test.pri에 대한 마스터 네임 서버로 동작할 계획 임을 감안하여 등록한다
  2. 스텝2.
    • 웹서버, DNS, DHCP 서비스를 위해 방화벽과 selinux는 편의상 비활성화 시켜 둔다
  3. 스텝3
    • 웹서비스를 활성화 시킨다
  4. 스텝4
    • 캐시 네임 서버와 마스터 네임 서버(test.pri)를 구성한다
    • 내부 www 정보를 zone 파일에 등록한다
    • 단, 웹 서버는 자기 자신이다
  5. 스텝5
    • PC들을 위한 DHCP 서비스를 구성하고 활성화 시킨다
  6. 스텝6
    • PC는 IP 주소 입력에 대해 DHCP로 전환하고, 211.183.3.201 ~ 239 사이의 주소를 할당받아야 한다
    • firefox를 실행한 뒤 주소창에 www.test.pri를 입력했을 경우 server의 웹 페이지 내용이 보여야 한다
    • 또한 www.google.com 을 입력했을 경우에도 정상적으로 페이지가 보여야 한다.



step 1~3

  • CLI로 IP 주소 변경하기
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens160
---
DNS1=127.0.0.1
DNS2=8.8.8.8
IPADDR=211.183.3.88
PREFIX=24
GATEWAY=211.183.3.2


  • 방화벽, selinux 비활성화
systemstl status firewalld
vi /etc/selinux/config


  • 웹 서비스 활성화 - httpd 페이지 구성
vi /var/www/html/index.html
systemctl start httpd



step 4. DNS 구성하기

1. 네임 서버를 구성하기 위한 프로그램 설치

yum -y install bind bind-chroot
vi /etc/named.conf
named-checkconf  오류 확인


2. DNS config 파일 구성

  • 포트 바인딩한다 (캐시 네임 DNS 서버로 사용 가능)
  • 존까지 등록한다 (마스터네임 서버로 사용할 수 있도록 함)
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { none; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };
...
        dnssec-validation no;
...
zone "test.pri" IN {
        type master;
        file "test.pri";
        allow-update {none;};
};


3. 존 파일 생성 (마스터 네임 서버로 작동가능)

cd /var/named
touch test.pri
vi test.pri
---
$TTL            3H
@       SOA     @       root.   ( 2 1D 1H 1W 1H )
        IN      NS      @
        IN      A       211.183.3.88


www     IN      A       211.183.3.88


4. DNS 서비스 실행

systemctl restart named
systemctl enable named
systemctl restart httpd
systemctl restart network



step 5. DHCP 구성하기

1. 클라이언트측 네트워크 설정

  • DHCP로 발급받도록 DNS 서버(211.183.3.88) 수정
  • DHCP 발급 전에 인터넷 확인해 보기 (잘 접속됨)
    • img_108
  • 이제 DHCP 할당으로 바꿔 두기
    • img_107


2. DHCP 서버측 설정하기

vi /etc/dhcp/dhcpd.conf
---
ddns-update-style interim;
subnet 211.183.3.0 netmask 255.255.255.0 {
  option routers 211.183.3.2;
  option subnet-mask 255.255.255.0;
  range dynamic-bootp 211.183.3.201 211.183.3.239;
  option domain-name-servers 211.183.3.88;

  default-lease-time 6000;
  max-lease-time 7200;
}
systemstl restart dhcpd
  • dhcp 할당 완료!


step 6. 결과 확인

[root@server ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 211.183.3.201  netmask 255.255.255.0  broadcast 211.183.3.255
...
  • 클라이언트 측에서 접속이 잘 되는 것을 확인
    • img_109


  • 도메인으로 접속도 아주 잘돼요
    • img_113