관리 메뉴

공부공부 공부공부내용

vol2_3 DNS 서버구성 (DHCP 포함) 본문

IT 기초, 네트워크, 리눅스/2. 리눅스 기초 vol2 (kvm 활용한 서비스 관리)

vol2_3 DNS 서버구성 (DHCP 포함)

wkdth04 2020. 6. 3. 22:21

DHCP 서버

  • ip /subnetmask 

  • gateway

  • dns 주소

Client -> server (dhcp Discover)

-서버에게 접속을 요청

dest 255.255.255.255 , 포트번호 67

src 0.0.0.0 : 68

tran ID : 777

  1. server -> client

  • tran ID :777

  • src : 111.111.104.2

  • dest : 255.255.255.255 : 68 

      3. c -> s DHCP request

브로드 케스트로 IP 를 지정받음을 공표

tran ID : 777

src : 0.0.0.0 :68

dest : 255.255.255.255:67

 

      4. s -> c DHCP ACK

src : 111.111.104.2 : 67

dest : 111.111.104.25 : 68

ID : 777

---------------------------------------------

DHCP 연결이 실패하면 169.254.???.???

1. dhcp 서버 ip 할당

network profile 전부 삭제

network profile 새로 추가

192.168.50.100/24

192.168.50.1

8.8.8.8

 

2. client

Edit -> Connection Details -> Virtual Networks -> 새로운 네트워크 추가 -> Enable DHCPv4 체크 해제 -> forward -> Forwarding to physical network 항목 체크 -> finish -> Apply
Virtual Network Interface의 Network Source를 dhcp 실습용 네트워크로 설정 -> 실행

 

3. server 에 dhcp 패키지 설치

yum install dhcp

vi /etc/dhcp/dhcpd.conf

# 참고 /usr/share/doc/dhcp*/dhcpd.conf.example

# /etc/dhcp/dhcpd.conf

subnet 192.168.50.0 netmask 255.255.255.0 {

range 192.168.50.101 192.168.50.110;

option routers 192.168.50.1;

option broadcast-address 192.168.50.255;

option domain-name-servers 8.8.8.8;

default-lease-time 600;

max-lease-time 7200;

}

# 위에거랑 같은거

# DHCP Server Configuration file.

# see /usr/share/doc/dhcp*/dhcpd.conf.example

# see dhcpd.conf(5) man page

#

 

subnet 192.168.50.0 netmask 255.255.255.0 {

range 192.168.50.101 192.168.50.110;

option routers 192.168.50.1; # default gateway 의미

option broadcast-address 192.168.50.255;

option domain-name-server 8.8.8.8;

default-lease-time 600; #d이 시간안에 할당하겠다는 뜻

max-lease-time 7200;

}

이제 설정했으니깐 방화벽 설정하고 서비스 올린다.

(이 순서**********************)

 

 

4.

firewall-cmd --permanent --add-service=dhcp

firewall-cmd --reload

systemctl enable dhcpd

systemctl start dhcpd

systemctl status dhcpd

tail -f /var/lib/dhcpd/dhcpd.leases 로 모니터링

 

5. client 에서

클라이언트의 네트워크 장비도 DHCP로 똑같이 설정해준 후에

nmcli con add con -name dhcp_c type ethernet ifname eth0 으로 새로 생성해서

nmcli connection up dhcp_c 를 업시켜주면


(서버의 tail -f /var/lib/dhcpd/dhcpd/leases 를 열어놓고 클라이언트가 할당받으면 서버창 여기에 뜬다.)


Chapter 3. DNS 서버

DNS 서버

 

DNS 구조

 

  • root servers

.com   |    .com’s IP

.org    |    .org’s IP

 

.com | nsname.come | NS | 3500

nsname.com | 101.5.5.3 | A | 3500

 

  • TLD(Top Level Domain)

.com

google.com   |   google.com’s IP

amazon.com |   amazon.com’s IP

nsname.com

google.com | dn1.google.com | NS | 3500

dn1.google.com | 8.8.8.8 | A | 3500

amazon.com | dn1.amazon.com | NS | 3220

amazon.com | 9.9.9.9 | A | 3220

 

DNS 종류

 

  • authoritative DNS

  • IP 주소를 저장, 수정, 삭제 

maps.com  |  maps.google.com ‘s IP

www.google.com  |  www.google.com ‘s IP

mail.google.com  | mail.google.com ‘s IP

 

dn1.google.com

maps.com | 8.8.8.10fire

www.google.com | 8.8.8.15

mail.google.com | 8.8.8.100

 

  • cache DNS

  • 사용자로부터 DNS 정보조회 요청을 받을 때 authoritative DNS에서 정보 가져와 사용자에게 제공

 

Local DNS 서버를 만들어 놓고 운영

 

  • DNS 쿼리를 저장해놓고 host들이 질의하면 대신 답변

  • TTL 필드가 존재해서 최신 상태를 유지하게 해줌

 

DNS 레코드

 

  • DNS 레코드의 변경사항이 적용될 때까지 걸리는 시간을 결정

  • NAME VALUE TYPE TTL

  • A record: 호스트 주소(IPv4, IPv6)

www.google.com | 111.111.11.11 | A | 1250

server1.google.com | 111.111.11.15 | A | 1250

mail.google.com | 111.111.11.15 | A | 1250

google.com | 111.111.20.230 | A | 1250

 

  • NS record: Name Server

.com | nsname.com | NS | 3500

.net | nsname-net.com | NS | 3500

 

  • CNAME record: 별칭

www.google.com | server1.google.com | CNAME | 30

www.google.com | server2.google.com | CNAME | 30

chapter 3 DNS 서버

*참고

https://www.codns.com/b/B05-162

 

전세계 몇개 없는 루트 디렉토리를 모두 사용하면 트래픽이 발생하므로 로컬 ____ 이 응답할수있도록 하는것 (우리나라의 kt , skt , lg등)

ttl -> 갱신되어야 할 시간

DNS 서버님

IP-DN

DN : www.google.com -> DNS server -> IP 알려줌

 

www.google.com | google's IP

www.naver.com | naver's IP

 

- DN 주소가 너무 많다.

- 검색하는데 시간이 너무 오래 걸린다

--------------------------------------------------

Local DNS 서버를 만들어 놓고 운영한다.

- DNS 쿼리를 저장해놓고 host들이 질의 하면 대신 답변해줌

- TTL 필드가 존재해서 최신 상태를 유지하게 해준다.

--------------------------------------------------

 

1 ifconfig

2 sudo yum install bind-utils.x86_64

3 host google.com

4 host -v google.com

5 history

6 host -t cname google.com

7 host -t ns google.com

8 host ns4.google.com 8.8.8.8

9 yum install -y bind*

10 sudo yum update

11 yum install -y bind*

12 sudo systemctl staus named.service

13*

14 sudo yum install -y bind*

15 sudo systemctl staus named.service

16 sudo systemctl status named.service

17 sudo bi /etc/named.conf

18 sudo vi /etc/named.conf

19 systemctl start named.service

20 sudo systemctl start named.service

21 sudo setenforce 0

22 sudo getenforce

23 sudo firewall-cmd --add-service=dns --permanent

24 sudo firewall-cmd --reload

25 sudo firewall-cmd --list-all

26 여기까지 질의 허용한상태

27 클라이언트 창 다시켜서 nslookup해보고

28 해서 끊어버리면 클라이언트에서 질의불가

 

 

 

 

 

-------------------------------------------------day6/2----------------------------------------------------------------

6/2 화요일

 

DNS 서버구성 전 환경설정.

장비만들고

nmcli con add con-name eth0-http type ethernet ifname eth0

nmcli con mod eth0_http ipv4.addresses 192.168.122.150/24접속

sudo nmcli con mod eth0_http ipv4.gateway 192.168.122.1

sudo nmcli con mod eth0_http ipv4.dns 192.168.122.200

sudo nmcli con mod eth0_http ipv4.method manual

sudo nmcli con up eth0_http

hostnamectl set-hostname www.20200602.co.kr

 

로 설정

ping www.google.com -> 잘가는지 확인. 만든 dns서버가 잘 동작하는지 확인

새로만든 네트워크로 ssh 접속 ip 192.168.122.150

--------------------------강사님 압축정리 ----------------------------

sudo yum install httpd

sudo vi /var/www/html/index.html

hello~ world

firewall-cmd --add-service=http --permanent

firewall-cmd --reload

systemctl start httpd

systemctl status httpd

systemctl enable httpd

vi /etc/named.conf -> 기존 존 에 하나 추가

cd /var/named/data/

ls

cp nobreak.xo.kr.zone /var/named/data/20200602.co.kr.zone

named-checkzone

systemctl restart named.service

 

<client>

nslookup 20200602.co.kr 192.168.122.150

** dns바꿔주기

nmcli con down eth0-client (오류나면 모두 down해주고 다시 설정후 up)

nmcli con mod eth0_client ipv4.dns 192.168.122.150

nmcli con up eth0-client

nmcli con reload eth0-client

 

curl www.20200602.co.kr

curl 192.168.122.150

curl 하면 뜬다.

--------------------------실습과정 자세하게---------------

DNS zone 생성

 

server

33 sudo cp /var/named/named.empty /var/named/data/nobreak.co.kr.zone

34 sudo vi /var/named/data/20200602.co.kr.zone

36 sudo vi /etc/named.conf

39 sudo named-checkconf /etc/named.conf

40 sudo vi /etc/named.conf

42 sudo systemctl restart named.service

43 sudo systemctl status named.service

45 sudo chmod -R 754 /var/named

46 sudo systemctl restart named.service

 

 

client

13 sudo yum install bind-utils.x86_64

14 nslookup www.google.com 192.168.122.200

15 nslookup www.20200602.co.kr 192.168.122.200

 

문제 변경

16 curl www.20200602.co.kr

 

-------------------***DNS서비스 구성 정리***----------------------------

순서

 

yum update 먼저,

1.먼저 각각 서버와 클라이언트에서 바인드를 설치한다. yum install bind-utils.x86_64

bind패키지가 설치된 이후에 DNS서비스를 제공하기 위한 named 서비스를 사용할 수 있다.

- 설치직후에는 systemctl status named.service 로 확인해보면 아직 서비스 활성화가 안되어있다.

 

<서버>

2.바인드 구성을 위해 named서비스 설정 파일인 /etc/named.conf 를 cat으로 확인해보면

옵션 영역에서 port53번 부분 영역들이 현재 시스템만 DNS요청을 받아들일 수 있도록 설정되어있다. (기본설정값)

이부분을 각각 vi편집기로 any; , none;, any; 로 변경해주고 systemctl enable named.service, systemctl restart named.service 한다. 상태 확인해보면 활성화 되어있다.

 

3. UDP포트 53번을 허용해야 DNS사용이 가능하기 때문에

방화벽에서 연결허용을 해줘야한다.

firewall-cmd --permanent --add-service=dns

firewall-cmd --reload

이후 DNS가 동작하는지 확인하기 위해

nslookup www.google.com 192.168.122.200 (본인 아이피)

치면 뜬다.

 

[존파일 구성과 권한문제 해결필수]

4. * sudo chmod -R 754 /var/named (권한부여/읽기 권한 허용해줘야함)

* 존 구성

 

sudo cp /var/named/named.empty /var/named/data/www.20200602.co.kr.zone

sudo vi /var/named/data/20200602.co.kr.zone (www. 으로 해줘도 되고 기존에 없는 서버로 이름 자유 , 하지만 마지막부분에 .zone 형식으로 만들어줘야함)

 

 

5.존 파일 조회

-정방향 // 역방향

cd /var/named 로 들어가서

cat /data/www.20200602.co.kr 확인해보고 vi편집기로

NS 부분에 www.20200602.co.kr

그밑 A 부분에 서버주소 적기(server 주소 192.168.122.200)

 

6. /etc/named.conf 파일수정*****

zone영역 추가하기

 

ex)

zone "www.20200602.co.kr." IN{

type master; ****마스터형태

file "data/www.20200602.co.kr.zone";

};

 

이후

sudo named-checkconf /etc/named.conf

sudo systemctl restart named.service

sudo systemctl status named.service

 

8. http서비스 패키지 다운 및 방화벽 활성화

9. vi 로 html 에 내용 입력해주고

 

<클라이언트>

 

7. nslookup www.20200602.co.kr 192.168.122.200 으로 확인해보면

잡히고 저장

>> 클라이언트의 도메인 서버의 IP주소로 바꿔주고

 

8. curl 로 확인

*** 실수였던 부분

-> vi 존 설정시 @ 와 ; 의 오타 및 누락

-> 클라이언트 서버에서 기존 디엔에스 서버를 서버의 아이피주소로 변경해줘야한다******

또한 , curl 전에는 http 를 yum install 해주고

방화벽 firewall-cmd 를 통해 http서비스 시작해주고 리로드 해준다.

systemctl 활성화 및 재시작을 하고 status로 상태확인을 해준다.

잘 작동하고 있으면

**** vi /var/www/html/index.html 에 "hello world!"를 입력한다.

 

이후 클라이언트에서 curl 잡아주면 -> hello world가 잡힌다.

웹페이지상에서도 서버의 주소를 입력하면 hello world가 출력된다.