Red Hat Training
A Red Hat training course is available for RHEL 8
22장. 다른 도메인에 다른 DNS 서버 사용
기본적으로 RHEL(Red Hat Enterprise Linux)은 모든 DNS 요청을 /etc/resolv.conf
파일에 지정된 첫 번째 DNS 서버로 보냅니다. 이 서버가 응답하지 않으면 RHEL은 이 파일에서 다음 서버를 사용합니다. 하나의 DNS 서버가 모든 도메인을 확인할 수 없는 환경에서 관리자는 특정 도메인의 DNS 요청을 선택한 DNS 서버로 보내도록 RHEL을 구성할 수 있습니다.
예를 들어 서버를 VPN(Virtual Private Network)에 연결하고 VPN의 호스트는 example.com
도메인을 사용합니다. 이 경우 다음과 같은 방식으로 DNS 쿼리를 처리하도록 RHEL을 구성할 수 있습니다.
-
example.com
에 대한 DNS 요청만 VPN 네트워크의 DNS 서버로 보냅니다. - 다른 모든 요청을 기본 게이트웨이를 사용하여 연결 프로필에 구성된 DNS 서버로 보냅니다.
22.1. NetworkManager에서 dnsmasq를 사용하여 특정 도메인에 대한 DNS 요청을 선택한 DNS 서버로 전송
dnsmasq
인스턴스를 시작하도록 NetworkManager를 구성할 수 있습니다. 그런 다음 이 DNS 캐싱 서버는 루프백
장치의 포트 53
에서 수신 대기합니다. 결과적으로 이 서비스는 네트워크가 아닌 로컬 시스템에서만 연결할 수 있습니다.
이 구성을 통해 NetworkManager는 nameserver 127.0.0.1
항목을 /etc/resolv.conf
파일에 추가하고 dnsmasq
는 DNS 요청을 NetworkManager 연결 프로필에 지정된 해당 DNS 서버로 동적으로 라우팅합니다.
사전 요구 사항
- 시스템에는 여러 개의 NetworkManager 연결이 구성되어 있습니다.
DNS 서버 및 검색 도메인은 특정 도메인을 확인하는 NetworkManager 연결 프로필에 구성됩니다.
예를 들어 VPN 연결에 지정된 DNS 서버가
example.com
도메인에 대한 쿼리를 확인하도록 하려면 VPN 연결 프로필에 다음 설정이 포함되어야 합니다.-
example.com
을 확인할 수 있는 DNS 서버 -
ipv4.dns-search
및ipv6.dns-search
매개변수에서example.com
으로 설정된 검색 도메인
-
-
dnsmasq
서비스는 다른 인터페이스에서 수신 대기하도록 구성되지 않은 다음localhost
에서 수신 대기하도록 구성되어 있지 않습니다.
절차
dnsmasq
패키지를 설치합니다.# yum install dnsmasq
/etc/NetworkManager/NetworkManager.conf
파일을 편집하고[main]
섹션에 다음 항목을 설정합니다.dns=dnsmasq
NetworkManager
서비스를 다시 로드합니다.# systemctl reload NetworkManager
검증
서비스에서 다른 DNS 서버를 사용하는 도메인의
NetworkManager
장치의systemd
저널을 검색합니다.# journalctl -xeu NetworkManager ... Jun 02 13:30:17 client_hostname dnsmasq[5298]: using nameserver 198.51.100.7#53 for domain example.com ...
tcpdump
패킷 스니퍼를 사용하여 DNS 요청의 올바른 경로를 확인합니다.tcpdump
패키지를 설치합니다.# yum install tcpdump
한 터미널에서
tcpdump
를 시작하여 모든 인터페이스에서 DNS 트래픽을 캡처합니다.# tcpdump -i any port 53
다른 터미널에서 예외와 다른 도메인이 존재하는 도메인의 호스트 이름을 확인합니다. 예를 들면 다음과 같습니다.
# host -t A www.example.com # host -t A www.redhat.com
tcpdump
출력에서 Red Hat Enterprise Linux가example.com
도메인에 대한 DNS 쿼리만 지정된 DNS 서버와 해당 인터페이스를 통해 전송하는지 확인합니다.... 13:52:42.234533 IP server.43534 > 198.51.100.7.domain: 50121+ [1au] A? www.example.com. (33) ... 13:52:57.753235 IP server.40864 > 192.0.2.1.domain: 6906+ A? www.redhat.com. (33) ...
Red Hat Enterprise Linux는
www.example.com
의 DNS 쿼리를198.51.100.7
의 DNS 서버에 전송하고www.redhat.com
에 대한 쿼리를192.0.2.1
로 보냅니다.
문제 해결
/etc/resolv.conf
파일의nameserver
항목이127.0.0.1
:을 참조하는지 확인합니다.# cat /etc/resolv.conf nameserver 127.0.0.1
항목이 없는 경우
/etc/NetworkManager/NetworkManager.conf
파일에서dns
매개변수를 확인합니다.dnsmasq
서비스가루프백
장치의 포트53
에서 수신 대기하는지 확인합니다.# ss -tulpn | grep "127.0.0.1:53" udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("dnsmasq",pid=7340,fd=18)) tcp LISTEN 0 32 127.0.0.1:53 0.0.0.0:* users:(("dnsmasq",pid=7340,fd=19))
서비스가
127.0.0.1:53
에서 수신 대기하지 않으면NetworkManager
장치의 저널 항목을 확인합니다.# journalctl -u NetworkManager