내부 이름은 확인되고, 같은 서버가 외부 이름에는 재귀에 관한 거부로 응답한다. 이 조합은 모순이 아니다. 자기 영역을 게시하는 것과 인터넷 전체를 확인하는 것은 서버가 제공할 수 있는 별개의 서비스이며, 후자 없이 전자를 할 수 있다. 거부를 정책 선언으로 다루고, 그 정책이 설계와 맞는지 확인하라.

거부와 시간 초과는 서로 다른 응답이다

이름, 질의 유형, 응답한 서버, 상태, 반환된 레코드를 기록하라. 재귀 경고가 함께 도착한 권한 있는 응답을 자동으로 무효화하지는 않는다. 해석하기 전에 상태를 적어 두라. 한 시간 뒤 기억으로 재구성한 상태는 다른 사실이다.

DNS 헤더는 재귀 요청과 서버가 그것을 제공하는지에 대한 표시를 담고, 프로토콜 명세는 그 플래그를 응답 데이터와 분리해 둔다. 그래서 응답이 유용하면서도 불만을 담을 수 있다. 시간 초과, 부정 응답, 거부는 서로 다른 세 가지 결과다. 각각 다른 계층을 가리키며, 서버가 정책을 알려 주는 것은 거부뿐이다.

먼저 상태 코드를 읽고, 그 경고가 이 질의에 중요한지 판단하라. 영역을 지목하는 권한 있는 응답은 재귀 비트가 거부되어도 쓸 수 있다. 응답 없는 거부는 정책 결과이지 끊긴 패킷 경로가 아니다.

리졸버가 너의 출발지로 기록한 것

클라이언트는 서버의 허용된 재귀 범위 밖 주소 풀에서 올 수 있고, 변환 때문에 게이트웨이처럼 보일 수도 있다. 클라이언트 자신의 어댑터 주소는 리졸버가 무엇을 받았는지에 대한 증거가 아니다. 경로의 자기 쪽에서 추론하는 대신 서버 관리자에게 관측된 출발지를 물어라. 두 주소는 변환하는 모든 홉에서 다를 수 있다.

같은 이름을 클라이언트에서, 그리고 서버가 이미 신뢰하는 호스트에서 질의하라. 두 응답의 차이가 출발지 조건이며, 어느 한 응답보다 유용하다.

dig +short host.corp.example
dig +short example.com

배포가 VPN 클라이언트에 재귀를 원한다면, 관리자는 서버 자체의 제어를 통해 적절한 출발지 범위를 승인한다. 한 테스트를 통과시키려고 모든 네트워크에 재귀를 여는 것은 시험 중인 변경보다 훨씬 큰 변경이다. 승인된 범위를 규칙 옆에 적어 두라, 다음 검토자가 정책이 어느 출발지에 봉사해야 했는지 물을 것이기 때문이다. 소유자 없는 출발지 범위가 임시 테스트를 영구적으로 만드는 길이다.

분할 DNS는 설계이지 결함이 아니다

일부 배포는 업무 도메인만 사설 리졸버로 보내고 나머지는 다른 승인된 리졸버로 보낸다. 그것은 질의 라우팅 설계이며, 사설 서버에 더 느슨한 정책이 필요하다는 증거가 아니다. 그 설계에서 사설 리졸버를 거친 외부 이름의 실패는 의도된 결과이지 결함이 아니다. 거부는 설계가 작동하는 모습이지 억눌러야 할 증상이 아니다.

공용 리졸버는 브라우징을 되살리면서 내부 이름을 깨뜨리거나 사설 질의를 가면 안 되는 곳으로 보낼 수 있다. 어떤 리졸버 주소를 바꾸기 전에 의도한 동작을 적어 두라.

두 질의로 정책을 검증하라

의도한 수정 뒤에 실제 클라이언트에서 허용된 사설 이름과 외부 이름을 질의하라. 돌아오는 것은 정책이 약속한 것이어야 하며, 단지 조용해진 진단이 아니어야 한다. 각 응답에서 응답한 서버를 기록하고, 그 쌍을 정책과 비교하라. 비교가 시험이며, 한 번의 성공한 조회는 아니다.

resolvectl query host.corp.example
resolvectl query example.com

사설 이름이 작동하고 공용 이름이 거부되면, 정책은 말한 대로 하고 있다. 사설 이름도 실패하면 문제는 영역, 경로 또는 출발지 승인에 있고, 재귀는 주의를 돌리는 것이다. 두 결과 모두 유용하며, 각각 남은 가설의 절반을 배제한다.

거부를 증거로 읽어라

거부는 응답이다. 서버가 질의를 받고 요청된 작업을 하지 않았다는 뜻이며, 결코 도착하지 않은 패킷과 다르다. 그 구분이 진단의 전부다. 연결 실패가 아니라 응답으로 기록하라.

그 구분은 어디를 봐야 하는지 알려 준다: 서버 로그, 접근 정책, 그리고 서버가 기록한 출발지다. 방화벽 변경은 정책 거부를 고칠 수 없고, 정책 변경은 빠진 경로를 고칠 수 없다. 둘 중 하나에 증거가 나올 때까지 두 가설을 분리해 두라.

결과와 정책 소유자를 티켓에 적어, 다음 사람이 경고가 아니라 결정에서 시작하게 하라. 승인된 출발지 범위와 시험한 두 이름을 명시하라. 그 세 가지 사실이 있는 티켓은 다시 실행할 수 있지만, "재귀가 고장 났다"고 말하는 티켓은 그럴 수 없다.

관련 글