블로그 방문자만 3개월 추가 무료 이용권 + 3년 플랜 10% 할인 혜택을 받으세요 와이스블로그10
거래를 잡아

이용 방법 DNS 리눅스 서버에서요? 리눅스 DNS 안내서

마지막 업데이트 : 2026 년 9 월 7 일 8 분 읽음 산지트 차우한
  DNS Linux에서

DNS 리눅스 서버에서 도메인 이름을 IP 주소로 변환하고 필요에 따라 자체 호스팅을 할 수 있습니다. DNS 구역. 사용하려면 DNS시스템에 맞는 리졸버를 구성하거나(resolv.conf 또는 systemd resolved), dig와 같은 도구를 설치하거나, ​​선택적으로 캐싱 리졸버(Unbound)를 실행하거나, 레코드와 영역을 호스팅하는 권한 있는 서버(BIND9)를 배포할 수 있습니다.

사용방법이 궁금하시다면 DNS 이 가이드는 Linux 서버 환경에서 클라이언트 측 이름 확인, 이름 확인자 캐싱 및 완전한 권한 부여에 대해 설명합니다. DNS BIND9를 사용하면 필수 명령어, 안전한 구성, 실제 운영 환경에서 얻은 유용한 팁을 익혀 문제를 해결하고, 서비스를 제공하고, 트러블슈팅할 수 있습니다. DNS 자신있게.


DNS 리눅스 서버에서 이것이 중요한 이유는 무엇일까요?

DNS (도메인 이름 시스템)은 사람이 읽을 수 있는 도메인(예: example.com)을 IP 주소로 변환합니다. 리눅스에서는 일반적으로 다음과 같은 도메인을 사용하게 됩니다.

무엇인가 DNS 리눅스 서버에서 이것이 중요한 이유는 무엇일까요?
  • 해결사 (클라이언트): 서버는 상위 서버에 쿼리를 보냅니다. DNS 이름을 해결하기 위해.
  • 캐싱 리졸버검색 속도를 높이고 지연 시간을 줄이기 위해 답변을 로컬에 캐시합니다.
  • 권위 있는 서버: 주인 DNS 도메인에 대한 레코드를 확인하고 해당 영역에 대한 쿼리에 응답합니다.

일반적인 사용 사례로는 애플리케이션 조회 속도 향상, 사설 네트워크에 대한 내부 이름 확인 제공 또는 공용 네트워크 호스팅 등이 있습니다. DNS 웹사이트 및 이메일용입니다.


빠른 시작: 사용 DNS Linux 클라이언트에서 실행

대부분의 서버는 쿼리만 수행하면 됩니다. DNS다음은 리졸버를 구성하고 해결 여부를 확인하는 방법입니다.

현재 상태를 확인하세요 DNS 해결사

최신 배포판에서는 systemd를 사용하여 문제를 해결하는 경우가 많습니다. 현재 구성을 확인하세요.

resolvectl status
cat /etc/resolv.conf

/etc/resolv.conf가 systemd로 해석되는 심볼릭 링크인 경우, manage DNS resolvectl 또는 사용 중인 네트워크 스택(NetworkManager, netplan)을 사용하십시오.

세트 DNS 서버 (우분투/데비안)

Ubuntu에서 netplan을 사용하여 다음과 같이 확인합니다.

sudo nano /etc/netplan/01-netcfg.yaml
# Example snippet:
# network:
#   version: 2
#   ethernets:
#     eth0:
#       addresses: [203.0.113.10/24]
#       gateway4: 203.0.113.1
#       nameservers:
#         addresses: [1.1.1.1,8.8.8.8]

sudo netplan apply

NetworkManager가 설치된 Debian 또는 이전 버전의 Ubuntu 시스템:

nmcli con mod "System eth0" ipv4.dns "1.1.1.1 8.8.8.8"
nmcli con up "System eth0"

세트 DNS 서버 (RHEL/CentOS/AlmaLinux/Rocky)

NetworkManager 사용:

nmcli con mod eth0 ipv4.dns "9.9.9.9 1.1.1.1"
nmcli con up eth0

/etc/resolv.conf 파일을 직접 편집해야 하는 경우(systemd resolved를 사용하는 경우에는 권장하지 않음):

sudo nano /etc/resolv.conf
# Example:
# nameserver 1.1.1.1
# nameserver 8.8.8.8

Test DNS 분해능

도구를 설치하고 쿼리하세요:

# Debian/Ubuntu
sudo apt update && sudo apt install dnsutils -y

# RHEL family
sudo dnf install bind-utils -y

# Tests
dig example.com +short
dig A example.com @1.1.1.1 +short
nslookup example.com
getent hosts example.com

캐싱 설정하기 DNS 해결

로컬 캐싱 리졸버는 지연 시간을 줄이고 안정성을 향상시킵니다. 일반적인 접근 방식으로는 systemd의 resolved 캐시와 Unbound가 있습니다.

systemd 해결 캐싱을 활성화합니다.

systemd resolved는 127.0.0.53에서 로컬 스텁을 실행할 수 있습니다. 이를 확인하고 시스템에서 해당 주소를 가리키도록 설정하십시오.

sudo systemctl enable --now systemd-resolved
resolvectl status
# Ensure /etc/resolv.conf symlinks to /run/systemd/resolve/stub-resolv.conf

그런 다음 업스트림을 지정합니다. DNS 서버(예: Cloudflare위에서 설명한 것처럼 netplan 또는 nmcli를 통해 Google, ISP 등의 서비스에 접속할 수 있습니다. systemd resolved는 응답을 로컬에 캐시합니다.

Unbound는 가볍고 안전한 재귀적 해석기입니다. DNSSEC 인증.

# Debian/Ubuntu
sudo apt install unbound -y

# RHEL/CentOS/Alma/Rocky
sudo dnf install unbound -y

# Basic config
sudo nano /etc/unbound/unbound.conf.d/caching.conf
# Example:
# server:
#   interface: 0.0.0.0
#   access-control: 127.0.0.0/8 allow
#   access-control: 10.0.0.0/8 allow
#   prefetch: yes
#   cache-min-ttl: 60
#   msg-cache-size: 128m
#   rrset-cache-size: 256m
#   harden-dnssec-stripped: yes
#   do-ip4: yes
#   do-ip6: no
#   hide-identity: yes
#   hide-version: yes

sudo systemctl enable --now unbound
dig @127.0.0.1 example.com +short

서버를 가리키도록 설정하세요 DNS 빠른 로컬 해결을 위해 127.0.0.1로 설정하세요. 활성화 여부를 고려해 보세요. DNS 개인 정보 보호를 위해 필요한 경우 TLS 업스트림을 통해 전송합니다.


권한 있는 구성 DNS BIND9을 사용하는 서버

도메인을 호스팅하는 경우 BIND9(이름 지정됨)는 업계 표준 권위 있는 도구입니다. DNS 리눅스 기반 서버입니다. 아래는 공용 영역을 제공하기 위한 최소한의 보안 설정입니다.

BIND9 설치

# Debian/Ubuntu
sudo apt update && sudo apt install bind9 bind9-utils -y

# RHEL family
sudo dnf install bind bind-utils -y
sudo systemctl enable --now named

BIND9 코어 구성

named.conf.options 및 named.conf.local(Debian/Ubuntu) 또는 named.conf(RHEL) 파일을 편집하십시오. 권한 전용 서버에서는 재귀 호출을 비활성화하십시오.

# /etc/bind/named.conf.options (Debian/Ubuntu)
options {
    directory "/var/cache/bind";
    recursion no;           // Authoritative only
    allow-query { any; };
    dnssec-validation no;   // Not needed for authoritative-only
    listen-on { any; };
    listen-on-v6 { none; };
};

공격 지역을 만드세요

영역과 해당 영역 파일을 정의하십시오.

# /etc/bind/named.conf.local
zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { none; }; // Adjust if using secondary servers
};

이제 필수 기록이 포함된 영역 파일을 생성하세요.

sudo mkdir -p /etc/bind/zones
sudo nano /etc/bind/zones/db.example.com
; /etc/bind/zones/db.example.com
$TTL 3600
@   IN SOA ns1.example.com. admin.example.com. (
        2025010101 ; Serial (YYYYMMDDNN)
        3600       ; Refresh
        900        ; Retry
        1209600    ; Expire
        300 )      ; Negative Cache TTL

; NS records
@       IN NS  ns1.example.com.
@       IN NS  ns2.example.com.

; A/AAAA records
ns1     IN A   203.0.113.10
ns2     IN A   203.0.113.11
@       IN A   203.0.113.20
www     IN CNAME @

; Mail (MX) records
@       IN MX 10 mail.example.com.
mail    IN A   203.0.113.30

; TXT (SPF) example
@       IN TXT "v=spf1 a mx ~all"

역방향 영역(PTR)을 생성합니다.

IP 블록을 제어하거나 내부 서버를 운영하는 경우 PTR 레코드를 제공하십시오. DNS.

# /etc/bind/named.conf.local (add)
zone "113.0.203.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.203.0.113";
    allow-transfer { none; };
}

# /etc/bind/zones/db.203.0.113
$TTL 3600
@   IN SOA ns1.example.com. admin.example.com. (
        2025010101 3600 900 1209600 300 )
    IN NS ns1.example.com.

10  IN PTR ns1.example.com.
11  IN PTR ns2.example.com.
20  IN PTR example.com.
30  IN PTR mail.example.com.

유효성을 검사하고 시작하세요:

named-checkconf
named-checkzone example.com /etc/bind/zones/db.example.com
sudo systemctl enable --now bind9
sudo systemctl restart bind9

방화벽 및 공용 접근성

허용 DNS (TCP/UDP 53):

# ufw
sudo ufw allow 53
# firewalld
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload

도메인 등록기관의 네임서버를 ns1.example.com과 ns2.example.com으로 업데이트하고, 호스트 이름에 대한 글루 레코드가 생성되었는지 확인하십시오.


리눅스 보안 모범 사례 DNS

역할 분리: 권위적 역할 vs. 재귀적 역할

공용 권한 서버에서 개방형 재귀 호출을 실행하지 마십시오. 별도의 인스턴스 또는 뷰를 사용하십시오. 권한 있는 BIND 전용의 경우, 아래와 같이 재귀 호출을 비활성화하십시오.

접근 제어 및 속도 제한

접근 제어 목록(ACL)을 사용하여 재귀 쿼리 권한을 제한하고, 악용을 방지하기 위해 응답 속도 제한(RRL) 모듈을 고려하십시오.

보안 구역 전송

알려진 보조 서버로만 전송을 허용하고 무결성을 위해 TSIG 키를 사용하십시오.

DNSSEC

사용 DNS도메인을 직접 관리하는 경우, 리졸버(예: Unbound)에서 SEC 유효성 검사를 수행하고 권한 있는 서버에서 영역에 서명하십시오. 키를 안전하게 보관하고 재서명을 자동화하십시오.


문제해결 DNS Linux에서

땅을 파고 시추하여 진단합니다.

dig example.com +trace
dig NS example.com @a.root-servers.net
dig -x 203.0.113.20 +short
drill example.com

일반적인 오류

  • 서비스 실패: 자주 DNSSEC, 부실한 위임 또는 상위 시스템 시간 초과.
  • NX도메인레코드 또는 영역이 존재하지 않습니다.
  • 시간 초과방화벽에서 UDP/TCP 53 포트를 차단했거나, 상위 네트워크에 연결할 수 없습니다.

로그를 확인하고 캐시를 비우세요

# BIND logs (systemd)
journalctl -u bind9 -f
journalctl -u named -f

# systemd-resolved
journalctl -u systemd-resolved -f
resolvectl flush-caches

# Unbound
journalctl -u unbound -f
sudo unbound-control flush_zone example.com

성능 팁

  • 캐싱 레이어를 사용하세요바인딩되지 않거나 systemd로 해결되는 경우 쿼리 지연 시간이 줄어듭니다.
  • 튜닝 캐시: 사용량이 많은 서버의 경우 rrset 및 메시지 캐시 크기를 늘리십시오.
  • 신뢰할 수 있는 업스트림을 선택하세요애니캐스트 리졸버(1.1.1.1, 8.8.8.8, 9.9.9.9) 또는 인터넷 서비스 제공업체(ISP)의 저지연 기능을 활용하세요. DNS.
  • TTL을 현실적으로 유지하세요TTL 값을 낮게 설정하면(예: 300~900초) 마이그레이션 중에 도움이 되며, 나중에 쿼리 횟수가 줄어들면 TTL 값을 높이세요.
  • 모니터문제를 조기에 파악하기 위해 쿼리 속도, 캐시 적중률 및 NXDOMAIN 급증 그래프를 분석합니다.

관리형 앱을 언제 사용해야 할까요? DNS 또는 호스팅

BIND9를 실행하는 것은 강력한 기능이지만 운영 부담이 증가합니다. 대부분의 기업에서는 안정적인 솔루션을 사용하는 것이 더 효율적입니다. managed DNS 또는 호스팅 제공업체의 DNS 패널이 더 간단하고 안전합니다. YouStable 호스팅을 하시면 다음과 같은 혜택을 받으실 수 있습니다. DNS 영역 편집기, 빠른 글로벌 리졸버, 연중무휴 24시간 지원을 통해 앱 개발에 집중하고 네임서버 유지 관리에 신경 쓰지 않아도 됩니다.

본질적인 DNS 기록 요약표

  • 아/아아아호스트 이름을 다음으로 매핑합니다. IPv4/IPv6.
  • MX도메인용 메일 교환기입니다.
  • CNAME: 다른 호스트 이름에 대한 별칭입니다.
  • NS영역에 대한 권한 있는 네임서버입니다.
  • TXT: SPF, DKIM, 인증 토큰.
  • PTRIP 주소를 호스트 이름으로 역매핑합니다.

단계별 안내: 기초부터 실무까지 DNS

  • 시스템 리졸버를 구성합니다(resolv.conf, netplan 또는 nmcli).
  • dig, nslookup 등의 도구를 설치하고 이름 확인이 가능한지 테스트하세요.
  • 선택 사항 : 로컬 캐싱 리졸버로 Unbound를 배포하세요.
  • 도메인을 호스팅하는 경우: BIND9를 설치하고, 포워드 및 리버스 영역을 생성하고, 구성을 검증하십시오.
  • 방화벽에서 53번 포트(UDP/TCP)를 열고, 등록기관 네임서버를 설정한 후, `dig +trace` 명령어로 확인하십시오.
  • 보안 강화(재귀 접근 방지, ACL 설정), 로그 모니터링 및 구현 DNS필요한 경우 SEC에 보고하십시오.

자주 묻는 질문

차이점은 무엇입니까 DNS 리졸버와 권한 있는 서버?

리졸버가 다른 리졸버에 쿼리를 보냅니다. DNS 서버는 사용자의 조회 요청에 응답하고 종종 결과를 캐시합니다. 권한 서버는 도메인의 영역 파일을 호스팅하고 A, MX, NS 레코드와 같은 레코드에 대한 최종 공식 응답을 제공합니다.

/etc/resolv.conf 파일을 직접 수정해야 할까요?

systemd resolved 또는 NetworkManager를 사용하지 않는 경우에만 해당됩니다. 최신 Linux에서는 manage DNS 변경 사항이 덮어쓰여지는 것을 방지하려면 netplan, nmcli 또는 resolvectl을 사용하십시오.

어떻게 물을 내리나요? DNS 리눅스에서 캐시란 무엇인가요?

systemd를 사용하는 경우: resolvectl flush caches. Unbound를 사용하는 경우: unbound control flush 또는 flush_zone을 사용할 수도 있습니다. 애플리케이션은 캐시할 수도 있습니다. DNS필요한 경우 서비스를 재시작하십시오.

권위 있는 인증을 위해서는 BIND9가 유일한 선택지인가요? DNS?

아니요. 대안으로는 NSD, Power 등이 있습니다.DNS (권위 있는) 그리고 매듭 DNSBIND9는 방대한 문서와 유연성 덕분에 여전히 널리 사용되고 있습니다.

언제 선택해야 하나요? managed DNS 자체 호스팅을 넘어서는 건가요?

전 세계적인 신뢰성, 빠른 전파 속도, 그리고 최소한의 유지보수가 필요하다면, managed DNS 이상적입니다. 복잡성을 줄이고 SLA 기반 성능을 제공하며, 이는 서비스 제공업체에게 매우 유용합니다. YouStable 호스팅 및 연중무휴 24시간 지원이 포함된 패키지입니다.

코멘트 남김

이메일 주소는 공개되지 않습니다. 필수 입력 항목은 * 로 표시되어 있습니다.

위쪽으로 스크롤