특정 도메인에 서비스를 제공하는 서버 기능 테스트


11

Server A가장 좋아하는 webserver-daemon을 사용하여 설정 했다고 가정 해보십시오 www.example.com. 이제 이것을로 이동하고 싶습니다 Server B. 많은 복사 및 구성 후에 새 서버가 준비된 것 같습니다. 최종 테스트는 다음과 같습니다. DNS 레코드를 변경하기 전에 www.example.comDNS 레코드가 여전히 서버 A를 가리킬 때 서버 B에 요청하는 방법은 무엇입니까?


내 주요 질문에 대한 답변이 있지만 / etc / hosts가 영향을 미치지 않는 경우 대신 웹 서버에 원시 HTTP1.1을 말함으로써 텔넷으로 테스트 할 수 있습니까?


8
완전히 새로운 질문을하기 위해 질문을 편집하지 마십시오. 기존 답변을 (약간) 무효화하는 경향이 있으며 플랫폼은 질문이 변경되었다는 알림을 보내지 않으므로 이미 질문에 관련된 사람들이 답변을 다시 볼 가능성이 없습니다. 후속 질문이 있다고 직접 의견을 남길 수 있습니다. 더 나은 전략은 종종 새로운 질문을하는 것입니다.
HBruijn

2
편집을 통해 완전한 골 포스트 이동을 위해 투표를 크게 고려합니다. > _ <
Wesley

답변:


12

DNS는 마술이다. 클라이언트 PC를 충분히 제어하면 및 right.com로 만들 수 있습니다 . 테스트 클라이언트 PC로 이동하여 해당 클라이언트의 호스트 파일을 변경하여 DNS 확인을 수행하거나 조금 더 복잡한 작업을 수행하고 해당 호스트에 쿼리 할 간단한 DNS 서버를 제공하십시오 . 프로세스에 대해 어떤 방법을 사용하든 궁극적 인 목표는 서버 B의 IP 주소로 응답하는 것에 대한 쿼리에 대한 DNS 응답을 만드는 것입니다 . HTTP 호스트 헤더는 www.example.com의 DNS 이름을 가지지 만 목표는 다음과 같습니다. 서버 B.wrong.comviceversa.iodnsmasqwww.example.com

마법!


3
어떻게 든 /etc/hosts나에게 발생하지 않았으며 이것은 완벽하게 작동했습니다. 알림을 위해 건배!
Jarmund

2
hosts파일은 DNS 확인에 관여하지 않지만 클라이언트 OS에서 제공하는 리졸버 라이브러리는 대부분의 경우 DNS 조회 이외에도 사용할 수있는 완전히 별개의 이름 조회 메커니즘입니다. 개인적으로 저는 "이것이 마술"이라고 생각하면 "이해할 필요가 없습니다"라고 생각합니다. 이는 전문가에게는 확실히 나쁜 일입니다.
Håkan Lindqvist

@ HåkanLindqvist 문구의 문맥과 사용법을 잘못 이해했습니다.
Wesley

어쨌든 호스트 파일DNS . 이것은 SF입니다. 나는 여기 사람들이 그 차이를 알기를 기대합니다.
Ilmari Karonen

@IlmariKaronen 그리고 호스트 파일이 DNS라고 말하지 않았으므로 ServerFault에 대한 기대가 충족되었으며 우리 모두 여기에 있습니다! ᕕ (ᐛ) ᕗ
Wesley

11

HTTP에 대해 이와 같은 테스트를 수행하는 데 중요한 것은 실제로 DNS와 관련이 없으며 HTTP 클라이언트가 Host헤더 값으로 보내는 것 입니다.

클라이언트는 분명히 올바른 IP 주소와 포트에 연결해야하지만 그 이상 Host은 HTTP 요청 자체에 인라인 인 헤더로 연결됩니다.


빠른 테스트를 위해 클라이언트에서 운영 체제 레벨 구성을 변경하지 않고 다음 명령을 사용할 수 있습니다.

$ curl -H "Host: www.example.com" http://192.0.2.17/foo/bar

또는 그 문제에 대해

$ curl -H "Host: www.example.com" http://beta.example.com/foo/bar


일반 웹 브라우저와 동일한 작업을 수행하려면 요청 헤더 (또는 헤더를 변경하는 HTTP 프록시)를 수정할 수있는 브라우저 확장이 필요하거나 클라이언트 시스템 운영 체제의 구성을 변경해야합니다.

언급 한 바와 같이, 구성 변경을 수행하는 가장 쉬운 방법은 hosts파일에 항목을 추가하는 것 입니다. 이렇게하면 클라이언트 OS 리졸버 라이브러리가 hosts파일을 참조 할 때 이미 히트를 받았으며 DNS 조회를 수행 할 필요조차 없습니다.

다른 옵션으로는 클라이언트에서 구성된 DNS 확인자 서버를 원하는대로 응답하도록 설정된 네임 서버로 변경하는 것이 있습니다.


1
이름 확인 기능을 사용하지 않는 솔루션의 경우 +1
Jarmund

2
최근을 curl사용하면 일반 이름 확인 (DNS 또는 호스트 파일)을 무시 하고 여전히 헤더를 자동으로 수행하고 httpS를 사용 / 테스트하는 경우 SNI도 수행 할 수 있습니다. --resolve맨 페이지 또는 curl.haxx.se/docs/manpage.html을 참조하십시오 .
dave_thompson_085

4

로 테스트 할 수 있습니다 telnet. 명령을 입력하여 원시 HTTP 요청을 작성해야합니다. 실수를 할 수 없으며 일부 서버에는 시간 초과가 있으므로 해당 시간 내에 전체 요청을 입력해야합니다.

명령은 다음과 같습니다.

telnet serverb 80

요청은 다음과 같습니다.

GET / HTTP/1.1
Host: www.example.com

빈 줄로 끝나야하므로 호스트 헤더 다음에 Enter 키를 두 번 누릅니다.


1
Nitpick : HTTP 헤더는 대소 문자를 구분 하지 않지만 표준 Host헤더 는 모두 대문자가 아닙니다. (그리고 일부 서버 는 다른 대문자 사용에 문제가있을 수 있습니다.)
Bob

@Bob

3

내가 보통하는 일은 www.example.com을 / etc / hosts의 서버 B IP 주소로 강제하는 것입니다. 모자이크를 사용한 이후로 자주 해왔으며, 자주 사용하기 때문에 더 잘 찾아야 할 필요성을 느끼지 못했습니다.

조금 둘러보고 /superuser/403042/custom-host-file-for-firefox 를 찾았 으며 https://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard / 하지만 포기되었다는 최근의 메모가 있습니다.


/ etc / hosts없이 테스트 방법을 요구하는 편집에 응답합니다. 매우 기본적인 테스트를위한 텔넷, 위의 답변에서 언급 한 애드온 또는 사용자 정의 프록시 또는 www2.example 서버 B의 ServerAlias입니다. com.
법 29

3

당신이 그것을 작동하는지 확인해야하는 경우, 내가 좋아하는 간단한이 broswer 플러그인 조언 Modify Headers파이어 폭스를하고, 변경 HOSTwww.mydomain.com.

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