DNS / 호스트 이름 또는 다른 방법으로 특정 IP를 확인하는 방법 :


51

이것은 IP / 포트에 대한 DNS / 호스트 이름 확인에 대한 정식 질문입니다

실시 예 1

포트 80에서 웹 서버를 실행하고 포트 87에서 웹 서버를 실행하고 있습니다. www.example.com이 포트 87로 이동하도록 DNS를 사용하고 싶습니다. DNS 만 사용하여이 작업을 수행하려면 어떻게해야합니까?

실시 예 2

비표준 포트의 서버에서 서비스를 실행하고 있습니다. 클라이언트가이 비표준 포트에 자동으로 연결되도록하려면 어떻게해야합니까? DNS를 사용할 수 있습니까? DNS가 IP 및 포트를 표시 할 수있는 응용 프로그램 별 지원이 있습니까?

실시 예 3

일부 응용 프로그램 프로토콜은 특히 호스트 이름 인식을 지원하고이 정보를 기반으로 특별한 조치를 취할 수 있습니까? 서버 결함에 대한 다른 질문이 있습니까?

Commandeering:이 질문은 원래 동일한 서버에서 IIS와 Apache를 실행하는 것에 대한 질문이지만 클라이언트로부터 연결을받는 모든 서버 소프트웨어에 동일한 개념을 적용 할 수 있습니다. 아래 답변은 DNS 및 응용 프로그램 프로토콜 지원을 사용하여 클라이언트가 연결할 포트 번호를 지정하는 데 따른 기술적 문제와 해결 방법을 설명합니다.


예제 3과 관련하여 독자는 임의의 프로토콜을 hostname-aware로 만드는 것에 대한 표준 질문을 검토 할 수도 있습니다 .
MadHatter

답변:


34

클라이언트가 SRV 레코드를 지원하지 않는 한 DNS를 사용하여 포트를 가리킬 수 없습니다.

호스트 헤더가있는 웹 사이트 및 프로토콜

이렇게하려면 프런트 엔드 방법을 사용해야합니다. 일반적으로 프런트 엔드 웹 서버 또는 전용 프록시 소프트웨어를 사용하여 헤더에서 요청되는 서버 이름에 따라 포트 80에서 포트! 80으로 연결을 전달합니다. 일부 방화벽은 호스트 헤더를 기반으로 전달할 수도 있습니다.

SRV 레코드

일부 클라이언트는 지정된 서비스에 대한 서버의 호스트 이름 및 포트 번호를 나타내는 SRV 레코드 조회를 지원합니다 (예 : 사용자가 "example.com"을 지정하면 클라이언트는 SRV 레코드를 찾아 포트 "255에서"server101.example.com "을 얻습니다. "; 그런 다음 연결합니다). 일부 클라이언트는 필요하지 않은 곳에서도이를 구현합니다 (예 : 마지막 스마트 폰은 새 전자 메일 계정을 설정할 때 SRV 레코드를 조회합니다).

불행히도 SRV 레코드에 대한 지원은 흔하지 않습니다. 주목할만한 프로토콜 중 일부만이 지원 (Jabber / XMPP, Kerberos, LDAP, SIP)을 요구하며, 모든 클라이언트가 위임 된 경우에도 지원하지는 않습니다.


15

브라우저에 http://www.domain.com 을 입력 하면 HTTP 포트가 80임을 알 수 있습니다. 따라서 이미 서비스가있는 경우 www.domain.com을 포트 87로 지정할 수있는 직접적인 방법은 없습니다 IIS의 해당 포트에서 실행 중입니다.

그러나 몇 가지 "해결 방법"이 있습니다.

  • 그냥 사용 http://www.domain.com:87/ 이 서버에 포트 87 (아파치)에 연결됩니다 -.
  • http://www.domain.com/apache 가 www.domain.com:87로 전달되도록 (또는 프록시를 사용하려는 경우 프록시) 리디렉션을 설정할 수 있습니다 .
  • www.domain2.com이 여전히 포트 80에 있고 www.domain.com과 공유되도록 "VirtualHost"를 설정할 수 있습니다. IIS를 수정하지 않고는 설정할 수 없습니다.

Sam은 옳습니다. DNS는 포트와 관련하여 불가지론합니다. 모든 종류의 포트 리디렉션은 해당 포트에서 실행되는 서비스에 의해 발생합니다. 따라서 포트 80에 그대로 둘 수밖에없는 경우 IIS를 사용하여이 작업을 수행해야합니다.

또한 Apache에서 mod_proxy를 사용하여 상황을 극복했습니다 .IIS 로이 작업을 수행하는 방법이 있는지 확실하지 않습니다.


그렇다면 IIS에서 프록시를 설정하는 방법은 무엇입니까?
Tomasz Smykowski

2
IIS7 인 경우 ARR (Application Request Routing)을 사용할 수 있습니다.
Scott Forsyth-MVP

1
스캇, ARR에 대한 문서화를위한 링크가 있습니까?
Jacques

12

도메인 이름은 포트가 아닌 IP 주소에만 연결할 수 있습니다.

대부분의 웹 서버 (예 : Apache, IIS 등)에서는 웹 요청에 요청 자체에서 도메인을 식별하는 호스트 헤더 필드가 포함되어 있다는 사실을 사용하여 동일한 IP 주소에서 두 개의 도메인을 호스팅 할 수 있습니다.

웹 서버가 무엇을 사용하고 있는지 말하면 사람들이 원하는대로 서버를 설정하기 위해 관련 문서를 가리킬 수 있습니다.


그게 요점입니다. 두 개의 다른 웹 서버를 사용하고 있습니다.
Omar Abid

12

기술적 으로 RFC 2782 에 정의 된 대로 DNS 서버에서 SRV 레코드 를 사용 하여 브라우저에 (서브) 도메인의 포트를 http로 처리하는 서버를 알려줄 수 있습니다.

_http._tcp.www.example.com.  IN      SRV 0    5      80   www.example.com.
_http._tcp.www2.example.com. IN      SRV 0    5      87   www.example.com.

이는 특히 프로토콜 사양에 SRV 레코드 사용이 정의되어있는 경우 많은 프로토콜 / 서비스에 적합합니다.

그러나이 " Hall of Shame "상태에서는 대부분의 웹 브라우저 / 클라이언트가이를 지원하지 않습니다 (HTTP의 경우). why-do-browsers-not-use-srv-records 도 참조하십시오 .

기본적으로 SRV는 http 프로토콜에 필수 항목으로 포함되지 않으므로이를 구현하는 모든 브라우저는 URL을 그렇지 않은 브라우저와 다르게 해석합니다.

따라서이 옵션을 선택적인로드 밸런싱으로 만 사용해야합니다. 여기서 컨텐츠 측면에서 어떤 서버를 선택하는지는 관련이 없습니다. "선택 사항"은 클라이언트가이 기능을 구현하는 경우가 거의없는 경우 많은 부하를 분산시키지 않기 때문입니다.


6

DNS에는 특정 포트로 리디렉션 할 수있는 기능이 없으며 모든 DNS 관리는 이름의 IP 주소 확인이며 그 반대도 마찬가지입니다.

NO-IP 와 같은 동적 IP DNS 공급자와 같은 일부 서비스 는 가정용 DNS 서비스에서 IP의 라운드 차단과 유사한 작업을 수행하는 데 도움이되는 서비스를 제공합니다.


일부 등록 기관 (GoDaddy)은 파킹 된 서버를 통해 도메인 포워딩을 제공합니다. 당신은 그 기회를 줄 수 있지만 약간의 혼란입니다. 또는 SRV 레코드를 검색하는 웹 브라우저를 직접 작성하여 전 세계에서 사용하도록 설득 할 수 있습니다.
Jason Antman

6

사용하기 위해서는 어떤 표준이 아닌 포트 (TBT) 서비스를하고 URI의 포트를 작성하지 않는, 모두가 RFC 2782에 정의 된 SRV 레코드를 사용할 수 있습니다.

_http._tcp.www.example.com. IN      SRV 0    5      87   www.example.com.

영역의 다른 모든 http 호스트는 여전히 기본 포트 80에서 제공됩니다.


3
사양이 적용되는 한 아래의 설명 중 일부가 잘못되었음을 지적한 +1-DNS 는 SRV 레코드를 통해 서비스 포트를 절대적으로 나타낼 수 있습니다 . 그러나 클라이언트가 SRV 레코드를 먼저 요청하는 것으로 알고 있다고 가정합니다.
mcauth

2

가장 간단한 방법은 리버스 프록시를 사용하여 웹 프록시로 설정하는 것입니다. 당신은 구성 할 수 있습니다 nginx또는 apache그것을 위해. 나는 과거에 기본적으로 같은 문제가 있었고 간단한 구성으로 그러한 구성을 달성하는 도구를 만들었습니다. 에르고 : https://github.com/cristianoliveira/ergo

나는 이것을 사용하고 기본적으로 매력처럼 작동합니다 :)


0

동일한 호스트에 두 개의 웹 서버를 배포하는 한 가지 방법은 두 개의 웹 서버가 두 개의 서로 다른 IPv6 주소에서 포트 80을 수신하도록하는 것입니다. IPv6은 공식적으로 인터페이스에 두 개의 주소를 할당 할 수 있도록 지정하며 주소가 부족하지 않은 경우이를 수행 할 수있는 충분한 IPv6 주소가 있습니다.

이것은 미래의 증거이며 두 도메인에는 각각 다른 IP 주소를 가리키는 AAAA 레코드가있을 수 있으므로 도메인은 다른 웹 서버에있게됩니다.

단일 IPv4 주소가있는 경우 IPv4 주소에서 포트 80을 사용하여 리버스 프록시를 실행할 수 있습니다. 이렇게하면 IPv4 전용 클라이언트가 두 웹 서버 모두에 액세스 할 수 있습니다. 리버스 프록시 접근 방식은 일부 웹 서버가 리버스 프록시와 동일한 호스트에 있고 일부 웹 서버가 다른 호스트에있는 경우에도 작동합니다.

이러한 설정에서 example.org주소를 가질 수 192.0.2.1하고 2001:db8::1있는 동안은 example.net주소를 가지고 192.0.2.12001:db8::2.

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