로컬 도메인 확인에 로컬 DNS 서버를 사용하고 원격 도메인에 대한 원격 DNS 서버를 사용하도록 systemd-resolved 및 systemd-networkd를 구성하는 방법은 무엇입니까?


26

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

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

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

답변:


28

로컬 네트워크 인터페이스의 구성 파일에서 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-해결 .

참조 :

참고 문헌 :


6
.local이 예에서 사용하지 않는 것을 고려 했습니까 ? 확실히 avahi와 함께, 이것은 MDNS를 위해 예약되어 있어야했고, 그것을 잘못 사용하는 것은 큰 아니오였습니다. example.com.example 을 사용하는 것이 더 명확합니다 .
sourcejedi

1
@sourcejedi 참조 .local는 RFC 6762 – 멀티 캐스트 DNS 에서 멀티 캐스트 DNS 이름 섹션의 특수 도메인으로 정의됩니다 . 고마워요
Piotr Dobrogost

관련되지 않은 참고 : 답변도 스스로 수락 할 수 있습니다.
intelfx

2
로컬 네트워크 인터페이스를위한 구성 파일 의 위치를 ​​추가하는 것이 도움이 될 것이라고 생각합니다 . 확실하지 /etc/systemd/network/*.network않습니까? superuser.com/a/1365864
Pierre Cordier

1
이 답변의 "구성 파일에서 ..."이 OP의 "구성 파일이 어디에 있는지 모른다고 가정합시다 ..."에 응답하지 않습니다. 특정 구성 파일의 위치에서이 답변은 불완전합니다.
에릭 타워

1

@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의 답변을 포함하여 여러 링크에서 이해를 종합해야했습니다. ;-)


사용하는 경우 추천 의 작동 모드 - 해결 systemd/etc/resolve.conf 에 심볼릭 링크 /run/systemd/resolve/stub-resolv.conf차례의 주소를 포함 파일 systemd-해결의 장소에 필요가 없습니다 DNS 스텁 해결 resolve의 지침 /etc/nsswitch.confDNS 요청이 (인해 표준로 이동합니다 같은 파일 nss-dns지시자)로를 스텁 리졸버는 systemd-resolved의 규칙 에 따라 작동 합니다.
Piotr Dobrogost

@PiotrDobrogost /etc/nsswitch.conf``? In the specimen config above, / etc / hosts ( " files ") 를 사용하지 않고 DNS 확인의 소스를 참조하는 순서를 제어 할 수있는 방법은 고정 IP : 이름 매핑을 확인하고, 찾지 못한 경우 다음으로 해결 된 systemd-resolved stub을 참조합니다. . 따라서을 사용하지 않고 DNS 확인 소스를 준비하는 것이 어떻게 가능한지 알 수 없습니다 /etc/nsswitch.conf. 트릭이 누락 되었습니까?
F1Linux

나는 /etc/nsswitch.conf필요 하지 않다고 말하고 있지 않다. 나는 systemd-resolved의 스텁 DNS 리졸버를 사용할 때 dns지시문을 hosts:줄에 나열 하는 것으로 충분하다고 말합니다 (아마 file지시문 뒤에 ). 필요가 없다 resolve는 스텁은 IS 해결의 거기 지시어는 진입 점을 받는 systemd-해결의 논리가 아니라 nss-resolve플러그 - 인 모듈 ...
표트르 Dobrogost

... 즉, 지시문 ➟ nss-resolve NSS 플러그인 모듈 ➟ systemd-resolved 또는 지시문 ➟ nss-dns NSS 플러그인 모듈 ➟ systemd-resolved의 스텁 DNS 해석기 ➟를 통해 systemd-resolved의 논리에 도달 할 수 있습니다. systemd-resolvedresolvedns
Piotr Dobrogost

내가 생각 @PiotrDobrogost 난에 도착 files다음 resolve에 꼬추 /etc/nsswitch.conf질문의 두 번째 부분에서. 다시 읽으면 IP : 이름 매핑을 위해 로컬 캐시를 확인한 다음 찾지 못한 경우 전달자에게 연락하는 것입니다. 나는 일반적으로 설정 files테스트를 나를 수 있도록 바이 패스 DNS에 해결의 첫 번째 DNS 소스가 아닌 생산 hosts-의 T 히트
F1Linux
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.