Sunucuların belirli bir etki alanını sunma yeteneğini sınama


11

Diyelim ki Server Aen sevdiğiniz web sunucusu-arka plan programı ile hizmet verdiniz www.example.com. Şimdi bunu taşımak istiyorsun Server B. Bir grup kopyalama ve yapılandırma işleminden sonra, yeni sunucu hazır görünüyor. Son bir test sırası: DNS kayıtlarını değiştirmeden önce www.example.com, DNS kayıtları hala A sunucusuna işaret ettiğinde Sunucu B'den nasıl istenir ?


Ana sorum yanıtlanırken, / etc / hostların etki alanım altında olmaması durumunda, web sunucusuna ham HTTP1.1 konuşarak telnet ile test etmek mümkün müdür?


8
Lütfen tamamen yeni bir soru sormak için sorunuzu düzenlemeyin. Mevcut cevapları (bir şekilde) geçersiz kılma eğilimindedir ve ayrıca platform bir sorunun değiştiğine dair bildirimler göndermez, bu da sorunuzla zaten ilgilenen kişilerin cevaplarını tekrar gözden geçirmesi olasılığını ortadan kaldırır. Takip eden bir sorunuz olduğunda onlar için doğrudan bir yorum bırakabilirsiniz. Genellikle daha iyi bir strateji bunun yerine yeni bir soru sormaktır (muhtemelen önceki soru-cevap bölümünüzü işaret eder).
HBruijn

2
Düzenleme ile sadece tam goalpost kayması için aşağı oy dikkate alınıyor. > _ <
Wesley

Yanıtlar:


12

DNS büyülü bir şeydir. Bir istemci bilgisayar üzerinde yeterli kontrol ile ve right.comiçine yapabilirsiniz . Bir sınama istemci bilgisayarına atlayın ve o istemcideki ana makine dosyasını değiştirerek DNS çözünürlüğü ile uğraşın ya da biraz daha karmaşık bir şey yapabilir ve bu ana bilgisayara sorgulamak için basit bir DNS sunucusu verebilirsiniz . Her iki yöntemde de devam ederseniz, nihai hedef Sunucu B'nin IP adresiyle yanıtlamaya ilişkin sorgular için DNS yanıtını yapmaktır . HTTP ana bilgisayar üstbilgileri www.example.com için DNS adını taşır, ancak Sunucu B.wrong.comviceversa.iodnsmasqwww.example.com

Sihirli!


3
Bir şekilde /etc/hostsbana olmadı ve bu mükemmel çalıştı. Hatırlatma için şerefe!
Jarmund

2
hostsDosya dahil edilmez DNS çözümlemesi ancak tamamen ayrı bir ad arama mekanizma olduğunu may, ve çoğu durumda istemci işletim sistemi tarafından sağlanan çözümleyici kütüphane olacak, DNS aramalarının yanı sıra kullanım. Şahsen ben "sihirli" bir bit sadece "anlamaya gerek yok" beslenir düşünüyorum, ki bu kesinlikle profesyoneller için kötü bir şey.
Håkan Lindqvist

@ HåkanLindqvist İfadenin içeriğini ve kullanımını kesinlikle yanlış anladınız.
Wesley

Her durumda, ana dosyaDNS . Bu SF; Buradaki insanların, her yerde, farkı bilmesini beklerdim.
Ilmari Karonen

@IlmariKaronen Ve sunucu dosyalarının DNS olduğunu söylemedim, bu yüzden ServerFault için beklentileriniz karşılandı ve hepimiz burada iyiyiz! ᕕ (ᐛ) ᕗ
Wesley

11

HTTP için böyle bir test yapmak için önemli olanın DNS ile gerçekten ilgili olmadığını, HTTP istemcisinin Hostbaşlık değeri olarak ne gönderdiğini not etmek önemlidir .

İstemcinin doğru IP adresine ve bağlantı noktasına bağlanması gerektiği açıktır, ancak bunun ötesinde her şey HostHTTP isteğinin satır içi olan başlığa gelir .


Hızlı bir test için, istemcideki herhangi bir işletim sistemi düzeyi yapılandırmasını değiştirmeden aşağıdaki komut kullanılabilir:

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

veya bu konu için,

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


Aynı şeyi normal bir web tarayıcısıyla yapmak için, istek üstbilgilerini değiştirebilen bir tarayıcı uzantısına (veya muhtemelen üstbilgileri değiştiren bir HTTP proxy'ye) ihtiyacınız olacak veya istemci makine işletim sisteminin yapılandırmasını değiştirmeniz gerekecektir.

Daha önce de belirtildiği gibi, böyle bir yapılandırma değişikliği yapmanın en kolay yolu hostsdosyaya bir girdi eklemek olacaktır . Bu şekilde, istemci işletim sistemi çözümleyici kitaplığı, hostsdosyaya danışılırken zaten bir hit alır ve hatta bir DNS araması yapmak zorunda kalmaz.

Diğer seçenekler, istemcideki yapılandırılmış DNS çözümleyici sunucularını, istendiği gibi yanıt verecek şekilde ayarlanmış bir ad sunucusuna değiştirmeyi içerir.


1
Ad çözümlemesi ile
uğraşmayı

2
Recent curl, normal ad çözümlemesini (DNS veya hostfile) geçersiz kılmanıza ve yine de otomatik olarak üstbilgiler ve httpS kullanıyorsanız / sınaması durumunda SNI yapmanıza olanak tanır. Bkz --resolvesenin kılavuz sayfasındaki veya en curl.haxx.se/docs/manpage.html .
dave_thompson_085

4

Bunu ile test edebilirsiniz telnet. Komutları yazarak ham bir HTTP isteği yapmanız gerekir. Herhangi bir hata yapamazsınız ve bazı sunucular zaman aşımına sahiptir, bu nedenle tüm isteği o zaman dilimi içinde yazmanız gerekir.

Komut böyle bir şey olacaktır:

telnet serverb 80

İstek şu şekilde görünecektir:

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

Boş bir satırla bitmesi gerektiğini unutmayın, bu nedenle ana bilgisayar üstbilgisinden iki kez enter tuşuna basarsınız.


1
Nitpick: HTTP üstbilgilerinin büyük / küçük harfe duyarlı olması gerekmese de, normatif Hostüstbilginin tamamı büyük harf değildir. (Ve görünüşe göre bazı sunucular farklı büyük harflerle sorun yaşayabilir.)
Bob

@Bob gerçek, düzenlenmiş
briantist

3

Genellikle yaptığım şey, www.example.com adresini / etc / hosts içindeki sunucu B IP adresine zorlamaktır. Bunu Mosaic'i kullandığımdan beri yapıyorum ve nadiren yaptığımdan beri daha iyi bulma gereğini hissetmedim.

Sizin için biraz etrafa buldum /superuser/403042/custom-host-file-for-firefox tarafından cevaplanır hangi https://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard / / ancak terk edildiğini söyleyen çok yeni bir not var.


Düzenlemenize / etc / hosts olmayan bir test yöntemi sorarak yanıt verin, evet, var. Çok temel testler için telnet, yukarıdaki cevabımda bahsettiğim gibi bir eklenti veya özel yapılandırılmış bir proxy veya (ve bu tercih edeceğim yöntem) www2.example sunucusunun B sunucusundaki bir ServerAlias ​​olacaktır. com.
Kanun29

3

Eğer çalışıp çalışmadığını kontrol etmek gerekiyorsa, ben gibi basit broswer eklentisi tavsiye Modify HeadersFirefox için ve değiştirmek HOSTiçin www.mydomain.com.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.