Windows 2008 Server'da ölü ağ geçidi algılama


9

Yakın zamanda stackoverflow.com için HAProxy uyguladık. Günlüklerimizin ve istemci IP adresine bağlı diğer IIS modüllerinin değiştirilmesini gerektirmeyecek şekilde bağlanan istemciler için kaynak adresini korumak amacıyla TProxy kullanmaya karar verdik. Böylece paketler, harici bir internet IP adresinden gelmiş gibi sahte olarak gelir, gerçekte yerel ağımızdaki yerel bir 192.168.xx HAProxy IP'den geldiklerinde.

Her iki web sunucumuz da iki NIC'ye sahiptir - statik internet, DNS ve varsayılan ağ geçidine sahip genel internette bir yönlendirilebilir B sınıfı adresi ve HAProxy için özel IP'ye işaret eden varsayılan bir ağ geçidi ile yapılandırılmış bir özel yönlendirilemeyen sınıf C adresi. HAProxy'nin iki arabirimi vardır - biri genel, diğeri özel ve paketleri arabirimler arasında şeffaf olarak yönlendirme ve trafiği uygun web sunucusuna yönlendirme işini gerçekleştirir.

Ethernet adaptörü İnternet:

   Açıklama . . . . . . . . . . . : ağ kartı # 1
   DHCP Etkin. . . . . . . . . . . : Hayır
   Otomatik Yapılandırma Etkin. . . . : Evet
   IPv4 Adresi. . . . . . . . . . . : 69.59.196.217 (Tercih Edilen)
   Alt Ağ Maskesi. . . . . . . . . . . : 255.255.255.240
   Varsayılan giriş . . . . . . . . . : 69.59.196.209
   DNS Sunucuları. . . . . . . . . . . : 208.67.222.222
                                       208.67.220.220
   Tcpip üzerinden NetBIOS. . . . . . . . : Etkin

Ethernet adaptörü Özel Yerel:

   Açıklama . . . . . . . . . . . : ağ kartı # 2
   DHCP Etkin. . . . . . . . . . . : Hayır
   Otomatik Yapılandırma Etkin. . . . : Evet
   IPv4 Adresi. . . . . . . . . . . : 192.168.0.2 (Tercih Edilen)
   Alt Ağ Maskesi. . . . . . . . . . . : 255.255.255.0
   Varsayılan giriş . . . . . . . . . : 192.168.0.50
   Tcpip üzerinden NetBIOS. . . . . . . . : Etkin

Web sunucularının her birinde otomatik metrikleri devre dışı bıraktık ve yönlendirilebilir genel B sınıfı 10'luk bir metrik ve özel arayüzümüze 20'lik bir metrik verdik.

Ayrıca bu kayıt defteri anahtarlarının her ikisini de ayarladık:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DeadGWDetectDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"EnableDeadGWDetect"=dword:00000000

Günde yaklaşık iki kez, web sunucularından birinin DNS ile iletişim kuramadığı veya herkese açık internetteki diğer sunucularla bağlantı kuramadığı sorunlar görüyoruz.

Ölü ağ geçidi algılamasının halka açık ağ geçidindeki bir kesintiyi yanlış algıladığından ve tüm trafiği bu noktada DNS erişimi olmayan ancak bunu doğrulamanın bir yolu olmayan özel ağ geçidine geçirdiğinden şüpheleniyoruz.

  1. Ölü ağ geçidi algılamanın çalışıp çalışmadığını veya hatta Windows 2008 sunucusunda bir seçenek olup olmadığını bilmenin bir yolu var mı?

  2. Öyleyse, Windows 2008 sunucusunda ölü ağ geçidi algılamasını devre dışı bırakmanın bir yolu var mı?

  3. Değilse, DNS'yi çözme veya kısa bir süre için bağlantı kurma yeteneğimizi kaybetmemizin başka nedenleri olabilir mi?


1
Bu kurulum bazen kaşlarını çatmasına rağmen (bkz. Blogs.technet.com/timmcmic/archive/2009/04/26/… ), bizim için çok işe yarıyor - HAProxy'den IIS sitelerimize gelen tüm trafik hala orijinal IP adresi. IIS ve sayısız eklentilerini bir HTTP_X_FORWARDED_FOR üstbilgisi kullanacak şekilde yapılandırmamız gerektiğinden (nasıl yapılacağını öğreneceğimizden) bu, açıklanmayan zaman kazandırır.
Jarrod Dixon

1
192.168.0.2 arabiriminde neden yapılandırılmış bir ağ geçidiniz var? Boş bir varsayılan ağ geçidi yapılandırabilirsiniz (ve aslında iki arabiriminiz olduğunda Windows bunu yapmanızı ister).
Portman

@Portman - web kutularımız, kaynak istemci IP'leri ile trafiği sağlam gördüğünden, yanıtlar ağımıza gönderilmeyecek - bu yüzden HAProxy kutumuza varsayılan bir ağ geçidimiz olmalı.
Jarrod Dixon

@Jarrod - bu yapılandırma şüpheli görünüyor. Bu web sunucusunda dengesiz bir web sitesi çalıştırmak istiyorsanız ne olur? Yanıt HAProxy? Uzak masaüstü gibi bir şeyi nasıl ele alırsınız? Bunun soruyu ele almadığını anlıyorum, ama bu Daivdsmalley'nin (kibarca) söylediği şey Yanlış Yapıyorsunuz.
Portman

4
@ Jeff / Geoff / Jarrod - Açık olanı belirtmekten nefret ediyorum, ama siz yazılım geliştiricisiniz, neden düzeltmek için bir gün uzman olan birini işe almıyorsunuz? Bu, tüm ellerini kirletme çok güzel ama net bir bilgi boşluğu aralıklı olarak iş etkiliyor ve açıkça değerli zaman adil biraz geçirdim, burada var olmayan bir gelişmedir hangi çekirdek becerilerini kullanarak. Bana güvenin, birini tamir ettirin ve çalıştıktan sonra beynini seçin. Cehennem, webhosters olarak bile, kritik görev / hizmet etkilediğinde bu boşlukları köprülemek için insanlara ihtiyacımız var.
Kev

Yanıtlar:


5

Bu Ölü Ağ Geçidi Algılama DWORD'leri Windows Server 2008'de işe yaramaz. Var olmasının tek nedeni uyumluluk nedenidir. TCP / IP sürücüsü ve Windows yönlendirici bileşenleri artık bu değerleri aramıyor.

Bu özelliğin Windows Vista'da çıkış yapan Auto-Tuning'e dönüştürüldüğünden şüpheleniyorum. Yükseltilmiş bir komut isteminde aşağıdakileri çalıştırmayı deneyin (ve yeniden başlatın):

netsh int tcp set global autotuninglevel = devre dışı


Güncelleme ( 13 Eylül 2009 @ 7: 58PM EST eklendi )

Bu işe yaramazsa, daha fazla tanı çıktısına ihtiyacımız olacak. NetConnection veya LAN senaryolarıyla (dairesel) bir izleme başlatın ve sorun oluşana kadar çalışmaya devam etmesine izin verin.

netsh izleme başlangıç ​​senaryosu = NetConnection maxSize = 512

(Örnek: NetConnection izleme senaryosunu maksimum izleme günlük boyutu 512 MB ile başlatır)

Elde edilen izlemeyi Ağ İzleyicisi 3.3'te açabilirsiniz, en son ayrıştırıcıları yüklediğinizden emin olun .


iyi fikir, ama ya da işe yaramadı görünüyordu ... sadece 5 dakikalık giden trafik kesintisi - gizemli kendini düzeltti.
Jeff Atwood

@Jeff: Hmm, daha fazla veriye ihtiyacımız var Kaptan! Yukarıdaki düzenlemeye bakın.
Rafael Rivera

5

Dead Gateway Detection'ın davranışını neden kontrol edemediğimiz konusunda kesin bir sonuca varamadık.

Bu sorunu gidermek için tonlarca zaman harcamak yerine, HAProxy bulut sunucusu yönlendirme trafiğimizi ağ geçidine giden yola yönlendirmeyi seçtik ve her iki web sunucusunun da varsayılan ağ geçidini haproxy IP'sine ayarladık ve dahili ağ geçidi adresini kaldırdık.

  [ soweb1 ] 69.59.196.220, GW=69.59.196.211 [haproxy]
       |
       +---- [haproxy] 69.59.196.211, GW 69.59.196.209
       |
    [ gw ] 69.59.196.209

Artık ölü varsayılan ağ geçidi algılaması artık kullanılmadığından sorunumuzu ortadan kaldıran tek bir varsayılan ağ geçidi var.


4

Neden varsayılan ağ geçidini HAproxy olarak değiştirmeniz gerektiğini bile soruyorum. Genellikle, ağ geçidi IP'sinin kötü bir şey olması durumunda başka bir yönlendiriciye / makineye yük devretebileceği yüksek düzeyde kullanılabilir bir N + 1 kurulumuna işaret etmediğiniz sürece varsayılan ağ geçidinizi değiştirmemelisiniz. HAproxy makinenize bir şey olduysa ve bant dışı erişiminiz yoksa, web sunucuları internetten düşecektir.

Bunu yapmanıza neden olabileceğine inandığımdan, istemcilerin IP adreslerinin proxy sunucunuzun IP'sinde değil günlüklerinizde görünmesini sağlamak için kurulumunuzda Tproxy kullandığınızdan, bunun yerine bunu önerebilir miyim

  1. HAproxy yapılandırmanıza "ileriye yönelik seçenek ..." ekle
  2. Yükleme x iletilen-için ISAPI filtresi
  3. Tproxy kurulumundan kaldırın
  4. Varsayılan ağ geçidini, doğrudan internet bağlantısı ile daha önce kullandığınız ağ geçidine geri döndürün

Bunu test etmek için bir Windows makinem yok, ancak istenmeyen bağlantı kaybı olmadan istenen etkiye neden olması gerektiğine inanıyorum.


Sadece bu kurulumla ilgili orijinal soru hakkındaki yorumunuzu gördüm. Ancak, sunucularınız internet bağlantısını kaybediyorsa "bizim için çok işe yarıyor" şüpheliyim :)
davidsmalley

3
Alternatif olarak, trafiği çekirdek düzeyinde yeniden yönlendiren ldirectord + kalp atışı gibi çok daha sağlam bir çözüme bakabilirsiniz; Bu kurulumu çok kullanıyorum ve harika çalışıyor. linuxvirtualserver.org/docs/ha/heartbeat_ldirectord.html
davidsmalley

x-forwarded-forGünlükleri değiştirmek için bu üstbilgi ve IIS filtrelerini kullanmaya baktık , ancak diğer isteğe bağlı IIS modüllerinizin işlemlerinde üstbilgiyi de nasıl kullanıp kullanmadıklarını bilmiyoruz.
Jarrod Dixon

Bu linuxvirtualserver.org/HighAани.html bağlantısı için teşekkürler - orada bilgi şaşırtıcı! Bu konularda cahil olduğumun ötesindeyim (bu yüzden tüm bunları ayarlayan kişi ben değilim!), Ama mümkün olduğunca hızlı öğrenmeye çalışıyorum. Belki de kalp atışı + ldirectord komutunu linuxvirtualserver.org/docs/ha/ultramonkey.html dosyasının en sevdiğimiz HAProxy ile yaptığı gibi kullanabiliriz.
Jarrod Dixon

-1

İnternet erişimi söz konusu olduğunda (genellikle) varsayılan ağ geçitleri İNTERNET'e giden bir yolu belirtmek için yalnızca EVER kullanılmalıdır. Tanımlanmış birden çok varsayılan ağ geçidiniz varsa, OS yönlendiricisi hangisini kullanacağınıza karar veremez ve bir varsayılan ağ geçidi bir çıkmaz noktayı (örneğin çok bölümlü LAN'ınız) gösterirse, o zaman internet için iletilen paketler başaramayacak.

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.