Windows 2008 Server에서 사용 불능 게이트웨이 감지


9

최근 stackoverflow.com에 HAProxy를 구현했습니다. 클라이언트 IP 주소에 의존하는 로그 및 기타 IIS 모듈은 수정하지 않아도되도록 TProxy를 사용하여 연결하는 클라이언트의 소스 주소를 유지하기로 결정했습니다. 따라서 패킷은 마치 외부 인터넷 IP 주소에서 온 것처럼 스푸핑 된 상태로 도착합니다. 실제로는 로컬 네트워크의 로컬 192.168.xx HAProxy IP에서 온 것입니다.

두 웹 서버에는 두 개의 NIC (정적 IP, DNS 및 기본 게이트웨이가있는 공용 인터넷의 라우팅 가능한 클래스 B 주소 하나와 HAProxy의 개인 IP를 가리키는 기본 게이트웨이로 구성된 하나의 개인 라우팅 불가능 클래스 C 주소)가 있습니다. HAProxy에는 공용 인터페이스와 개인 인터페이스의 두 가지 인터페이스가 있으며 인터페이스간에 패킷을 투명하게 라우팅하고 트래픽을 적절한 웹 서버로 보내는 작업을 수행합니다.

이더넷 어댑터 인터넷 :

   설명 . . . . . . . . . . : 네트워크 카드 # 1
   DHCP 사용. . . . . . . . . . . : 아니
   자동 구성 사용. . . . : 예
   IPv4 주소. . . . . . . . . . . : 69.59.196.217 (권장)
   서브넷 마스크 . . . . . . . . . . . : 255.255.255.240
   기본 게이트웨이 . . . . . . . . . : 69.59.196.209
   DNS 서버. . . . . . . . . . . : 208.67.222.222
                                       208.67.220.220
   Tcpip를 통한 NetBIOS. . . . . . . . : 사용

이더넷 어댑터 개인 로컬 :

   설명 . . . . . . . . . . : 네트워크 카드 # 2
   DHCP 사용. . . . . . . . . . . : 아니
   자동 구성 사용. . . . : 예
   IPv4 주소. . . . . . . . . . . : 192.168.0.2 (권장)
   서브넷 마스크 . . . . . . . . . . . : 255.255.255.0
   기본 게이트웨이 . . . . . . . . . : 192.168.0.50
   Tcpip를 통한 NetBIOS. . . . . . . . : 사용

각 웹 서버에서 자동 메트릭을 비활성화하고 라우팅 가능한 공용 클래스 B에 메트릭을 10으로, 개인 인터페이스에 메트릭을 20으로 할당했습니다.

또한 다음 레지스트리 키를 모두 설정했습니다.

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

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

하루에 두 번 웹 서버 중 하나가 DNS에 접속할 수 없거나 공용 인터넷의 다른 서버에 연결할 수없는 문제가 있습니다.

죽은 게이트웨이 감지 기능이 퍼블릭 게이트웨이의 중단을 잘못 감지하고 있으며이 시점에서 DNS 액세스 권한이 없지만이를 확인할 방법이없는 프라이빗 게이트웨이로 모든 트래픽을 전환하고있는 것으로 보입니다.

  1. 죽은 게이트웨이 감지가 실행 중인지 또는 Windows 2008 서버에서 옵션을 확인할 수있는 방법이 있습니까?

  2. 그렇다면 Windows 2008 서버에서 데드 게이트웨이 감지를 비활성화하는 방법이 있습니까?

  3. 그렇지 않다면 DNS를 해결하거나 짧은 시간 동안 연결하지 못하는 다른 이유가있을 수 있습니까?


1
이 설정은 때때로 눈살을 찌푸리게되지만 ( blogs.technet.com/timmcmic/archive/2009/04/26/… 참조 ), HAProxy에서 IIS 사이트로 들어오는 모든 트래픽은 여전히 ​​사이트에서 오는 것처럼 보입니다. 원래 IP 주소. HTTP_X_FORWARDED_FOR 헤더를 사용하도록 IIS 및 수많은 플러그인을 구성하는 방법을 찾아야하므로,이를 통해 많은 시간을 절약 할 수 있습니다.
Jarrod Dixon

1
왜 192.168.0.2 인터페이스에 게이트웨이가 구성되어 있습니까? 빈 기본 게이트웨이를 구성 할 수 있습니다 (실제로 두 개의 인터페이스가있을 때 Windows에서 프롬프트를 표시합니다).
Portman

@Portman-웹 상자에 원래 클라이언트 IP의 트래픽이 그대로 표시되므로 응답이 네트워크로 전송되지 않으므로 HAProxy 상자에 대한 기본 게이트웨이가 있어야합니다.
Jarrod Dixon

@Jarrod-그 구성은 의심스러운 것 같습니다. 해당 웹 서버에서 균형이 맞지 않는 웹 사이트를 실행하려면 어떻습니까? 응답이 HAProxy를 통해 라우팅됩니까? 원격 데스크톱과 같은 것을 어떻게 처리 하시겠습니까? 나는 이것이 문제를 다루지 않는다는 것을 알고 있지만 이것은 daivdsmalley가 (정치적으로) 말하는 것입니다.
포트만

4
@ Jeff / Geoff / Jarrod-나는 명백한 것을 밝히는 것을 싫어하지만, 너희들은 소프트웨어 개발자들인데, 하루 동안 전문가를 고용하여 고칠 수있는 사람은 누구 일까? 손을 더럽히는 것은 매우 좋지만 여기에는 명확한 지식 격차가 있습니다. 간헐적으로 비즈니스에 영향을 미치며 개발중인 핵심 기술을 사용 하지 않고 상당한 귀중한 시간을 분명히 보냈습니다 . 날 믿어 누군가를 고쳐서 작동시킨 후 뇌를 고르세요. 웹 호스팅 업체 라 할지라도 미션 크리티컬 / 서비스에 영향을 줄 때 이러한 격차를 해소하기 위해 사람들을 데려 와야합니다.
Kev

답변:


5

이러한 Dead Gateway Detection DWORD는 Windows Server 2008에서 쓸모가 없습니다. 존재하는 유일한 이유는 호환성 때문입니다. TCP / IP 드라이버 및 Windows 라우터 구성 요소는 더 이상이 값을 찾지 않습니다.

이 기능이 Windows Vista에서 데뷔 한 자동 조정 기능으로 구현 된 것 같습니다. 관리자 권한 명령 프롬프트에서 다음을 실행 (다시 부팅)하십시오.

netsh int tcp 글로벌 전역 튜닝 수준 설정 = 비활성화


업데이트 ( 2009 년 9 월 13 일 오후 7시 58 분 동부 표준시 추가 )

그래도 작동하지 않으면 더 많은 진단 결과가 필요합니다. NetConnection 또는 LAN 시나리오로 (원형) 추적을 시작하고 문제가 발생할 때까지 계속 실행하십시오.

netsh 추적 시작 시나리오 = NetConnection maxSize = 512

(예 : 최대 추적 로그 크기가 512MB 인 NetConnection 추적 시나리오를 시작합니다.)

Network Monitor 3.3 에서 결과 추적을 열 수 있습니다 . 최신 구문 분석기 를 설치하십시오 .


좋은 생각이지만 작동하지 않는 것 같습니다. 5 분 동안 나가는 트래픽 중단을 경험했습니다.
Jeff Atwood

@Jeff : 흠, 더 많은 데이터 캡틴이 필요합니다! 위의 편집을 참조하십시오.
Rafael Rivera

5

Dead Gateway Detection의 동작을 제어 할 수없는 이유에 대한 결정적인 결과를 얻지 못했습니다.

이 문제를 해결하는 데 많은 시간을 소비하지 않고 HAProxy 인스턴스가 트래픽을 게이트웨이 아웃 바운드로 라우팅하고 두 웹 서버 기본 게이트웨이를 haproxy의 IP로 설정하고 내부 게이트웨이 주소를 제거하도록 선택했습니다.

  [ 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

죽은 기본 게이트웨이 감지가 더 이상 사용되지 않기 때문에 이제는 기본 게이트웨이가 하나만있어 문제를 해결합니다.


4

기본 게이트웨이를 HAproxy로 변경 해야하는 이유에 대해 궁금합니다. 일반적으로 문제가 발생할 경우 게이트웨이 IP가 다른 라우터 / 시스템으로 장애 조치 될 수있는 고 가용성 N + 1 설정을 가리 키지 않는 한 기본 게이트웨이를 전혀 변경하지 않아야합니다. HAproxy 시스템에 문제가 발생하여 대역 외 액세스 권한이없는 경우 웹 서버는 인터넷을 끊습니다.

이 작업을 수행하는 이유는 설정에서 Tproxy를 사용하여 클라이언트 IP 주소를 프록시 서버의 IP가 아닌 로그에 표시하기 때문에 대신 할 것을 제안 할 수 있기 때문입니다.

  1. HAproxy 구성에 "option forwardfor ..."추가
  2. 설치 X-전달-위한 ISAPI 필터
  3. 설정에서 tproxy를 제거하십시오
  4. 인터넷을 직접 연결하여 이전에 사용했던 것과 동일한 게이트웨이로 기본 게이트웨이를 다시 변경하십시오.

이것을 테스트 할 Windows 시스템이 없지만 원치 않는 연결 손실없이 원하는 효과를 얻을 수 있다고 생각합니다.


이 설정에 관한 원래 질문에 대한 귀하의 의견을 방금 발견했습니다. 그러나, 나는 "그것은 우리를 위해 놀랍도록 작동"의심 할 서버는 인터넷 연결 : 잃어버린 경우
davidsmalley

3
또는 ldirectord + heartbeat와 같이 커널 수준에서 트래픽을 리디렉션하는 ldirectord + heartbeat와 같은 훨씬 강력한 솔루션을 볼 수 있습니다. 나는이 설정을 광범위하게 사용하며 훌륭하게 작동합니다. linuxvirtualserver.org/docs/ha/heartbeat_ldirectord.html
davidsmalley

x-forwarded-for헤더와 IIS 필터를 사용하여 로그를 변경하는 방법을 살펴 봤지만 다른 선택적 IIS 모듈이 헤더를 사용하는 방법을 알지 못합니다.
Jarrod Dixon

linuxvirtualserver.org/HighAvailability.html 링크에 감사드립니다 -놀라운 정보가 있습니다! 나는이 과목들에 대해 무지하지 못합니다 (그래서 내가이 모든 것을 설정하는 사람이 아닙니다!). 가능한 한 빨리 배우려고 노력하고 있습니다. 아마도 우리는 linuxvirtualserver.org/docs/ha/ultramonkey.html 이 선호하는 HAProxy 로 어떻게 작동 하는지와 비슷한 heartbeat + ldirectord를 사용할 수 있습니다 .
Jarrod Dixon

-1

인터넷 액세스 (일반적으로)가 포함 된 경우 기본 게이트웨이는 인터넷 경로를 나타내는 데만 사용해야합니다. 여러 개의 기본 게이트웨이가 정의되어 있으면 OS 라우터가 사용할 게이트웨이를 결정할 수 없으며 하나의 기본 게이트웨이가 Cul-de-Sac (예 : 다중 세그먼트 LAN)를 가리키는 경우 인터넷에 전달 된 패킷은 다음과 같습니다. 그것을 만들지 않을 것입니다.

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