로컬 도메인 확인에 로컬 DNS 서버를 사용하고 원격 도메인에 대한 원격 DNS 서버를 사용하도록 systemd-resolved 및 systemd-networkd를 구성하는 방법은 무엇입니까? 로컬 네트워크에서 컴퓨터의 호스트

게이트웨이를 통해 인터넷에 액세스 할 수있는 근거리 통신망에 연결되어 있습니다. 로컬 네트워크에는 로컬 네트워크에서 컴퓨터의 호스트 이름을 확인할 수있는 DNS 서버가 있습니다.

로컬 호스트 이름에 대한 조회 요청이 로컬 DNS 서버로만 전달되고 (라우팅) 다른 모든 호스트 이름에 대한 조회 요청이 다른 원격 DNS 서버로만 전달되도록 systemd-resolvedsystemd-networkd 를 구성하고 싶습니다 .

구성 파일이 어디에 있는지 또는 더 많은 파일을 추가해야하며 응답에 해당 경로를 지정해야하는지 여부를 모른다고 가정 해 봅시다.



답변

로컬 네트워크 인터페이스의 구성 파일에서 DHCP=옵션을 사용하여 DHCP 서버에서 로컬 DNS 서버 주소를 얻도록 지정해야합니다 .

[Network]
DHCP=yes

또는 DNS=옵션을 사용하여 주소를 명시 적으로 지정하십시오 .

[Network]
DNS=10.0.0.1

또한 동일한 섹션에서 옵션을 사용하여 로컬 도메인을 지정해야합니다Domains=

Domains=domainA.example domainB.example ~example

systemd-resolved.service, systemd-resolved 매뉴얼 페이지 domainA.example domainB.example에서 다음 동작을 얻기 위해 로컬 도메인 을 지정합니다 .

인터페이스 별 도메인 중 하나로 끝나는 호스트 이름 조회는 일치하는 인터페이스로만 라우팅됩니다.

이 방법으로 hostX.domainA.example해결 될 것입니다 독점적으로 우리 지역의 DNS 서버에 의해.

우리는 ~example끝나는 모든 도메인 example이 라우트 전용 도메인으로 처리되어 ( 커밋에 대한 설명에서) 다음 동작을 얻도록 지정합니다 .

경로 전용 도메인이있는 DNS 서버는 지정된 도메인에만 사용해야합니다.

이 방식 hostY.on.the.internet은 글로벌 원격 DNS 서버에 의해 독점적 으로 해결 될 것 입니다.

노트

이상적으로 DHCP 프로토콜을 사용할 때는 위의 네트워크 인터페이스 구성 파일에 명시 적으로 지정되지 않고 DHCP 서버에서 로컬 도메인 이름을 가져와야합니다. UseDomains=옵션을 참조하십시오 . 그러나이 기능에는 여전히 미해결 문제가 있습니다 . 시스템 네트워크 DHCP 검색 도메인 옵션 문제를 참조하십시오 .

원격 DNS 서버를 시스템 전체의 글로벌 DNS 서버로 지정해야합니다. 우리는 /etc/systemd/resolved.conf파일로 이것을 할 수 있습니다 :

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

구성을 다시로드하고 서비스를 다시 시작하는 것을 잊지 마십시오.

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved

주의!

보장 이름이 해결되는 경우에만 적용보다도 systemd-해결 – 참조 에 대한 man 페이지 NSS-해결, libnss_resolve.so.2systemd-resolved.service에 대한 man 페이지를 systemd-해결 .

참조 :

참고 문헌 :


답변

@piotrDobrogost의 탁월한 답변을 확장 /etc/nsswitch.conf하려면 systemd-resolvedDNS 확인 소스 로 사용 하도록 구성 하는 것을 잊지 마십시오 . 귀하의 hosts특정 사용 사례에 대한 다음과 같은 지시문을 보일 것입니다 :

/etc/nsswitch.conf

hosts:  files resolve dns

당신이에 지정된 도메인 만에 해상도를 제한한다면 Domains에서 지시 /etc/systemd/resolved.conf표트르 위의 사항으로, DNS는 다음 지정된 이름 확인 소스의 순서로 참조해야한다 /etc/nsswitch.conf도메인이 때 NOT 에서 발견 Domains지침 :

다음 링크를 참조 지정하기위한 요구 사항 해결을 에서 /etc/nsswitch.conf그렇게 systemd-resolved이름 확인 중에 상담을 :

https://github.com/systemd/systemd/issues/940

내가 발견 한 SystemD 설명서 위의 Piotr의 답변을 포함하여 여러 링크에서 이해를 종합해야했습니다. 😉


답변