BIND9
BIND9란?
Berkeley Internet Name Domain (BIND) DNS (Domain Name System) 쿼리를 처리하는 데 사용 가장 널리 사용되는 DNS 서버 중 하나 오픈 소스, 유닉스 및 리눅스 운영 체제에서 실행
DNS 서버와 도메인 네임에 대한 이해
DNS 서버란?
도메인 네임과 IP 주소 간의 매핑 정보를 가지고 있는 서버 ⇒ 도메인 네임으로 웹 사이트에 접속 가능
도메인 네임이란?
IP 주소와 대응되는 인터넷 상의 문자주소 ex) www.google.com(도메인 네임) : 172.217.166.78(IP 주소)
DNS 서버의 동작 과정
- 사용자 ⇒ 도메인 네임 입력 ⇒ DNS 서버에 질의
- DNS 서버 : 해당 도메인 네임에 대한 IP 주소 보유 ⇒ 사용자 반환(끝)
- DNS 서버 : 해당 도메인 네임에 대한 IP 주소 미보유 ⇒ 다른 DNS 서버에 해당 질의 전달
- 반복 ⇒ 최종적으로 IP 주소를 찾아 사용자에 반환
BIND9의 주요 기능
-
DNS 쿼리 프로세싱 : DNS 쿼리를 처리하여 IP 주소를 찾아서 돌려주는 역할
호스트 이름 ⇒ IP 주소, IP 주소 ⇒ 호스트 이름 -
DNS 캐싱 : DNS 캐시 서버 DNS 응답을 캐시하여 같은 쿼리에 대한 응답을 더 빠르게 제공
-
DNS 보안 : DNSSEC (DNS Security Extensions) 지원 ⇒ DNS 쿼리 및 응답 보호
- 동적 DNS 업데이트 : DNS 클라이언트가 호스트 이름 또는 IP 주소를 변경시 DNS 레코드를 업데이트
- DNS 레코드 : A, AAAA, MX, NS, CNAME, PTR 및 SRV 등 다양한 레코드
BIND9의 구성 요소
- named : DNS 서버 데몬. DNS 쿼리 수신, 응답 제공
- rndc : named 관리 명령줄 유틸리티. named 시작, 중지, 리로드 및 재구성
- named.conf : 구성 파일. DNS 레코드, 보안 설정, 캐시 크기 및 동작에 대한 매개 변수 포함
-
DNS 서버 존 파일 : /etc/bind/db.polypoly.com 파일
도메인 네임,IP 주소 매핑
ex) “www.polypoly.com” : “192.168.19.100”
pythonCopy code $TTL 86400 @ IN SOA ns.polypoly.com. admin.polypoly.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns.polypoly.com. @ IN A 192.168.19.100 www IN A 192.168.19.100
-
첫 번째 줄 : TTL(Time to Live) 값 설정 TTL : 캐시에서 해당 DNS 레코드 유지 시간 설정(86400 = 1일)
-
두 번째 줄 : SOA(Start of Authority) 레코드 설정 해당 DNS 존 권한 있는 네임 서버 정보 설정 “ns.polypoly.com.” : 권한 있는 네임서버 “admin.polypoly.com.” : DNS 존 관리자
-
그 이후 : DNS 존에 대한 설정 값 “@” : 도메인 이름 “IN” : 인터넷 “NS” : 네임 서버 ⇒ “A” : IP 주소 “ns.polypoly.com.” : 네임서버 IP 주소 : “192.168.19.100” “www.polypoly.com” : “192.168.19.100”
-
BIND9의 장단점
장점 :
- 유연성 : 다양한 운영 체제에서 실행
- 안정성 : 오랫동안 사용되어 안정성이 검증
- 커뮤니티 지원 : 오픈 소스로 제공, 커뮤니티 지원
단점 :
- 복잡성 : 구성이 복잡
- 보안 취약성 : 보안 취약점 있음 ⇒ 이를 처리할 방법 고려
BIND9 사용해보기
DNS 서버 구축 과정
- DNS 서버(192.168.19.100)에 BIND9 설치
- DNS 서버에 도메인 네임 : IP 주소 매핑 정보 설정 ⇒ DNS 서버 존 파일
클라이언트 컴퓨터에서 DNS 서버 지정 방법
- 클라이언트 컴퓨터(192.168.19.105 외 접속하려는 가상머신)의 /etc/resolv.conf 혹은 /etc/systemd/resolved.conf 파일 수정
- nameserver 항목 ⇒ DNS 서버 IP 주소 입력
- 저장 후 종료
DNS 서버와 클라이언트 컴퓨터 간의 네트워크 구성 방법(자세히)
-
개요 DNS(Domain Name System)은 인터넷에서 사용하는 도메인 이름을 IP 주소로 변환해주는 시스템이다. 클라이언트 컴퓨터는 DNS 서버에 질의해서 도메인 이름을 IP 주소로 변환한 후 해당 서버에 접속한다. 이를 위해서는 DNS 서버와 클라이언트 컴퓨터 간의 네트워크 구성이 필요하다.
- 환경
- DNS 서버: Ubuntu 23.04, IP 주소 192.168.19.100
- 클라이언트 컴퓨터: Windows 10, IP 주소 192.168.19.105
- 클라이언트 컴퓨터: Ubuntu 23.04, IP 주소 192.168.19.110
- 클라이언트 컴퓨터: ROCKY 9, IP 주소 192.168.19.115
- 설정 방법(192.168.19.100)
- DNS 서버에서 Bind9 설치
$ sudo apt-get update $ sudo apt-get install bind9
- DNS 서버 설정 파일 수정
$ sudo vi /etc/bind/named.conf.local
-
파일 내용:
zone "polypoly.com" { type master; file "/etc/bind/db.polypoly.com"; };
-
주의사항: “example.com”을 사용하려는 도메인 이름으로 변경해야 한다.
-
- DNS 서버 존 파일 작성
$ sudo vi /etc/bind/db.polypoly.com
-
파일 내용:
pythonCopy code $TTL 604800 @ IN SOA polypoly.com. admin.polypoly.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS polypoly.com. @ IN A 192.168.19.100
-
- DNS 서버 재시작
$ sudo service bind9 restart
- DNS 서버에서 Bind9 설치
- 클라이언트 컴퓨터에서 DNS 서버 지정
- Windows에서의 DNS 서버 설정(192.168.19.105)
- 제어판(Control Panel)
- 네트워크 및 인터넷(Network and Internet)
- 네트워크 및 공유 센터(Network and Sharing Center)
- 왼쪽 메뉴 “Ethernet”, “속성(Properties)”
- “인터넷 프로토콜 버전 4(TCP/IPv4)” , “속성(Properties)”
- “다음 DNS 서버 주소 사용” “기본 DNS 서버(Default DNS Server)”, “보조 DNS 서버(Alternate DNS Server)” 필드 DNS 서버 IP 주소 입력
- “확인”
- Ubuntu에서의 DNS 서버 설정(192.168.19.110)
sudo vi /etc/resolv.conf # 혹은 sudo vi /etc/systemd/resolved.conf
dns-nameservers 192.168.19.100 dns-search polypoly.com
sudo service network-manager restart # 혹은 sudo systemctl restart systemd-resolved
- Red Hat(ROCKY)에서의 DNS 서버 설정(192.168.19.115)
# 현재 사용 중인 네트워크 연결의 이름 확인 nmcli con show # DNS 서버 주소 추가 nmcli con mod ens08 ipv4.dns 192.168.19.100 # 변경 사항 적용 nmcli con up ens08
- Windows에서의 DNS 서버 설정(192.168.19.105)
- 클라이언트 컴퓨터에서 도메인 이름을 이용해 DNS 서버에 접속
- DNS 서버에서 설정한 도메인 네임(polypoly.com)을 통해 IP 주소(192.168.0.100)로 접속이 가능해진다.