(Linux)DNS+WEB+DHCP 서버 설치와 구성
[카카오 클라우드 스쿨] DNS+WEB+DHCP 기능을 제공하는 서버를 구축해 보자
(복습)DHCP 할당 과정
- DHCP(Dynamic Host Configuration Protocol)
- UDP 를 사용한다
- 클라이언트: 68번 / 서버: 67번 포트 사용
- DHCP 할당순서
- 전원을 켠 PC가 수행하는 것들
- 자신의 ip 구성방식 확인
- 정적 구성일 경우, 자신의 NIC에 해당 주소를 할당하고 gratuitous ARP를 발생시킴
- (gratuitous ARP: 동일한 IP를 확인하고, 응답을 보내 돌아오면 해당 IP를 쓸 수 없다)
- 동적 구성(DHCP)이라면 하단을 수행한다
- PC의 IP 주소 요청
- DISCOVER: 255.255.255.255로 주소 요청(브로드캐스트)
- DISCOVER: 255.255.255.255로 주소 요청(브로드캐스트)
- 서버의 Bind Table 확인, OFFER
- Bind Table에 할당되지 않은 주소를 DHCP POOL에서 꺼내 PC에게 전달한다 => OFFER(이거쓸래?)
- Bind Table: MAC에 할당된 IP의 Expire Time이 기록된 테이블
- PC의 Request
- OFFER를 받은 PC는 서버에게 Requst를 전달함(내가 쓸게!)
- 해당 주소를 다른 PC가 사용하고 있는지 여부를 확인한다
- 서버의 binding table 작성
- 서버는 최종적으로 해당 주소에 대한 binding table을 작성한다
- 즉, 최종적으로 임대 기간을 지정해 둔 테이블 작성한다
- 전원을 켠 PC가 수행하는 것들
- 임대 기간
- default-lease
- 해당 시간이 되면 PC가 동작중인지 여부를 확인함
- 동작중인 PC로부터 응답이 돌아오면, 임대기간을 갱신(계속 사용할 수 있게 됨)
- max-lease
- 최대 임대기간
- 임대 연장을 최대 언제까지 할건가?
- default-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)
- DNS 서버로 동작
- 아키텍쳐는 다음과 같다
- 실습을 위해 VMware 내장 DHCP 서버는 꺼 두도록 한다
- 서버 준비 과정
[root@srv7 ~]# hostnamectl set-hostname server
[root@srv7 ~]# su
[root@server ~]# systemctl set-default multi-user.target 런레벨 3으로 돌리려 한다
[root@server ~]# init 6
작업 순서
- 스텝1
- CLI를 이용하여 server의 IP주소를 211.183.3.88로 입력한다
- 기본 게이트웨이는 211.183.3.2가 되어야 한다
- DNS 정보는 향후 이 서버가 test.pri에 대한 마스터 네임 서버로 동작할 계획 임을 감안하여 등록한다
- 스텝2.
- 웹서버, DNS, DHCP 서비스를 위해 방화벽과 selinux는 편의상 비활성화 시켜 둔다
- 스텝3
- 웹서비스를 활성화 시킨다
- 스텝4
- 캐시 네임 서버와 마스터 네임 서버(test.pri)를 구성한다
- 내부 www 정보를 zone 파일에 등록한다
- 단, 웹 서버는 자기 자신이다
- 스텝5
- PC들을 위한 DHCP 서비스를 구성하고 활성화 시킨다
- 스텝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 발급 전에 인터넷 확인해 보기 (잘 접속됨)
- 이제 DHCP 할당으로 바꿔 두기
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
...
- 클라이언트 측에서 접속이 잘 되는 것을 확인
- 도메인으로 접속도 아주 잘돼요