IE에서 HTTP 프록시를 사용하거나 사용하지 않을 때 DNS 조회가 작동하는 방식


20

최근 클라이언트가 프록시 서버에서 페이지를 요청할 때 발생하는 문제에 대한 토론에 참여했습니다. 이 사건의 순서에 대한 나의 이해가 일반적인 경우에 올바른지 확인하고 싶었습니다.

  1. 사용자 요청 사이트
  2. 클라이언트가 DNS 요청을 구성된 DNS 서버로 보내 대상 IP 주소를 확인합니다 (프록시를 우회하도록 구성된 HTTP 요청을 수용하기 위해 먼저 수행됨)
  3. 대상 IP가 DNS에서 수신되고 HTTP 요청이 전송되기 직전에 예외 목록과 비교하여 요청이 확인됩니다.
  4. 대상 서버가 예외 목록에 없으면 요청이 프록시 서버로 전달됩니다.
  5. 대상 서버가 예외 목록에 있으면 클라이언트 시스템의 라우팅 테이블에 따라 요청이 전달됩니다.

모든 의견을 보내 주시면 감사하겠습니다.

답변:


21

정확하게는 아닙니다 : 클라이언트 구성 방법에 따라 다릅니다. IE를 기본 예제로 사용합시다.

명시 적 프록시로 IE를 구성하는 경우 (: 다른 옵션을 선택하지 않은 경우 프록시는 무언가 : 8080으로 설정)

  1. 사용자가 주소를 입력

  2. IE는 IE 프록시 예외 목록과 일치 하는 문자열 의 주소를 확인합니다 (예 : "이 주소의 프록시 무시 :").

    ㅏ. 가에있는 항목과 일치하는 경우 바이 패스 목록클라이언트가 사용하는 자신의 DNS를 이름을 해결하기 위해, 다음 클라이언트가 대상 IP 주소에 직접 연결 포트 80 (가정)에 다음과 같은 요청을 보냅니다 :

    GET /something.htm HTTP/1.1
    Host: fulldomainame.example.com

    비. 바이 패스 목록 항목이 일치하지 않으면 계속 진행하십시오.

  3. IE는 구성된 프록시에 연결하고 다음 형식의 요청을 보냅니다.

    GET http://fulldomainname.example.com/something.htm HTTP/1.1

    보너스 사실 : URL 에서 FQDN을 사용 하면 클라이언트 실제 웹 서버 대신 프록시와 대화 한다고 생각 하는 것을 알 수 있습니다.

  4. 프록시 는 자체 DNS를 사용하여 해당 호스트 이름확인한 다음 대상 사이트에 연결합니다 (위의 2 단계에서 클라이언트처럼 작동) 등

WPAD / PAC를 사용하는 경우 :

자동 구성이 활성화 된 경우 ISA / TMG에서 제공하는 것과 같은 WPAD (Web Proxy Auto Discovery) 또는 PAC 또는 Autoconfig (Proxy Auto Configuration) 스크립트를 사용하는 경우에는 다릅니다.

  1. 사용자가 주소를 입력

  2. 클라이언트 는 구성된 위치에서 현재 wpad.dat / autoproxy.js / .pac 파일을 다운로드 합니다

  3. 클라이언트는 js 파일에서 " FindProxyForUrl " 기능을 찾아서 실행합니다.

  4. 자동 프록시 스크립트는 호스트 이름URL을 처리합니다 . 이것은 제한된 기능의 자바 스크립트 파일이지만 여전히 많은 것들이 가능합니다.

    ㅏ. 여기에는 이름 확인 (IsInNet, DnsResolve) 이 포함될 수 있습니다.

    비. 여기에는 문자열 일치 (ShExpMatch) 가 포함될 수 있습니다

    기음. 여기에는 백만까지 계산 (i ++) 이 포함될 수 있습니다.

    디. 관리자가 멍청이 경우 불쾌한 경고 팝업 메시지 가 포함될 수 있습니다.

    • (또는 그냥 재미있다)
    • (또는 디버깅)
  5. 은 FindProxyForURL의 적어도 하나 개의 문자열 함수가 반환 사용하는 가장 프록시의 정렬 된 목록 (세미콜론으로 구분) :

    ㅏ. 중 "DIRECT"는 ,이 경우 클라이언트는 이름 자체를 해결하고 바이 패스 케이스 위의에 따라, 직접 연결해야

    비. 또는 "PROXY proxyname : 8080" 또는 이와 유사한,이 경우 프록시에 해당 포트에 대한 클라이언트 커넥트을에, 그것을 알려줍니다 전체 URL을 GET프록시 수행의 이름 확인 .

    • 예를 들어 , 스크립트 함수가 "PROXY yourProxy : 8080; DIRECT" 를 리턴 하여 클라이언트가 TCP 포트 8080 에서 프록시 에 연결 하여이 URL을 요청 하도록 지시 한 경우 해당 연결을 설정할 수 없으면 직접 연결해보십시오. 참고 이 가능성이없는 사용자에 대한 적절한 장애 조치의 경험으로, 아무것도 없잖아 있도록 TCP 세션 설정 오류가 정확히 빠른 아니라고. 아마도.

때때로 글리치, 미묘함 및 설명 할 수없는 동작이 있지만, 이상하고 흥미로운 방식으로 문제가 해결되지 않은 경우 위의 내용은 몇 년 동안 작동하는 방식을 보여줍니다. 최신 브라우저는 동작을 최적화하고 물건을 병렬화하고 항상 흥미로운 것을 시도하고 있으므로 제공된 브라우저에 대한 최신 문서를 확인하여 세부 사항을 이해하십시오.

WinSock 프록시 / ISA 방화벽 클라이언트 / TMG 클라이언트 :

TMG / ISA Server의 Winsock 프록시 클라이언트에 관심이 있다면 유연성과 가동 부분이 더 다른 이야기입니다. 여기에 너무 많이 들어 가지 만 어떻게 작동하는지 설명하는 문서가 있습니다. 간단히 말해 Windows 소켓에 연결되며 응용 프로그램 및 사용자별로 TCP / UDP 기반 트래픽과 이름 확인 요청을 가로 챌 수 있습니다. 매우 강력하지만 현재 더 이상 사용되지 않으며 몇 년 후에 업데이트되지 않았습니다.

고객은 정말 집착 할 수 있습니다.

최종 참고 : HTTP 클라이언트가 특정 사이트 / URL에 대한 프록시 이야기하기로 결정하면, 프록시가되지 그것을 말할 수있는 방법이 없습니다 .

"서비스를 제공하지 않습니다. 대신 직접 연결해야합니다"라는 HTTP 상태 코드 또는 헤더가 없습니다.

클라이언트가 특정 URL이 프록시 제공을 결정하면 proxy-death-grip 이 발생합니다.

이를 피하는 유일한 방법은 클라이언트가 PAC 또는 바이 패스 목록에서 연결하기 직전에 선택 로직을 얻는 것입니다.

영역 및 PAC 파일에 대한 마지막 참고 사항

IE는 URL에 점이있는 경우에도 직접 연결된 사이트를 로컬 인트라넷 영역의 일부 (기본적으로 영역 속성에서 설정 가능)로 취급하므로 해당 사이트에 Windows 통합 인증을 허용하는 것과 같은 작업을 수행합니다 (예 : Kerberos 및 / 또는 NTLM 인증). 따라서 로컬 인트라넷 영역에있는 항목을 제어하면 자동 인증의 관점에서 신뢰 수준을 정의합니다. 최소한 기본적으로는 다시 한 번.


상태는 클라이언트가해야한다는 RFC의 표준 또는 부분이 없는 프록시를 통해 연결하기 전에 DNS 확인을 수행는?
휠러

내가 이해하는 한, 관습 및 / 또는 효율성. 이전 Microsoft Winsock 프록시 클라이언트는 이름 확인 옵션을 사용하여 재생할 수있었습니다. 이름 확인을 수행 한 다음 프록시를 사용하는 PAC 작성을 중단 할 필요는 없습니다. 처음에는 수행 된 방식이 아닙니다.
TristanK

0

귀하의 DNS 부분이 올바른지 잘 모르겠습니다. 유효한 DNS 서버가없는 컴퓨터가 IE를 사용하여 프록시를 사용하여 페이지를 가져 오는 것을 보았습니다.


ISA Server 웹 프록시 클라이언트가 ISA 서버의 DNS를 사용하여 대상 주소를 확인하는 것을 알고 있지만 XP / Win7 컴퓨터의 인터넷 옵션에 설정된 기본 HTTP 프록시가 위에서 설명한대로 해결 될 것입니다.
orange_aurelius

... 그리고 죄송합니다. 나는 적어도 IE에서 자신을 잘못 시험 한 테스트를했다. 따라서 다음 질문은 프록시 예외 목록에있는 주소에 대해 DNS를 어떻게 확인합니까? 스나이퍼를 꺼내야 할 때입니다.
orange_aurelius

0

우분투 10.04, 와인, IE 6.0 및 오징어 2.7에서 시도합니다 (시스템에는 하나의 DNS가 있고 오징어에는 다른 DNS 서버가 있습니다)

  1. 사용자가 프록시로 요청을 보냅니다.
  2. 오징어는 DNS 요청을 DNS 서버에 보냅니다
  3. 오징어는 DNS 응답을받습니다. nxdomain 또는 기타 오류 인 경우 오류 페이지를 IE로 보냅니다. 이름이 확인되면 페이지를 가져 와서 IE에 제공하십시오.

IE 6.0은 DNS 이름을 확인하지 않습니다.


0

나는 그것이 생각하지 않습니다-IP와 도메인을 예외 목록 또는 도메인에 입력하고 IP가 예외 목록에 있으면 여전히 프록시를 통해 갈 것입니다.

proxy.pac / wpad.dat를 사용하면이 동작에서 벗어날 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.