Jump to content

BIND

From DawoumWiki, the free Mathematics self-learning
BIND
Original author(s)Douglas Terry,
Mark Painter,
David Riggle,
Songnian Zhou
Developer(s)Internet Systems Consortium
Initial releaseJune 1986; 38 years ago (1986-06)
Stable release
9.16.22 - 9.11.35(ESV) / 27 October 2021 (2021-10-27)
Preview release
9.17.19 / 27 October 2021 (2021-10-27)
Operating systemLinux, NetBSD, FreeBSD, OpenBSD, macOS, Windows, Solaris, illumos, OpenVMS
TypeDNS server
LicenseMozilla Public License (ISC license before 9.11[1])

BIND (/ˈbnd/)는 도메인 이름 시스템 (DNS)과 상호 작용하기 위한 소프트웨어 모음입니다. 그것의 가장 눈에 띄는 구성 요소, named (name-dee: /ˈnmd/로 발음, name daemon의 약자)는 DNS 존에 대한 권한 있는 이름 서버와 네트워크에서 재귀 리졸버 역할을 하는 주요 DNS 서버 역할의 둘 다를 수행합니다. 2015년 당시, 가장 널리 사용되는 도메인 이름 서버 소프트웨어이고,[2][3][4] 유닉스-계열 운영 시스템의 사실상 표준입니다.[5][6] 또한 도구-모음에서 nsupdatedig와 같은 다양한 관리 도구와 DNS 리졸버 인터페이스 라이브러리가 포함되어 있습니다.

이 소프트웨어는 원래 1980년대 초 버클리 캘리포니아 대학교 (UCB)에서 설계되었습니다. 그 이름은 원래 Berkeley Internet Name Domain의 약어로 유래했으며,[7] UCB 내에서 응용 프로그램의 사용을 반영합니다. 최신 버전은 2000년에 처음 출시된 BIND 9으로 1년에 여러 번 새로운 릴리스를 발표와 함께 Internet Systems Consortium (ISC)에 의해 여전히 활발하게 유지 관리되고 있습니다.

이 작업은 가상 기계에서 NAT를 이용해서 외부로 접속하면, 호스트에서 제공되는 서비스로 접근을 하지 못해서 시작된 일입니다. 물론, 가상 기계에서 외부 공용 DNS로 바꾸어도 작동을 하긴 하지만, 사용하는 데스크탑 환경에 따라 DNS 서버를 설정하는 방법을 별도로 알고 있어야 하는 부담이 있었습니다. 어쨌든, 외부에서 로컬 dns로 접속을 허용하지 않기 때문에, 시스템 자원은 크게 점유하지 않는 것으로 보입니다.

Installation

데비안 저장소로에서 설치할 수 있습니다:

  • sudo apt install bind9

설치 버전 확인

  • named -v
  • named -V

서비스 확인과 시작, 및 부팅시 시작하기

  • sudo systemctl status named
  • sudo systemctl start named
  • sudo systemctl enable named

Configurations

다른 것들은 수정하지 않았고, 몇 가지 사항을 /etc/bind/named.conf.options 파일에 수정했습니다:

// hide version number from clients for security reasons.
    version "not currently available";

// optional - BIND default behavior is recursion
    recursion yes;

// provide recursion service to trusted clients only
    allow-recursion { 127.0.0.1; };

// enable the query log
    querylog yes;

설정에 문제가 없는지 확인하는데, 문제가 없으면, 어떤 것도 출력하지 않습니다:

  • sudo named-checkconf

그런-다음 서비스를 재시작합니다:

  • sudo systemctl restart named

내부 로컬 네트워크을 운영하고 있다면, 위에서 allow-recursion에 ip 대역, 예를 들어, 192.168.0.0/24를 추가하고, 방화벽을 열어 주어야 합니다:

  • sudo ufw allow from 192.168.0.0/24 to any port 53

Setting the Default DNS Resolver

현재 DNS Server 정보를 확인하기 위해,

  • systemd-resolve --status

아마도, DNS Server는 계약된 isp의 dns ip를 출력하거나, 그놈 설정에서 외부 공용 DNS로 수정했다면, 그 내용이 출력될 것입니다.

다음으로, 이 값을 로컬 주소로 바꿀 수 있는데, [Resolve] 섹션에서 바꿉니다:

  • /etc/systemd/resolved.conf
DNS=127.0.0.1

그런-다음 서비스를 재시작합니다:

  • sudo systemctl restart systemd-resolved

이제 다시 기본 DNS resolve를 확인합니다:

  • systemd-resolve --status

이때, DNS Server: 127.0.0.1이 출력되어야 합니다.

호스트 이름 등록

호스트 이름을 ip로 변경하기 위해, /etc/hosts 파일에 내용을 적을 수 있습니다. 그러나, ip 주소는 시스템 부팅 중에 새롭게 얻어올 수 있기 때문에, 네트워크이 동작하면, 부팅의 끝에 새로운 ip를 읽어서 /etc/hosts 파일에 적어주어야 합니다.

이 작업을 위해, 미리 /etc/hosts 파일의 마지막 줄에 ip와 호스트 이름을 적어둡니다. 그런-다음 부팅 중에 그 줄을 지우고, 그 자리에 새로운 ip와 호스트 이름을 적어줍니다.

이 작업은 rc-local.service에서 담당할 것이므로, /etc/rc.local에 다음 내용을 적어줍니다.

myHostName="여기에 호스트 이름을 적어주세요" 
sed -i '$ d' /etc/hosts 
ipaddr=$(hostname -I | awk '{ print $1 }') 
echo "$ipaddr $myHostName" >>/etc/hosts

이때, 호스트 이름은 FQDN으로 적으셔야 합니다.

가상 기계 설정

이제 가상 기계에서 호스트 DNS 리졸버를 사용하도록 수정해야 하는데, VMware는 별다른 설정없이 호스트 컴퓨터로 접근이 가능합니다.

VirtualBoxVirtualBox#Using_host_dns_resolver을 참조하십시오.

Disable IPv6

만약 네트워크에서 IPv6를 사용하지 않으면, BIND에서 IPv6를 끄는 것이 좋고, 그렇지 않으면 BIND 로그에 관련 오류가 남기 때문입니다.

  • sudo nano /etc/default/named
OPTIONS="-u bind -4"
  • sudo systemctl restart named

자동 재시작

Named 서비스가 어떤 이유에서든지 죽으면, 해당 서비스를 사용하는 다른 시스템에서 인터넷 접근이 되지 않습니다. 이것을 방지하기 위해, 서비스가 죽으면, 자동으로 재시작되도록 설정할 필요가 있습니다.

먼저, 같은 시스템에 Monit이 설치되어 있으면, Monit에서 서비스를 재시작하도록 설정할 수 있습니다.

다른 방법은 Systemd 자체에서 자동으로 재시작하도록 설정할 수 있습니다:

  • sudo mkdir -p /etc/systemd/system/named.service.d/
  • sudo nano /etc/systemd/system/named.service.d/restart.conf
[Service]
Restart=always
RestartSec=5s
  • sudo systemctl daemon-reload

설정이 끝났으면, 서비스를 강제로 죽여서 재시작되는지 확인할 필요가 있습니다:

  • sudo pkill named
  • systemctl status named

BIND max-cache-size

기본적으로, 전체 RMA의 90%를 사용할 수 있도록 설정되어 있지만, 다른 서비스에 영향을 미칠 수 있어서, 조절할 필요가 있습니다.

  • sudo nano /etc/bind/named.conf.options
max-cache-size 50%;
  • sudo systemctl restart named

Secure DNS query

systemd-resolved는 DNSSEC와 DNSoverTLS를 모두 지원하는 현재 사용 가능한 몇 안 되는 DNS 서버 중 하나입니다. 이들 두 가지 모두는 진정 DNS 정보 (DNSSEC)를 수신하고 DNS 트래픽이 인터넷을 통과할 때 아무도 이를 스누핑할 수 없도록 하는 데 도움이 됩니다.

  • sudo nano /etc/systemd/resolved.conf
DNSSEC=allow-downgrade
DNSOverTLS=opportunistic
  • sudo systemctl restart systemd-resolved.service

Troubleshootings

slow response
로컬 네임서버를 이용하고, 특정 시간 후에 응답 속도가 느리면 다음과 같이 처리해 볼 수 있습니다:
qemu network
네트워크가 설치 중에 동작했는데, 시스템을 다시 시작하면 동작하지 않을 수 있습니다. 이때에는 /etc/bind/named.conf.options 파일에서 allow-recursion에 사용하는 네트워크를 추가하고, bind를 재시작하시기 바랍니다.
creating TCP socket: address not available
부팅 중에 메시지 출력합니다. 시작 스크립트에서 다음을 추가합니다:
ExecStartPre=-/bin/sleep 10

See also

References

  1. ^ "LICENSE in Bind 9.11 branch".
  2. ^ "BIND – The most widely used Name Server Software". Internet Systems Consortium. 2015-09-08. Retrieved 2015-09-17.
  3. ^ Don Moore (2004-05-23). "DNS server survey". Retrieved 2015-09-17.
  4. ^ Geoff Huston (October 2015). "Happy Eyeballs for the DNS, (see slide 37)" (PDF). APNIC. Retrieved 2018-07-10.
  5. ^ Paul E. Huck Jr. (June 2001). "Zero Configuration Name Services for IP Networks". Massachusetts Institute of Technology. CiteSeerX 10.1.1.25.5684. {{cite journal}}: Cite journal requires |journal= (help)
  6. ^ Rohit G. Bal (Jan 2017). "Local Area Network automatic Domain name System (LANDS)". Nepal Engineering College. Retrieved 2018-06-28.
  7. ^ Douglas B. Terry; Mark Painter; David W. Riggle & Songnian Zhou (May 1984). "The Berkeley Internet Name Domain Server". EECS Department, University of California, Berkeley, Technical Report No. UCB/CSD-84-182. Retrieved 2015-09-17.

Further reading

External links