여러 개의 IP 주소를 단일 호스트 이름으로 지정


25

Windows 시스템에서이 파일은에 C:\WINDOWS\system32\drivers\etc\hosts있습니다. 이 파일을 사용하면 특정 IP 주소를 호스트 이름으로 기본값으로 지정할 수 있습니다.

이제 문제는 여러 IP 주소를 호스트 이름으로 설정할 수 있는지 여부입니다. 예를 들어 다음과 같이 할 수 있습니까?

192.168.244.128   gateway.net
192.168.226.129   gateway.net

그리고 브라우저가 두 가지 모두를 해결할 수있을 것으로 기대하십시오. 어느 것이 작동하고 그 중 하나를 가리킬 것입니까?

그렇지 않은 경우 원하는 동작을 얻을 수있는 다른 방법이 있습니까?

참고 :이 응용 프로그램을 자체 LAN에 배포하므로 인터넷이 필요하지 않습니다.

답변:


25

일반적으로 호스트를 사용하지 않고 DNS를 사용합니다. 영역의 한 이름에 여러 개의 A 레코드를 할당하면 대부분의 DNS는 "라운드 로빈"을 제공합니다.

그러면 첫 번째 요청은 receive 192.168.244.128이고, 다음 요청은받을 것 192.168.226.129입니다. 그러나 의도적으로 로컬 컴퓨터는 DNS 확인을 캐시하며 일반적으로 만료 될 때까지 (TTL (Time To Live)) 동일한 IP 주소를 계속 사용합니다.


1
편집 : 신경 쓰지 마라, 나는 정정되었다! 아래에 게시
MagnaVis

17

예,이 작업을 수행 할 수 있습니다. 실제로 DNS에 호스트를 입력하지 않고도 라운드 로빈 DNS 시나리오를 테스트했습니다.

응용 프로그램이 gethostbyname을 호출하면 전체 IP 주소 목록을 가져옵니다 (라이브러리 / OS에 따라 임의 순서로 가능).


2
실제로 질문에 답변 +1
CLF

u는 무작위로 하나를 선택한다는 의미입니다.
.i

12

나는 당신이 이것에 대해 잘못된 길을 가고 있다고 생각합니다. 내가 여기서 잘못된 가정을하고 있는지 알려주세요.

대본:

  • IIS에서 동일한 웹 응용 프로그램을 실행하는 두 개의 Windows 서버가 있습니다.
  • 서버 중 하나에 장애가 발생하더라도 응용 프로그램을 계속 사용할 수 있도록 응용 프로그램에 내결함성이 있어야합니다.
  • 사용자가 동일한 호스트 이름 (예 : gateway.net)으로 애플리케이션에 계속 액세스 할 수 있도록이 결함 허용이 브라우저에 투명하게 표시되기를 원합니다.

당신이하려고하는 것은 라운드 로빈 DNS (일명 가난한 사람로드 밸런싱)이지만 클라이언트 측에서 시도하는 것입니다. DNS 캐시를 플러시하더라도 원하는 효과 (적어도 내 Windows XP 상자에서는)가 아닌 것 같습니다. Windows는 파일의 첫 번째 IP로만 확인됩니다. 그럼에도 불구하고 라운드 로빈 DNS는 내결함성이 없으므로 원하는 것을 달성하는 데 도움이되지 않습니다.

제안 된 해결책 :

하드웨어로드 밸런서 : 일부 브랜드 이름은 Alteon, Big-IP, Barracuda입니다. 이것이하는 일은 기본적으로 사용자가 연결할 수있는 단일 IP를 제공하며 요청을 웹 서버에 전달합니다. 서버 중 하나를 사용할 수 없게되면 더 이상 트래픽을 전달하지 않습니다. 이것은 비싼 옵션입니다.

네트워크로드 균형 조정 서비스 : Windows 서버에서 사용할 수있는 Microsoft 기술로 단일 클러스터 IP를 제공합니다. 하드웨어로드 밸런서와 동일한 결과를 얻지 만 다른 방식으로 달성합니다. 당신이 할 필요가있다 구성 그것 .


1
ZEN-LB 는 정말 간단하고 쉬운로드 밸런서입니다. 우리는 오픈 소스 (무료)로 많은 성공을 거두었으며 그것을 좋아했습니다.
Derrick

2

에서 http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

IPv4 예

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

이 예에서 hostA에는 2 개의 IP 주소와 3 개의 별칭이 있습니다. 별명 hostB는 첫 번째 주소를 지정하고 별명 hostC 및 host-C는 두 번째 주소를 지정합니다. LSF는 공식 호스트 이름 인 hostA를 사용하여 두 IP 주소가 모두 동일한 호스트에 속하는지 식별합니다.


1
"LSF_CONFDIR / hosts 형식은 UNIX 시스템의 / etc / hosts 파일 형식과 유사합니다." 즉, 소스는 일반 호스트 파일이 아닙니다.
gertvdijk

1

내 제안은 DNS 라운드 로빈 및 TTL = 0 인 내부 DNS 서버를 사용하는 것입니다. IP / 서버가 다운 될 때 DNS 레코드 (자동 IP 검사 시스템으로도)를 업데이트하면 고 가용성 시스템을 가질 수 있습니다.


이것은 고 가용성을위한 솔루션이 아닙니다. DNS는이를 위해 설계된 것이 아니며 다른 장애 조치 방법과 함께 사용해야합니다. 많은 해석자가 TTL 캐시도 무시하므로이 방법을 신뢰할 수 없습니다.
Mark Henderson

1

홈 네트워크에서 고정 IP를 노트북의 유선 및 무선 네트워크 인터페이스에 할당하고 다른 컴퓨터의 호스트 파일에서 단일 호스트 이름을 두 IP 주소에 모두 지정하는 홈 네트워크에서이 작업을 수행했습니다. 잘 작동하는 것 같습니다.


1

에서 http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

IPv4 예

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

이 예에서 hostA에는 2 개의 IP 주소와 3 개의 별칭이 있습니다. 별명 hostB는 첫 번째 주소를 지정하고 별명 hostC 및 host-C는 두 번째 주소를 지정합니다. LSF는 공식 호스트 이름 인 hostA를 사용하여 두 IP 주소가 모두 동일한 호스트에 속하는지 식별합니다.

이 예제를 기반으로 다음 10.18.yx 192.168.zx hostA를 수행했습니다.

hostA는 서버의 호스트 이름이며 내부 네트워크 (192.168.yx)와 VPN (10.8.zx) 모두에서 도달하려고합니다.

ping hostA
sending 'ping' on 192.168.y.x [10.8.z.x]
Answer from 10.8.z.x : bytes=32 time=98 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=78 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=111 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=136 ms TTL=64

따라서 잘 작동하고 호스트 이름을 사용하여 VNP를 통해 삼바 작업을 수행 할 수 있으므로 두 경우 모두 (LAN 또는 VPN 연결) Windows에서 연결된 드라이브를 사용하는 것이 좋습니다.

친애하는.


0

@ Plamen Dimitrov 이런 종류의 밸런스를 처리 할 수있는 장치가 필요합니다. FW 앞에서 BGP를 처리 할 수있는 스위치 나 가능하다면 FW를 사용할 수있는 스위치 일 것입니다. Cisco에서 BGP를 처리하는 경우이를 구현하십시오. 이렇게하면 두 ISP의 IP를 모두 Cisco / 또는 스위치로 가져갈 수 있으며 대상 서버의 유효 IP는 24 비트 공용 IP (2 개의 ISP IP와는 다름)입니다. 이 시점에서 (3 개의 서로 다른 퍼블릭 IP 블록을 사용하고 있으며, 서버용 블록은 24 비트 여야 함) 각 ISP에이 솔루션에 대해 알리고 지원할 의사가 있어야합니다. 그들 사이에 BGP 솔루션이 있습니다. 이제 FQDN이 해결되면 1 개의 ISP 회선이 중단 되더라도 24 비트 IP 블록으로 해석됩니다. 목표는 ISP가 해당 회선을 통해 24 비트 주소를 라우팅하기로 동의했기 때문에 24 비트 주소는 항상 사용 가능합니다. VPN에 사용하는 모든 것이 24 비트 주소이기 때문에 cisco / 또는 스위치에 연결 한 ISP의 IP가 아니기 때문에 VPN에서도 작동합니다. 이때 BGP FLAPPING에주의해야합니다. DOS를받는 회선으로 인해 회선이 많이 오르 내릴 경우 DNS 주소가 인터넷에서 많이 변경되어 DNS 서버가 IP를 자동으로 제거합니다. 24 비트 IP 차단에 도움이됩니다. BGP 솔루션에 대한 DOS 공격입니다. 이때 BGP FLAPPING에주의해야합니다. DOS를받는 회선으로 인해 회선이 많이 오르 내릴 경우 DNS 주소가 인터넷에서 많이 변경되어 DNS 서버가 IP를 자동으로 제거합니다. 24 비트 IP 차단에 도움이됩니다. BGP 솔루션에 대한 DOS 공격입니다. 이때 BGP FLAPPING에주의해야합니다. DOS를받는 회선으로 인해 회선이 많이 오르 내릴 경우 DNS 주소가 인터넷에서 많이 변경되어 DNS 서버가 IP를 자동으로 제거합니다. 24 비트 IP 차단에 도움이됩니다. BGP 솔루션에 대한 DOS 공격입니다.


0

최소한 Windows 환경에서는 약간의 설명이 필요합니다. 호스트 파일에 단일 이름에 대해 두 개의 IP 주소를 가질 수 있습니다. 쿼리하면 모든 주소가 반환됩니다. 앱 (예 : 브라우저)은 연결될 때까지 차례로 연결을 시도합니다. 시간 초과 전에 모든 주소를 시도합니다. (많은 사람들이 "첫 번째"주소 만 시도 할 것이라고 생각하기 때문에 이것은 일반적인 오해입니다.)

다음 실험을 통해이를 확인할 수 있습니다.

hosts 파일에 하나 이상의 실제 주소와 다른 하나의 호스트 주소를 추가하십시오. (가짜 주소를 알파벳순으로 작게 만드십시오.) 브라우저를 열고 호스트 이름에 연결하십시오. netstat -no를 동시에 실행하십시오. 가짜 주소에 대한 연결 시도가 표시되어야합니다. (SYN_SENT에 고정됨) 브라우저는 결국 올바른 주소로 연결되어 연결됩니다. 연결이 지연되지만 작동합니다.


당신이 틀렸다는 말은 아니지만 Chrome을 사용하여 Win 10 Pro에서 시도했지만 작동하지 않았습니다. 호스트 파일을 수정하고 저장 한 다음 ipconfig /flushdns이전 해결 방법을 잊어 버렸습니다. 캐시 결과를 배제하기 위해 Chrome의 시크릿 창에서 사이트 (내 컴퓨터의 로컬)를 열려고했습니다. 방금 실패했습니다 (그리고 결국 작동하는지 확인하기 위해 몇 분 기다렸습니다). 확실하게 새로 고침을 누르십시오. 그런 다음 호스트 파일에서 가짜 IP를 주석 처리했습니다. 다른 작업을 수행하지 않고 페이지를 새로 고쳤으며 작동했습니다. Firefox에서도 마찬가지입니다.
Andrew Steitz

따라서 응용 프로그램을 기반으로 작동 할 수 있지만 두 개의 최신 브라우저에서는 작동하지 않습니다.
Andrew Steitz

-1

hosts 파일로는이 작업을 수행 할 수 없습니다.

DNS를 사용하여이 작업을 수행 할 수 없습니다. 단일 이름으로 여러 개의 IP를 제공 할 수 있지만 브라우저는 여러 개의 IP 중 하나만 선택하여 시도하고이 호스트가 현재 다운 된 경우 브라우저에 연결 오류가 표시됩니다 .

한 가지 가능한 솔루션은 프록시 서버를 설정하고이 두 IP를 서비스하는 도메인의 부모로 구성하는 것입니다. 적어도 Squid의 경우 프록시는 하나의 서버를 시도하고 실패하면 두 번째 서버를 시도합니다. 그런 다음이 프록시 서버를 사용하도록 브라우저를 구성하십시오.


사실이 아니다 라운드 로빈에 대한 : www-archive.mozilla.org/docs/netlib/dns.html 주 구글 리턴 여러 DNS 레코드의 좋아. RFC3484 재정렬에도 불구하고 분명히 여러 IP를 장애 조치 전략으로 반환하는 데 도움이됩니다.
BrianEss

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