IE'de HTTP proxy (veya değil) kullanırken DNS aramaları nasıl çalışır?


20

Kısa bir süre önce, bir istemci bir proxy sunucusundan bir sayfa istediğinde ne olacağı ile ilgili bir tartışmaya katıldım. Sadece bu olay dizisi hakkındaki anlayışımın genel durumda doğru olduğundan emin olmak istedim:

  1. Kullanıcı istekleri sitesi
  2. Hedef IP adresini çözmek için istemci tarafından yapılandırılmış DNS sunucusuna bir DNS isteği gönderilir (bu, ilk önce proxy'yi atlayacak şekilde yapılandırılmış HTTP isteklerini karşılamak için yapılır)
  3. Hedef IP DNS'den alındıktan sonra ve HTTP isteği gönderilmeden hemen önce, istek istisna listesine göre kontrol edilir
  4. Hedef sunucu istisna listesinde değilse, istek proxy sunucusuna yönlendirilir.
  5. Hedef sunucu özel durum listesinde ise, istek istemci makinenin yönlendirme tablosuna göre iletilir.

Herhangi bir geri bildirim en çok takdir edilecektir.

Yanıtlar:


21

Tam olarak değil: istemcinin nasıl yapılandırıldığına bağlıdır. IE'yi temel örnek olarak kullanalım.

IE'yi açık bir proxy ile yapılandırırsanız : örneğin başka bir seçenek işaretlenmezse, proxy bir şeye ayarlanır: 8080.

  1. Kullanıcı bir adres yazıyor

  2. IE, dize eşleşmesinin adresini IE proxy özel durumlar listesine göre denetler (örn. "Bu adresler için proxy'yi atla:")

    a. Baypas listesindeki bir girişle eşleşirse , istemci adı çözmek için kendi DNS'sini kullanır ve istemci doğrudan bağlantı noktası 80'deki (varsayılan) hedef IP adresine bağlanır , ardından aşağıdaki gibi bir istek gönderir:

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

    b. Hiçbir baypas listesi girişi eşleşmezse , devam edin:

  3. IE yapılandırılmış proxy'sine bağlanır ve formun bir isteğini gönderir:

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

    Bonus factoid: URL'deki FQDN'nin bu kullanımı, bir müşterinin gerçek bir web sunucusu yerine bir proxy ile konuştuğunu düşündüğünü anlamanın bir yoludur

  4. Proxy, bu ana bilgisayar adını kendi DNS'sini kullanarak çözer ve ardından hedef siteye bağlanır (yukarıdaki 2. adımda istemci gibi davranır), vb.

WPAD / PAC kullanırken:

Otomatik yapılandırma etkinleştirildiğinde ISA / TMG tarafından sağlananlar gibi bir Web Proxy Otomatik Bulma (WPAD) veya Proxy Otomatik Yapılandırma (PAC veya Otomatik Yapılandırma) komut dosyası kullanılması durumunda, durum farklıdır:

  1. Kullanıcı bir adres yazıyor

  2. Müşteri indirme cari wpad.dat / autoproxy.js / .Pac onun yapılandırılan konumdan dosya

  3. İstemci js dosyasında " FindProxyForUrl " işlevini arar ve onu çalıştırır

  4. Autoproxy komut dosyası, ana makine adını ve URL'yi işler . Bu sınırlı işlevli bir javascript dosyasıdır, ancak yine de birçok şey mümkündür:

    a. buna ad çözümlemesi de olabilir (IsInNet, DnsResolve)

    b. buna dize eşleme de (ShExpMatch) dahil olabilir

    c. bu bir milyona (i ++) kadar saymayı içerebilir

    d. bu , yönetici bir sarsıntı durumunda, önemsiz uyarı pop-up mesajlarını içerebilir.

    • (ya da sadece komik)
    • ((veya hata ayıklama))
  5. FindProxyForURL en az bir dizi fonksiyonu döner kullanım için en iyi yakınlık sıralı bir listesini (noktalı virgül ile ayrılmış):

    a. ya "DIRECT" , bu durumda istemcinin yukarıdaki Baypas durumuna göre adını çözmesi ve doğrudan bağlanması gerekir

    b. veya "PROXY proxy adı: 8080" veya benzeri bir durumda, bu durumda istemci söz konusu proxy'deki bağlantı noktasına bağlanır , tam URL'yi ALMASINI söyler ve proxy ad çözümlemesi gerçekleştirir .

    • Bir As Örneğin : komut işlevi döndürdü eğer "PROXY yourProxy: 8080; DIRECT'i" bağlanmak için istemci söyler yourproxy TCP portuna 8080 Bu URL'yi talep etmek ve eğer o bağlantı kurulamazsa, direkt gitmeyi deneyin. Not Bu olası değil bir kullanıcı için hoş yük devretme deneyim olarak, başka bir şey yener, böylece TCP oturumu kurulumu hatası, tam hızlı olmadığını. Olabilir.

Bazen aksaklıklar, incelikler ve açıklanamayan davranışlar vardır, ancak çoğunlukla işler garip ve ilginç yollarla kırılmadığında, yukarıda uzun yıllar boyunca nasıl çalıştığını gördüm. Daha yeni tarayıcılar davranışı optimize ediyor ve şeyleri paralelleştiriyor ve her zaman ilginç şeyler deniyor.

WinSock Proxy / ISA Güvenlik Duvarı İstemcisi / TMG İstemcisi :

Winsock Proxy İstemcisi (TMG / ISA Server'dan) ile ilgileniyorsanız, bu daha esnek ve hareketli parçalara sahip farklı bir hikaye. Buraya girmek için çok fazla, ama etrafında nasıl çalıştığını açıklayan dokümanlar var. Kısacası: Windows Yuvalarına takılır ve hem uygulama başına hem de kullanıcı başına TCP / UDP tabanlı trafik ve ad çözümleme isteklerine müdahale edebilir. Çok güçlü, ancak şimdi de kullanımdan kaldırıldı ve birkaç yıl içinde güncellenmedi.

Müşteriler Gerçekten Clingy olabilir:

Bir son not : HTTP istemci verilen bir site / url için bir proxy konuşmaya karar sonra, vekil değil bunu söylemek için hiçbir yolu yoktur .

"Ben buna hizmet etmiyorum, sadece doğrudan ona gitmelisin" için bir HTTP durum kodu veya başlığı yok ...

İstemci belirli bir URL'nin proxy tarafından sunulduğuna karar verdikten sonra proxy'de ölüm olayı gerçekleşir.

Bundan kaçınmanın tek yolu, seçim mantığını istemci bağlantısını kurmadan hemen önce, PAC veya Bypass listesinde almaktır.

Bölgeler ve PAC dosyaları hakkında son not

IE, DIRECT bağlantılı siteleri (URL'de noktaları olsa bile) Yerel İntranet Bölgesi'nin bir parçası olarak ele alır (varsayılan olarak - Bölge özelliklerinde ayarlanabilir) ve bu nedenle bu sitelere Tümleşik Windows Kimlik Doğrulamasına izin verme (ör. Kerberos ve / veya NTLM kimlik doğrulaması, saydam). Yerel İntranet Bölgesi'ndeki bir şeyin olup olmadığını denetlemek, otomatik kimlik doğrulama açısından ne kadar güvenilir olduğunu tanımlar. Yine, en azından varsayılan olarak.


Devletler müşteriler gerektiğini dair bir RFC standart veya parça var mıdır değil bir proxy üzerinden bağlamadan önce DNS çözümlemesini gerçekleştirmek?
wheeler

Anladığım kadarıyla sadece kongre ve / veya verimlilik. Eski Microsoft Winsock Proxy İstemcisi, ad çözümleme seçenekleriyle oynamanıza izin vermek için kullanılır. Ve ad çözümlemesi yapan ve daha sonra bir proxy kullanan bir PAC yazmanızı engelleyecek bir şey yok ... ilk başta nasıl yapıldığı değil.
TristanK

0

DNS bölümünüzün doğru olduğundan emin değilim. Geçerli DNS sunucuları olmayan bir makineyi bir proxy kullanarak IE'de sayfaları almayı gördüm.


Bir ISA Server Web Proxy İstemcisi'nin hedef adresleri çözmek için ISA sunucusunun DNS'sini kullandığını biliyorum, ancak XP / Win7 makinesinin Internet Seçeneklerinde ayarlanan temel bir HTTP proxy'nin yukarıda belirtildiği gibi çözüldüğünden eminim ...
orange_aurelius

... ve ayy. En azından IE'de kendimi yanlış olduğunu kanıtlayan bir test yaptım. Yani, sanırım bir sonraki sorum, proxy istisna listesindeki adresler için DNS nasıl çözülür? Belki snifferden çıkma zamanı.
orange_aurelius

0

Ubuntu 10.04, şarap, IE 6.0 ve kalamar 2.7'de deniyorum (sistem bir dns ve kalamarın diğer dns sunucusu var)

  1. Kullanıcı proxy'ye istek gönderir
  2. Squid DNS sunucusuna DNS isteği gönder
  3. Kalamar DNS yanıtı alır. Nxdomain veya başka bir hata varsa, IE'ye hata sayfası gönderin. Ad çözümlenirse, sayfayı getirin ve IE'ye verin.

IE 6.0 DNS adını çözmez.


0

Ben IP sanmıyorum ve etki alanı özel durum listesinde veya etki alanı ve IP özel durum listesinde ise, muhtemelen yine de proxy üzerinden gidecek.

Bir proxy.pac / wpad.dat dosyasının bu davranıştan çıkmanızı sağlaması mümkündür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.