DHCP & DNS Network 구성

CreativeBOX·2023년 7월 10일
5

Network

목록 보기
1/1
post-thumbnail

원활한 테스트를 위해서 순차적 진행을 권장합니다.

1. 시나리오

  • Local Server : DNS, DHCP, web server에 역활을 수행
  • Local PC
    • Local Server 로부터 DHCP IP를 할당받는다.
    • Local webserver에 도메인을 Local DNS Server로부터 도메인을 찾고 접속한다.

2. 테스트 환경

  • Network Simulator : GNS3
  • Packet check : WireShark on GNS3
  • Host PC : window
  • Virtualbox
    • Local Server : Ubuntu server 20.04 , Host-only & NAT
      • Apt Package : isc-dhcp-server, bind9, apache2, net-tools
    • Local PC : Ubuntu 20.04, Host-only
      • Apt Package : net-tools

3. 환경 체크

초기 환경을 확인하는 방법에 대한 설명

  • Local Server
    • 초기 Apt 설치 목록 확인
      • apt list --installed
      • apt list --installed | grep {패키지명}
    • PC확인
      • ifconfig
        - 추가 도구 설치
        - 해당 과정에서 IP를 확인을 하기 위해서 추가 도구를 설치해 과정을 편하게 한다.

        sudo apt-get install net-tools
    • 외부 통신 확인(인터넷 확인)
      • ping 8.8.8.8
        • 구글 도메인 서버로 Ping 테스트
        • Apt install을 하기 위해서는 외부와 연결이 필수
        • 오류 발생 시 IP, virtual Box 네트워크 확인
          • NAT일 경우 : ip가 10.0.2.15인 것을 확인
          • host-only 상황에서는 NAT,브릿지로 변경

4. Apt

Apt는 리눅스 계열에서 사용되는 소프트웨어 패키지의 설치 및 제거를 도와주는 도구다.

sudo apt-get update
  • 설치 가능한 패키지 리스트를 업데이트한다.
sudo apt-get upgrade
  • 현재 운영체제에 설치된 패키지를 최신 버전으로 업데이트하는 명령어
    • 해당 과정을 안 할 경우 vi 편집 과정에서 backspace가 안되어 불편할 수 있다.
  • 현재 설치되어 있는 모든 프로그램을 전부 업데이트해서 버전 오류가 발생할 수 있기에 필요한 부분만 업데이트할 경우
apt-get install --only-upgrade {packagename}

5. DHCP설정

Local server에 DHCP 서비스를 설정하는 과정입니다.

5.1 DHCP 설치

sudo apt-get install isc-dhcp-server
  • apt를 활용해 DHCP서버 패키지를 다운로드

5.2 DHCP 서버 구성

5.2.1sudo vi /etc/dhcp/dhcpd.conf 로 DHCP 서버 구성 파일 열기

subent 192.168.10.0 netmask 255.255.255.0 {
	range 192.168.10.1 192.168.10.250
	option routers 192.168.10.251
	option domain-name-servers 192.168.10.253
}
  • 내용설명
    • subent 192.168.10.0 netmask 255.255.255.0 : 192.168.10.0/24 대역에 ip에 대한 설정을 의미
    • range 192.168.10.1 192.168.10.250 : 192.168.10.1 ~ 250 범위에 IP를 부여
    • option routers 192.168.10.251: 해당 네트워크 대역에 디폴트 게이트웨이를 지정해 준다.
    • option domain-name-servers 192.168.10.253 : 해당 네트워크에서 DNS서버를 지정
  • 처음 conf 파일 수정 시 다양한 예제 코드가 주석 처리되어 있어서 참고하고 작성하면 좋다.
  • 처음 Default 값으로 default-lease-time 과 max-lease-time가 입력되어 있다.
    • 추가적으로 해당 IP대역에 대한 지정도 가능하다.
      • default-lease-time 600;
      • max-lease-time 7200;
  • 더 많은 옵션 정보 : ISC-DHCP-SERVER 공식 문서
  • 해당 내용을 추가해 준다.
    • 추가 방법 : i 입력 시 i INSERT모드 진입 → 내용 입력 후 esc 누르고 :wq 입력 후 엔터
    • :wq 가 안될 경우 해당 파일을 읽기 모드로 접근했을 경우가 있으니 :q! 로 나간 후 다시 sudo vi /etc/dhcp/dhcpd.conf로 접근
  • 해당 입력 내용에 대한 syntax check
dhcpd -t -cf /etc/dhcp/dhcpd.conf
  • 문법 에러를 찾아서 고친다.

5.2.2sudo vi /etc/default/isc-dhcp-server 로 DHCP interface 설정

INTERFACESv4="{인터페이스명}"
  • {인터페이스명} 확인 방법
    • ifconfig 입력시

- enp0s3 가 인터페이스 이름이다.
- 따라서, 현재 테스트 환경에서는 INTERFACESv4="enp0s3” 를 입력한다.
  • 해당 내용을 추가해 준다.
    • 입력 방법 : i 입력 시 i INSERT모드 진입 → 내용 입력 후 esc 누르고 :wq 입력 후 엔터
    • :wq 가 안될 경우 해당 파일을 읽기 모드로 접근했을 경우가 있으니 :q! 로 나간 후 다시 sudo vi /etc/default/isc-dhcp-server로 접근

5.3 DHCP 확인

DHCP Server설정이 정상적으로 되었는지 확인하는 과정입니다.

5.3.0 Virtualbox Network 변경

  • 네트워크 추가 생성
    • 호스트 전용 어댑터를 추가 설치하고 DHCP 기능을 비활성화 설정을 진행
    • Virtualbox - 도구 - 네트워크 - host-only Network 만들기 2개의 추가 네트워크 생성
      • 1번 네트워크의 경우 DHCP기능을 비활성화 해도 비활성화가 안되는 오류가 있다.
      • 2, 3번 네트워크를 만들어 본 구현에서 사용할 예정이다.

  • 해당 설정에서 DHCP서버를 꼭 비활성화 해주세요!

  • Virtualbox에서 해당하는 가상머신 설정 - 네트워크 - 어뎁터1 다음에 연결됨 - 호스트 전용 어댑터로 변경

5.3.1 IP 설정

sudo vi /etc/netplan/00-installer-config.yaml IP 설정을 위한 yaml파일 입니다

network:
	ethernets:
		enp0s3:
			dhcp4: no
			dhcp6: no
			addresses:
				- 192.168.10.253/24
			gateway4: 192.168.10.251
	version: 2
  • 다음과 같이 입력
    • enp0s3: 해당 인터페이스에 대한 설정
    • dhcp4: no 해당 인터페이스에 DHCP기능을 비활성화 (4, 6는 IPv4와 IPv6를 나타냄 )
    • addresses: - 192.168.10.253/24 해당 인터페이스의 IP를 지정 IP / {서브넷} 형식
    • gateway4: 192.168.10.251 해당 인터페이스의 기본 게이트웨이 IP 설정
  • 입력 방법
    • i 입력 시 i INSERT모드 진입 → 내용 입력 후 esc 누르고 :wq 입력 후 엔터
    • :wq 가 안될 경우 해당 파일을 읽기 모드로 접근했을 경우가 있으니 :q! 로 나간 후 다시 sudo vi /etc/netplan/00-installer-config.yaml로 접근
  • 설정 파일 적용을 위해 다음 명령어를 입력
sudo netplan apply
  • 명령어 입력 시 오류가 있을 경우
    • 오타를 확인
    • Teb 형식을 확인한다.
  • IP 적용 확인 - ifconfig

5.3.2 DHCP 상태 확인

sudo service isc-dhcp-server restart
  • 설정 파일을 수정했기에 해당 서비스를 재시작하여 설정 파일을 적용한다.
sudo service isc-dhcp-server status
  • DHCP 서비스에 대한 상태를 확인한다.

  • 다음과 같이 active 상태를 확인한다.
    • 서비스가 실행 상태라고 완벽한 상태라고 할 수는 없습니다.

5.4 GNS환경에서 확인

GNS3에 대한에 대한 설치 및 설정은 알아서 해주세요. 해당 과정에서 라우터 설정에 대한 명령어에 대한 설명은 최소한으로 진행하겠습니다.

  • 다음과 같은 구성을 구성한다.

  • R1에 다음과 같이 설정한다.

R1#configure terminal
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 192.168.10.251 255.255.255.0
R1(config-if)#no shutdown
  • 라우터에 F0/0 인터페이스에 192.168.10.251로 설정한다.
    • 라우터 설정 확인
    • 인터페이스 확인 - show ip interface brief

  • 서버와 Ping 통신 확인 - ping 192.168.10.253

PC1에서 DHCP 서비스 확인

  • PC1에서 ip dhcp 를 통해서 서버로부터 IP를 할당 받는지 확인한다.

  • DHCP서버로부터 192.168.10.1에 IP를 할당 받는 것을 확인

6. DNS

Local server에 Local DNS를 구현하는 과정입니다.

6.1 DNS 설치 전 변경 사항

DNS를 사용하기 위해서 apt를 통해서 bind9 패키지를 설치합니다.

앞 과정을 테스트하면서 외부 인터넷과 통신이 끊어진 상태입니다.

  • Ping 8.8.8.8 로 확인

  • 추가 팁
    • ping 전송을 취소는 ctrl + c
    • ping 전송을 N번 전송하는 방법 ping {ip} -c N
      • ex) ping 8.8.8.8 -c 5
        입력 시 ping을 5번 보냄

외부 인터넷 복구를 위해서 sudo vi /ete/netplan/00-installer-config.yaml 과 Virtualbox Network를 NAT으로 변경한다.


network:
	ethernets:
		enp0s3:
			dhcp4: true
			#dhcp6: no
			#addresses:
			#	- 192.168.10.253/24
			#gateway4: 192.168.10.251
	version: 2
  • dhcp4: true : 해당 인터페이스에 DHCP기능을 활성화 한다.
  • 나머지 라인에 # 을 붙여서 주석 처리한다.
  • vi 오류는 앞 과정과 동일하다.
  • 설정 파일 적용을 위해 다음 명령어를 입력
sudo netplan apply
  • ifconfig 통해서 IP를 확인한다.

  • 만약 IP가 할당이 안된 경우 Virtualbox에서 Network설정을 NAT으로 변경 안 했을 확률이 높다.
  • 변경 방법은 앞 과정을 참고 : 구성 방법 링크

6.2 DNS 설치

DNS를 위해서 apt를 활용해 bind9을 설치한다.

sudo apt-get install bind9
  • 설치 후 상태 확인을 진행
    • sudo servrice bind9 status 에서 상태가 active인 것을 확인한다.

6.3 DNS 구성

6.3.1 DNS option 구성

우선 DNS 전체에 대한 구성 옵션을 설정한다.

sudo vi /etc/bind/named.conf.options
options {
	directory "/var/cache/bind"; 
	listen-on port 53 { localhost; 192.168.10.0/24; }; 
	allow-query { any; }; 
	forwarders { 8.8.8.8; };
	recursion yes;
};
  • directory "/var/cache/bind" : 존 파일이 저장된 기본 위치
  • listen-on port 53 { localhost; 10.0.1.0/24; }; :# server가 query에 응답할 인터페이스(interface)와 포트(port)를 지정
  • allow-query { any; }; : DNS query를 할 수 있는 host를 지정
  • forwarders { 8.8.8.8; }; : 포워딩(forwarding)에 사용할 IP address를 지정
  • recursion yes; : 재귀(recursive) query를 활성화

6.3.2 DNS Local 구현

DNS가 보유한 zone 파일에 대한 내용을 명시한다.

sudo vi /etc/bind/named.conf.local
zone "cndgh.com" IN {
	type master;
	file "cndgh.com.zone";
}
  • zone "cndgh.com" IN : ‘cndgh.com’ 대한 정보를 표시한다고 명시
  • type master; :자신이 가지고 있는 파일이 master file임을 명시
  • file "cndgh.com.zone"; : 정보를 담고 있는 파일명 입력 해당 파일은 option 설정에 directory 설정에서 찾는다.

6.3.3 zone 파일 구성

옵션에서 지정한 위치에 ”cndgh.com.zone”파일을 만들고 도메인을 설정한다.

본 과정에서 처음부터 구성하는 것보다 기존에 있던 다른 zone 파일을 복사해 수정하는 것이 편하기 복사해 구성한다.

sudo cp /etc/bind/db.local /var/cache/bind/cndgh.com.zone 으로 파일을 복사한다.

sudo vi /var/cache/bind/cndgh.com.zone
$TTL 86400
@ IN SOA cndgh.com. root.cndgh.com. (
						1 ; Serial
						604800 ; Refresh
						86400 ; Retry
						2419200 ; Expire
						86400 ) ; Negative Cache TTL
;
@ IN NS cndgh.com.
@ IN A 192.168.10.253
web IN A 192.168.10.253
  • $TTL : resolver가 record를 캐시(cache) 할 시간(초, seconds)을 정의, 0이면 cache 안씀
  • SOA(start of authority)는 zone(domain)에 대한 전역(global) 매개변수(parameters)와 zone 이름을 정의
  • ‘owner-name' 'class' 'type' 'type-specific-data로 구성된 기본 형식
  • 'owner-name'
    • record가 속한 zone file에서 노드(node)의 소유자 이름 또는 레이블(label)입니다.
    • 위 예제에서는 '@'이며, '$ORIGIN'을 대체합니다.
  • 'class'
    • protocol 패밀리 또는 protocol 인스턴스(instance)를 정의합니다.
    • 16 bit 값이며, 위 예제에서는 'IN'이며, internet protocol입니다.
  • 'type'
    • 'type-specific-data'의 값을 결정하는 RR 유형이며, 위 예제에서는 'NS'입니다.
    • 'NS'는 name server를 의미합니다.
    • SOA record로 정의된 domain 또는 하위(sub) domain의 권한 있는 name server를 지정합니다.
  • 'type-specific-data'-
    • 'class'와 'type' 값에 의해 정의됩니다.
    • 위 예제에서는 'cndgh.com.'입니다.
  • cndgh.com으로 접근시 192.168.10.253을 리턴
  • web.cndgh.com으로 접근시 192.168.10.253을 리턴

6.3.4 설정 파일 syntax check

named-checkconf
  • bind9 설정의 file문법 확인
    • 틀린 경우 해당 파일과 틀린 부분 표시
    • 오류 없을 시 미 출력
named-checkzone {도메인} {해당 도메인 파일 경로}
  • 도메인 파일에 대한 syntax 확인
    • 오류 없을 시 ok출력
    • ex) named-checkzone cndgh.com /var/cache/bind/cndgh.com.zone

6.3.5 DNS 상태확인

모든 설정을 적용하고 DNS의 상태를 확인하는 과정입니다.

sudo service bind9 restart
sudo service bind9 status
  • sudo service bind9 restart : DNS 서비스를 재시작한다.
  • sudo service bind9 status : DNS의 서비스 상태를 확인한다.

→ 다음처럼 DNS 서비스가 정상적으로 active인 것을 확인할 수 있다.

7. 간단한 web서버

테스트를 위해서 간단히 apach2를 설치해서 테스트 환경을 만든다.

sudo apt-get install apache2

7.1 테스트 환경 구축

앞 과정에 진행한 테스트에서 Ubuntu PC를 추가해서 DHCP와 DNS를 테스트한다.

테스트를 위해서 Local server에 IP와 네트워크 타입을 변경 : 네트워크 및 IP변경

7.1.1 Ubuntu PC 설정

virtualbox - ubuntuPC - 설정 - 네트워크 - 호스트 전용 어뎁터 - 이름 : #3로 설정한다.

  • 우측 상단에 Settings - Network

  • 현재 IP와 DNS서버, Default Route가 맞는지 확인한다.

7.1.2 환경 테스트

  • Ubuntu 터미널을 열어 nslookup [cndgh.com](http://cndgh.com) 을 입력해서 DNS서버로부터 해당 도메인 주소를 받아오는 것을 확인한다.

  • 브라우저를 열어 cndgh.com을 입력하면 다음과 같은 사이트에 접속이 된다.

8. DNS reverse

DNS에서 IP를 도메인으로 변경하는 서비스를 제공하기 위해서 REVERSE ZONE 을 추가로 설정한다.

sudo vi /etc/bind/named.conf.local
zone "10.168.192.in-addr.arpa" IN {
  type master;
  file "cndgh.com.zone.rev";
};
  • zone "10.168.192.in-addr.arpa" IN : 192.168.10.X 대역에 대한 Reverse을 설정하기 위해서 IP를 역순으로 쓴다.
    현재 /24 서브넷임으로 3자리를 명시하지만 192.168.0.0/16 인 경우 “168.192.in-addr.arpa”로 설정하면 된다.
  • 나머지 내용은 위에 내용과 동일

존 파일을 생성한다.

sudo vi /var/cache/bind/lindarex.local.zone.rev
$TTL	86400
@	IN	SOA	cndgh.com. root.cndgh.com. (
			      2		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			  86400 )	; Negative Cache TTL
;
@	IN	NS	cndgh.
253	IN	PTR	cndgh.com.
123 IN  PTR cndgh123.com
  • PTR(PoinTeR)는 IP 주소를 호스트 이름으로 매핑하는 데 사용되는 리소스 레코드
  • 주로 IP 주소의 역방향 조회에 사용
<마지막 옥텟>.<세 번째 옥텟>.<두 번째 옥텟>.<첫 번째 옥텟>.in-addr.arpa. IN PTR <호스트 이름>.
  • 해당 파일을 수정 수 DNS서비스를 재시작 및 확인한다.
sudo service bind9 restart
sudo service bind9 status

nslookup 192.168.10.123 입력 시 cndgh123.com을 확인

nslookup 192.168.10.253 입력 시 cndgh.com을 확인

9. 추가설정

  • X

10. 참조사이트

https://lindarex.github.io/bind9/ubuntu-bind9-setting/ : DNS 설정


오타 및 수정 요청 : cndgh98@naver.com

profile
엔지니어

0개의 댓글

관련 채용 정보