Windows 2008 Server에서 사용 불능 게이트웨이 감지 192.168.xx HAProxy IP에서 온 것입니다. 두 웹

최근 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를 해결하거나 짧은 시간 동안 연결하지 못하는 다른 이유가있을 수 있습니까?



답변

이러한 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 에서 결과 추적을 열 수 있습니다 . 최신 구문 분석기 를 설치하십시오 .


답변

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

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


답변

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

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

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

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


답변

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


답변