PAC 규칙 안에서 DNS 실패 다루기
실패한 PAC DNS 조회를 로컬 네트워크 밖의 검증된 주소로 취급하지 말고 자체 정책 분기로 보내세요.
조회가 실패했다고 해서 목적지가 사설 네트워크 밖에 있다는 뜻은 아닙니다. 이는 이번 PAC 평가가 필요한 주소를 얻지 못했다는 것만 뜻합니다.
이 구분은 dnsResolve()가 isInNet() 규칙에 입력될 때 중요합니다. Chromium의 PAC 구현은 확인에 실패하면 null를 반환합니다. 결과가 항상 빈 문자열이라는 기억에 의존해 실패 분기를 만들지 마세요.
function FindProxyForURL(url, host) {
var address = dnsResolve(host);
if (!address) {
return "PROXY proxy.example:8080";
}
if (isInNet(address, "10.40.0.0", "255.255.0.0")) {
return "DIRECT";
}
return "PROXY proxy.example:8080";
}
이 예제는 확인되지 않은 이름을 프록시로 보냅니다. 이는 정책 선택이며 보편적으로 안전한 기본값이 아닙니다. 프록시가 클라이언트에 없는 확인자나 네트워크 뷰를 가질 때 유용할 수 있습니다. 로컬 확인이 필요한 네트워크에는 다른 명시적 결과가 필요합니다.
한 번만 확인하고 그 결과를 재사용하세요. 그러면 결정이 하나의 값에 묶이고 느릴 수 있는 도우미 호출을 반복하지 않게 됩니다.
실제 PAC 사용자도 확인하세요. 레거시 IPv4 도우미와 확장 IPv6 도우미는 계약이 다릅니다. 한 브라우저 구현으로 시험한 규칙이 같은 PAC URL을 쓰는 모든 애플리케이션에서의 지원을 보장하지는 않습니다.
요구 사항이 알려진 회사 접미사를 라우팅하는 것뿐이라면 호스트 이름 규칙으로 조회를 완전히 피할 수 있습니다. 주소가 정책에 꼭 필요한 정보일 때만 주소 기반 분류를 사용하세요.