PAC 파일이 잘못된 네트워크 어댑터를 선택하는 이유
노트북에는 여러 개의 로컬 주소가 있을 수 있습니다. myIpAddress() 기반 PAC 규칙은 예상한 것과 다른 인터페이스를 식별할 수 있습니다.
노트북이 사무실 Wi-Fi에 연결되어 있고, 이더넷 케이블이 꽂혀 있으며, VPN 어댑터도 여전히 존재합니다. PAC 파일은 myIpAddress()에 어느 네트워크에 있는지 묻습니다. 잘못된 어댑터에 속한 주소를 받기 전까지는 합리적으로 보입니다.
빠진 세부 사항은 이 함수가 주소 하나만 반환한다는 것입니다. 모든 인터페이스의 목록이 아니며, 공인 IP를 알아내기 위해 웹사이트에 접속하지도 않습니다. 사설 주소나 루프백 대체값조차 프록시를 거치는 요청이 어떤 출구 주소를 사용할지 알려주지 않습니다.
주소가 여러 개인 머신에 대한 하나의 답
네트워크 인터페이스 선택은 PAC 구현에 속합니다. Windows 어댑터 순서를 바꾸라는 오래된 조언은 특정 브라우저와 운영 체제 버전을 설명할 수 있지만, 좋은 범용 해결책은 아닙니다. Chromium은 자체 선택 알고리즘과 다중 네트워크 제한을 문서화합니다. 다른 클라이언트가 같은 선택을 해야 할 의무는 없습니다.
영향을 받는 브라우저가 실제로 제공한 값을 확인하는 것으로 시작한 다음, 스크립트의 서브넷 검사와 비교하십시오. Wi-Fi, 이더넷, 승인된 VPN 연결에서 각각 따로 하십시오. 의외로 보이는 주소도 구현 규칙을 충족할 수 있습니다.
결정이 추측에 덜 의존하게 만들기
가능하면 가정된 클라이언트 인터페이스가 아니라 대상 호스트 이름으로 프록시를 선택하십시오. 네트워크 감지가 필요하면 조직이 통제하는 의도적이고 문서화된 신호를 사용하십시오. DNS 기반 감지에도 실패 모드가 있으므로 그 신호를 사용할 수 없을 때 어떻게 할지 정의하십시오.
일부 구현은 myIpAddressEx()을 제공합니다. 채택하기 전에 지원 여부와 반환 형식을 확인하십시오. 단일 IPv4 문자열의 즉각적인 대체물은 아닙니다. 마지막으로 결과 요청 경로를 독립적으로 검증하십시오. 사무실 서브넷을 올바르게 인식하는 것과 의도한 프록시에 도달하는 것은 서로 다른 두 가지 결과입니다.