Squid Split DNS: 사설 도메인을 올바른 리졸버로 라우팅하기
Squid에 모호한 리졸버 목록을 주는 대신 사설·공용 DNS 이름 공간을 의도적으로 라우팅하세요.
내부 리졸버를 먼저, 공용 리졸버를 다음에 두는 것만으로는 어떤 이름이 어느 이름 공간에 속하는지 Squid에 알려 주지 않습니다.
Squid 6과 7에서 dns_nameservers는 일반적인 리졸버 목록을 서버 주소로 대체합니다. 이 구문에는 도메인별 매핑이 없습니다. 유효한 부정 응답은 도달할 수 없는 리졸버와도 다르므로, 호환되지 않는 이름 공간을 대안으로 탐색하는 방식은 신뢰할 수 없습니다.
도메인별로 질의 라우팅하기
로컬 DNS 포워더는 빠진 정책을 표현할 수 있습니다. 기존 dnsmasq 구성에서는 사설 접미사를 다음과 같이 라우팅할 수 있습니다.
server=/internal.example/192.0.2.53
도메인과 주소를 바꾸십시오. 다른 이름에는 승인된 기본 업스트림을, 적절한 리스너와 접근 제한도 설정하십시오. 그다음 설치된 버전이 지원하는 구성으로 Squid를 해당 리졸버로 향하게 하십시오.
다른 방법으로, 두 이름 공간을 모두 올바르게 해석하는 조직의 DNS 서비스를 사용할 수 있습니다. 사설 이름을 노출하면서 응답할 수는 없는 공용 폴백은 피하십시오.
상위 프록시가 대상 조회를 수행한다면 그 홉에는 사설 이름 공간이 필요합니다. 로컬 Squid 호스트의 리졸버는 상위 프록시의 조회를 고치지 못합니다.
부정적인 경우도 확인하십시오
유효한 사설 이름, 유효한 공용 이름, 존재하지 않는 사설 이름을 고르십시오. 각각에 대해 의도한 업스트림과 기대하는 응답이 주소인지 부정 응답인지 확인하십시오. 마지막 경우는 내부 부정 응답 뒤에 의도치 않은 공용 폴백이 일어남을 드러냅니다.
클라이언트가 요구하는 주소 패밀리를 포함하십시오. A 조회가 동작한다고 해서 AAAA가 정책을 따르거나 도달 가능한 대상을 반환한다는 뜻은 아닙니다. 캐시 상태도 기록하십시오. 캐시된 응답은 새 질의가 어떤 업스트림을 고를지 가릴 수 있습니다.