25장. 다른 도메인에 다른 DNS 서버 사용
기본적으로 RHEL(Red Hat Enterprise Linux)은 모든 DNS 요청을 /etc/resolv.conf 파일에 지정된 첫 번째 DNS 서버로 보냅니다. 이 서버에 응답하지 않는 경우 RHEL은 작동 중인 서버를 찾을 때까지 이 파일의 다음 서버를 시도합니다. 하나의 DNS 서버가 모든 도메인을 확인할 수 없는 환경에서 관리자는 RHEL을 구성하여 특정 도메인에 대한 DNS 요청을 선택한 DNS 서버로 보낼 수 있습니다.
예를 들어 서버를 VPN(Virtual Private Network)에 연결하고 VPN의 호스트는 example.com 도메인을 사용합니다. 이 경우 다음과 같은 방식으로 DNS 쿼리를 처리하도록 RHEL을 구성할 수 있습니다.
-
example.com에 대한 DNS 요청만 VPN 네트워크의 DNS 서버로 보냅니다. - 다른 모든 요청을 기본 게이트웨이를 사용하여 연결 프로필에 구성된 DNS 서버로 보냅니다.
25.1. NetworkManager에서 dnsmasq를 사용하여 특정 도메인에 대한 DNS 요청을 선택한 DNS 서버로 전송 링크 복사링크가 클립보드에 복사되었습니다!
dnsmasq 인스턴스를 시작하도록 NetworkManager를 구성할 수 있습니다. 그런 다음 이 DNS 캐싱 서버는 루프백 장치의 포트 53 에서 수신 대기합니다. 결과적으로 이 서비스는 네트워크가 아닌 로컬 시스템에서만 연결할 수 있습니다.
이 구성을 통해 NetworkManager는 nameserver 127.0.0.1 항목을 /etc/resolv.conf 파일에 추가하고 dnsmasq 는 DNS 요청을 NetworkManager 연결 프로필에 지정된 해당 DNS 서버로 동적으로 라우팅합니다.
사전 요구 사항
- 시스템에 여러 NetworkManager 연결이 구성되어 있습니다.
DNS 서버 및 검색 도메인은 특정 도메인을 확인하는 연결을 위해 구성됩니다.
예를 들어 VPN 연결에 지정된 DNS 서버가
example.com도메인에 대한 쿼리를 확인하려면 다음 설정을 사용할 수 있어야 합니다.-
example.com을 확인할 수 있는 DNS 서버 . DHCP 서버는 이 정보를 동적으로 제공하거나 VPN 연결 프로필에서ipv4.dns및ipv6.dns매개변수를 설정할 수 있습니다. -
example.com으로 설정된 검색 도메인 . DHCP 서버는 이 정보를 동적으로 제공하거나 VPN 연결 프로필에ipv4.dns-search및ipv6.dns-search매개변수를 설정할 수 있습니다.
-
-
dnsmasq서비스는localhost와 다른 인터페이스에서 수신 대기하도록 구성되지 않았거나 실행되고 있지 않습니다.
프로세스
dnsmasq패키지를 설치합니다.# dnf install dnsmasq/etc/NetworkManager/NetworkManager.conf파일을 편집하고[main]섹션에 다음 항목을 설정합니다.dns=dnsmasqNetworkManager서비스를 다시 로드합니다.# 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패키지를 설치합니다.# dnf install tcpdump한 터미널에서
tcpdump를 시작하여 모든 인터페이스에서 DNS 트래픽을 캡처합니다.# tcpdump -i any port 53다른 터미널에서 예외와 다른 도메인이 존재하는 도메인의 호스트 이름을 확인합니다. 예를 들면 다음과 같습니다.
# host -t A www.example.com # host -t A www.redhat.comtcpdump출력에서 Red Hat Enterprise Linux가example.com도메인에 대한 DNS 쿼리만 지정된 DNS 서버와 해당 인터페이스를 통해 전송하는지 확인합니다.... 13:52:42.234533 tun0 Out IP server.43534 > 198.51.100.7.domain: 50121+ A? www.example.com. (33) ... 13:52:57.753235 enp1s0 Out 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