짧은 이름에 대한 PAC 규칙이 프록시를 우회할 수 있습니다
점이 없는 호스트 이름과 정규화된 형식이 같은 PAC 스크립트에서 서로 다른 경로를 선택할 수 있는 이유를 이해하십시오.
PAC 스크립트는 URL에서 호스트 이름을 받습니다. dashboard은 일치시키기 전에 자동으로 dashboard.example.internal이 되지 않습니다:
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
return "PROXY 203.0.113.10:8080";
}문서용 주소 대신 실제 HTTP 엔드포인트를 사용하십시오. HTTP 프록시 목록은 해당 경로가 허용되는 공용 목적지 테스트에 쓸 후보를 제공합니다. 이 스크립트에서 짧은 이름은 의도적으로 DIRECT을 반환하고, 정규화된 이름은 프록시 분기에 도달합니다. “Plain hostname”은 점이 없는 표기를 뜻하며, 호스트가 신뢰할 수 있는 로컬 네트워크에 있다는 판정이 아닙니다.
원하는 정책이 하나의 내부 도메인이라면 모든 짧은 이름이 아니라 그 도메인과 일치시키십시오. dnsDomainIs과 shExpMatch은 입력과 패턴 의미가 다릅니다. .example.internal에 대한 접미사 검사는 정확한 루트 example.internal을 포함하지 않습니다. 의도한 경우 그 사례를 명시적으로 포함하십시오. 셸 스타일 패턴은 IP 서브넷도 정규식도 아닙니다.
짧은 이름, 정규화된 이름, 관련 없는 공용 호스트, 의도한 모든 도메인 루트에 대한 스크립트 결과를 비교하십시오. 이렇게 하면 프록시에 연결하지 않고 규칙 선택을 검사할 수 있습니다. 넓은 DIRECT 분기가 다른 방식으로 도달 가능한 엔드포인트의 시도를 막는 경우 처음 반환되는 규칙을 확인하십시오.
정책을 표현할 때는 이름 비교를 사용하십시오. DNS 도우미는 자체 조회와 지연을 추가합니다. 브라우저의 암시적 로컬 우회도 스크립트와 별도로 유지하십시오. localhost 검사는 실제 공용 또는 내부 목적지 표기를 대신할 수 없습니다.