25.2. NetworkManager에서 systemd-resolved를 사용하여 특정 도메인에 대한 DNS 요청을 선택한 DNS 서버로 전송
systemd-resolved 인스턴스를 시작하도록 NetworkManager를 구성할 수 있습니다. 그런 다음 이 DNS 스텁 확인기에서 IP 주소 127.0.0. 의 포트 53에서 수신 대기합니다. 결과적으로 이 스텁 확인자는 네트워크가 아닌 로컬 시스템에서만 연결할 수 있습니다.
53
이 구성을 통해 NetworkManager는 이름 서버 127.0.0.53 항목을 /etc/resolv.conf 파일에 추가하고 systemd-resolved 는 DNS 요청을 NetworkManager 연결 프로필에 지정된 해당 DNS 서버로 동적으로 라우팅합니다.
systemd-resolved 서비스는 기술 프리뷰로만 제공됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있으며 Red Hat은 해당 기능을 프로덕션에 사용하지 않는 것이 좋습니다. 이러한 프리뷰를 통해 향후 제품 기능에 조기 액세스할 수 있어 개발 프로세스 중에 기능을 테스트하고 피드백을 제공할 수 있습니다.
기술 프리뷰 기능에 대한 지원 범위에 대한 정보는 Red Hat 고객 포털에서 기술 프리뷰 기능 지원 범위를 참조하십시오.
지원되는 솔루션은 NetworkManager에서 dnsmasq를 사용하여 특정 도메인에 대한 DNS 요청을 선택한 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매개변수를 설정할 수 있습니다.
-
프로세스
systemd-resolved패키지를 설치합니다.# dnf install systemd-resolvedsystemd-resolved서비스를 활성화하고 시작합니다.# systemctl --now enable systemd-resolved/etc/NetworkManager/NetworkManager.conf파일을 편집하고[main]섹션에 다음 항목을 설정합니다.dns=systemd-resolvedNetworkManager서비스를 다시 로드합니다.# systemctl reload NetworkManager
검증
서비스에서 다른 DNS 서버를 사용하는 도메인과
systemd-resolved의 사용을 표시합니다.# resolvectl ... Link 2 (enp1s0) Current Scopes: DNS Protocols: +DefaultRoute ... Current DNS Server: 192.0.2.1 DNS Servers: 192.0.2.1 Link 3 (tun0) Current Scopes: DNS Protocols: -DefaultRoute ... Current DNS Server: 198.51.100.7 DNS Servers: 198.51.100.7 203.0.113.19 DNS Domain: example.comsystemd-resolved가example.com도메인에 다른 DNS 서버를 사용하는 것을 출력에서 확인합니다.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.53을 참조하는지 확인합니다.# cat /etc/resolv.conf nameserver 127.0.0.53항목이 없는 경우
/etc/NetworkManager/NetworkManager.conf파일에서dns매개변수를 확인합니다.systemd-resolved서비스가 로컬 IP 주소127.0.0.53의 포트 53에서 수신 대기하는지 확인합니다.# ss -tulpn | grep "127.0.0.53" udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=1050,fd=12)) tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=1050,fd=13))서비스가
127.0.0.53:53에서 수신 대기하지 않으면systemd-resolved서비스가 실행 중인지 확인합니다.