모든 분할 DNS 요청은 같은 문장으로 시작합니다: 회사 이름은 회사 DNS로 가고 나머지는 그대로 작동합니다. 그 문장을 구성으로 바꾸는 일은 운영 체제마다 세 가지 질문에 답하는 것을 뜻하며, 답은 각기 다른 메커니즘을 씁니다. Linux 노트북에서 작동하는 프로필이 Windows에서 실패하는 경우는 터널과 아무 상관 없는 이유 때문입니다. 그 차이는 대개 경로로 오해된 리졸버 설정입니다.

먼저 정책의 이름을 정하고, 그다음 그것을 표현하는 플랫폼 원시 요소를 고르십시오.

혼동하기 쉬운 세 가지 설정

검색 접미사는 짧은 이름을 확장합니다: files를 입력하면 리졸버가 접미사를 순서대로 시도하면서 files.corp.example이 됩니다. 라우팅 도메인은 이름 공간 내부의 질의에 어떤 리졸버가 응답할지 고릅니다. IP 경로는 선택된 리졸버에 도달할 수 있게 할 뿐입니다. 이 셋은 서로 다른 계층에 살고, 하나를 다른 것으로 바꾸면 맞아 보이지만 아무것도 해결하지 못하는 구성이 됩니다.

혼동에는 대가가 따릅니다: 검색 접미사를 추가하면 다른 곳에 속한 이름까지 모든 짧은 이름이 업무 리졸버로 갑니다. 라우팅 도메인을 선택하면 무관한 질의는 로컬 리졸버에 두면서 *.corp.example는 터널로 보냅니다.

Linux: 검색 접미사가 아닌 경로 전용 도메인

systemd-resolved에서 물결표로 시작하는 도메인은 경로 전용 도메인이며, 그 이름 공간의 질의는 검색 접미사가 되지도 않은 채 연결된 리졸버로 갑니다. resolvectl domain tun0 '~corp.example'가 그것을 설정하고, resolvectl dns tun0 10.8.0.1가 서버를 지정합니다. 두 설정 모두 인터페이스에 속하므로 인터페이스와 함께 사라집니다. 물결표가 사람들이 빠뜨리는 부분이며, 그것이 없으면 짧은 이름이 업무 리졸버를 통해 해석되기 시작합니다.

같은 도메인을 전역 검색 접미사로도 설치하지 마십시오. 두 설정은 중복이 아니며, 하나는 경로를 정하고 다른 하나는 입력한 것을 다시 씁니다.

Windows에는 접미사가 아니라 이름 공간 정책이 필요합니다

Windows는 분할 DNS 정책을 어댑터의 DNS 접미사가 아니라 Name Resolution Policy Table에 보관합니다. 규칙은 이름 공간을 특정 서버에 매핑합니다: Add-DnsClientNrptRule -Namespace .corp.example -NameServers 10.8.0.1. 접미사만 설정하면 짧은 이름의 모양이 바뀔 뿐, 질의를 다른 서버로 보내지는 않습니다.

연결한 뒤 Get-DnsClientNrptPolicy로 유효 정책을 확인하십시오. 이전 연결의 규칙이 터널보다 오래 살 수 있기 때문입니다. 터널이 끊기면 규칙을 이름으로 제거하고, 정리가 올바른 항목을 겨냥하도록 표시 이름을 안정적으로 유지하십시오.

플랫폼마다 리졸버 소유자는 하나

데스크톱 관리자, OpenVPN up 스크립트, 로컬 리졸버 데몬이 모두 같은 구성을 쓰려 할 수 있습니다. 서로 의견이 다르면 마지막에 쓴 쪽이 이기고 결과는 해체 순서에 달려 있습니다. 리졸버 상태를 소유할 구성 요소 하나를 고르십시오, 나머지는 쓰지 말고 보고하게 하고, 재연결을 시험하십시오: 정책은 규칙을 중복시키지 않고 그것을 견뎌야 합니다. 연결 끊기도 시험하십시오. 남은 상태가 다음 연결을 다르게 행동하게 만들기 때문입니다.

자체 암호화 리졸버를 함께 제공하는 애플리케이션은 운영 체제의 정책을 완전히 무시합니다. 그것은 애플리케이션의 속성이지 터널의 결함이 아닙니다.

프로필 텍스트가 아니라 결과를 확인하십시오

터널을 통과해야 하는 이름 하나와 통과하면 안 되는 이름 하나를 플랫폼마다 해석하고, 어느 서버가 응답했는지 확인하십시오. resolvectl query host.corp.example와 Resolve-DnsName host.corp.example 모두 응답한 서버를 보고합니다. 재연결 후에 반복하십시오. 그다음 프로필이 밀어 넣는 주소에서 터널의 리졸버에 도달할 수 있는지 확인하십시오. 도달할 수 없는 서버를 가리키는 올바른 정책도 정책이 없는 것과 똑같이 실패하기 때문입니다.

의도한 동작을 프로필 메모에 기록하십시오: 어느 접미사가 경로를 정하고, 어느 서버가 그것에 응답하며, 나머지 모두에게 무슨 일이 일어나는지입니다. 다음에 지원할 플랫폼은 구성 파일보다 그 문장을 더 필요로 할 것입니다.

관련 글