Testowanie zdolności serwerów do obsługi określonej domeny

11

Załóżmy, że Server Askonfigurowałeś swój ulubiony demon serwera WWW do obsługi www.example.com. Teraz chcesz to przenieść Server B. Po operacji kopiowania i konfigurowania nowy serwer wydaje się gotowy. Ostatni test byłby w porządku: Przed zmianą rekordów DNS, w jaki sposób należy prosić o www.example.comserwer B, gdy rekordy DNS nadal wskazują serwer A?


Mimo że moje główne pytanie zostało udzielone, w przypadku, gdy / etc / hosts nie jest pod moją domeną wpływów, czy można przetestować go za pomocą telnetu, zamiast mówić surowym HTTP1.1 do serwera WWW?

Jarmund
źródło
8
Nie edytuj pytania, aby zadać zupełnie nowe pytanie. Ma tendencję do (nieco) unieważniania istniejących odpowiedzi, a także platforma nie wysyła powiadomień, że pytanie uległo zmianie, co sprawia, że ​​jest mało prawdopodobne, że osoby już zaangażowane w twoje pytanie ponownie sprawdzą swoje odpowiedzi. Możesz zostawić im bezpośredni komentarz, że masz dalsze pytanie. Często lepszą strategią jest zadawanie nowego pytania (prawdopodobnie wskazując na wcześniejsze pytania i odpowiedzi).
HBruijn
2
Bardzo uważam, aby głosować w dół tylko za całkowitą zmianę słupka bramki z edycją. > _ <
Wesley,

Odpowiedzi:

12

DNS to magiczna rzecz. Z wystarczającą kontrolę nad komputerem klienckim, można dokonać right.comdo wrong.coma viceversa.io. Wskocz na testowy komputer kliencki i zmarnuj rozdzielczość DNS, zmieniając plik hosta na tym kliencie, lub możesz zrobić coś nieco bardziej złożonego i dać temu hostowi prosty serwer DNS, aby mógł zapytać dnsmasq. Niezależnie od tego, w jaki sposób postępujesz w tym procesie, ostatecznym celem jest sprawienie, aby odpowiedź DNS na zapytania dotyczące www.example.comodpowiedzi z adresem IP dla serwera B. Nagłówki hosta HTTP nosiły wtedy nazwę DNS dla www.example.com, ale miały na celu Serwer B.

Magia!

Wesley
źródło
3
Jakoś /etc/hostsnie przyszło mi do głowy, a to działało idealnie. Pozdrawiam za przypomnienie!
Jarmund
2
hostsPlik nie jest zaangażowany w rozdzielczości DNS ale to zupełnie odrębny mechanizm nazwa odnośnika, że biblioteka rezolwer przewidziane przez system operacyjny klient może, w większości przypadków, stosowanie oprócz wyszukiwań w systemie DNS. Osobiście uważam, że „to magia” po prostu wpisuje się w „nie trzeba rozumieć”, co z pewnością jest złą rzeczą dla profesjonalistów.
Håkan Lindqvist,
@ HåkanLindqvist Bardzo źle zrozumiałeś kontekst i użycie tego wyrażenia.
Wesley,
W każdym razie plik hostaDNS . To jest SF; Spodziewałbym się, że ludzie tutaj, jeśli gdziekolwiek, znają różnicę.
Ilmari Karonen
@IlmariKaronen I nie powiedziałem, że pliki hostów to DNS, więc twoje oczekiwania dotyczące ServerFault zostały spełnione i wszyscy jesteśmy tutaj dobrzy! ᕕ (ᐛ) ᕗ
Wesley
11

Ważne jest, aby pamiętać, że to, co ważne, aby wykonać taki test dla HTTP, nie jest tak naprawdę związane z DNS, ale z tym, co klient HTTP wysyła jako Hostwartość nagłówka.

Klient musi oczywiście połączyć się z odpowiednim adresem IP i portem, ale poza tym wszystko sprowadza się do Hostnagłówka wbudowanego w samo żądanie HTTP.


W celu szybkiego testu można użyć następującego polecenia bez zmiany konfiguracji poziomu systemu operacyjnego na kliencie:

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

lub, jeśli o to chodzi,

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


Aby zrobić to samo ze zwykłą przeglądarką internetową, albo potrzebujesz rozszerzenia przeglądarki, które może modyfikować nagłówki żądań (lub ewentualnie proxy HTTP, które zmienia nagłówki), lub musisz zmienić konfigurację systemu operacyjnego komputera klienckiego.

Jak już wspomniano, najłatwiejszym sposobem dokonania takiej zmiany konfiguracji byłoby dodanie wpisu do hostspliku. W ten sposób biblioteka tłumacząca systemu operacyjnego otrzyma trafienie już podczas przeglądania hostspliku i nie będzie nawet musiała wyszukiwać DNS.

Inne opcje obejmują zmianę skonfigurowanych serwerów DNS na kliencie na serwer nazw, który jest skonfigurowany tak, aby odpowiadał zgodnie z potrzebami.

Håkan Lindqvist
źródło
1
+1 za rozwiązanie, które nie wymaga
wygrywania
2
Ostatnie curlpozwala zastąpić normalne rozpoznawanie nazw (DNS lub plik hosta) i nadal automatycznie wykonywać nagłówki, a także SNI, jeśli używasz / testujesz httpS. Zobacz --resolvena swojej stronie podręcznika lub na curl.haxx.se/docs/manpage.html .
dave_thompson_085
4

Możesz to przetestować za pomocą telnet. Musisz wykonać surowe żądanie HTTP, wpisując polecenia. Nie możesz popełnić żadnych błędów, a niektóre serwery mają limit czasu, więc musisz także wpisać całe żądanie w tym czasie.

Polecenie będzie wyglądać mniej więcej tak:

telnet serverb 80

Żądanie będzie wyglądać mniej więcej tak:

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

Pamiętaj, że musi kończyć się pustą linią, więc naciśnij dwukrotnie klawisz Enter po nagłówku hosta.

briantist
źródło
1
Nitpick: chociaż w nagłówkach HTTP nie rozróżniana jest wielkość liter, w nagłówku normatywnymHost nie ma wielkich liter . (I najwyraźniej niektóre serwery mogą mieć problemy z różnymi kapitalizacjami.)
Bob
@ Bob true, zredagowany
briantist
3

Zazwyczaj zmuszam www.example.com do adresu IP serwera B na moim / etc / hosts. Robiłem to, odkąd korzystałem z Mosaic i ponieważ robię to rzadko, nie czułem potrzeby, aby znaleźć coś lepszego.

Rozglądając się trochę za tobą, znalazłem /superuser/403042/custom-host-file-for-firefox, na który odpowiada https://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard /, ale ostatnio pojawiła się informacja, że ​​jest porzucony.

Law29
źródło
W odpowiedzi na Twoją edycję z prośbą o metodę testową bez / etc / hosts, tak, istnieje. Byłby to albo telnet do bardzo podstawowych testów, dodatek taki jak wspomniałem w mojej odpowiedzi powyżej, albo niestandardowo skonfigurowany serwer proxy, lub (i to jest metoda, którą wolałbym) ServerAlias ​​na serwerze B, powiedzmy www2.przykład. com.
Ustawa 29
3

Jeśli chcesz sprawdzić, czy to działa, radzę prosty broswer jak wtyczki Modify Headersdla Firefoksa i zmienić HOSTsię www.mydomain.com.

bukk530
źródło