DNS / Ana Bilgisayar Adlarını veya Belirli bir IP’yi çözmek için diğer yolları kullanma: Bağlantı noktası


51

Bu, IP / Bağlantı Noktalarına DNS / Ana Bilgisayar Adlarının çözünürlüğü ile ilgili Kanonik bir Soru

örnek 1

Bir web sunucusunu 80 numaralı bağlantı noktasında ve başka bir bağlantı noktasını 87 numaralı bağlantı noktasında kullanıyorum. DNS kullanmak istiyorum, böylece www.example.com 87 numaralı bağlantı noktasına gider.

Örnek 2

Sunucumda standart olmayan bir bağlantı noktasında hizmet çalıştırıyorum. İstemcilerin bu standart olmayan bağlantı noktasına otomatik olarak bağlanmasını nasıl sağlayabilirim? DNS kullanabilir miyim? DNS'nin IP ve Bağlantı Noktasını gösterebileceği belirli bir uygulamaya özel destek var mı?

Örnek 3

Bazı uygulama protokolleri özellikle ana bilgisayar adı bilincini destekliyor mu ve bu bilgilere dayanarak özel işlemlerin yapılmasına izin veriyor mu? Bunlardan bazılarını kapsayan Sunucu Hatası ile ilgili başka sorular var mı?

Commandeering:Bu soru başlangıçta aynı sunucuda IIS ve Apache çalıştırmayı soruyordu, ancak aynı kavramlar istemcilerden bağlantı alan herhangi bir sunucu yazılımına da uygulanabilir. Aşağıdaki Yanıtlar, bir müşterinin bağlanabileceği bir bağlantı noktası numarası atamak için DNS ve uygulama protokolü desteğini kullanmanın teknik sorunlarını ve çözümlerini açıklar.


Üçüncü örnekle ilgili olarak, okuyucular, keyfi protokolleri hostname-farkında yapma konusundaki kanonik sorumumuzu da incelemek isteyebilirler .
MadHatter

Yanıtlar:


34

Bir bağlantı noktasını işaret etmek için DNS'yi kullanamazsınız (istemci SRV kayıtlarını desteklemediği sürece çoğu kullanmaz).

Ana Bilgisayar Başlıkları ile Web Siteleri ve Protokoller

Bunu yapmak için bazı ön uç yöntemlerini uygulamanız gerekecek. Genellikle, başlıkta talep edilen sunucunun adına bağlı olarak bağlantıyı 80'den bağlantı noktasına! 80'e iletmek için bir ön uç web sunucusu veya özel bir proxy yazılımı kullanırsınız. Bazı güvenlik duvarları da ana bilgisayar başlığına göre iletilebilir.

SRV Kayıtları

Bazı istemciler, belirtilen hizmet için sunucunun ana bilgisayar adını ve bağlantı noktası numarasını belirten SRV kayıtlarının aranmasını destekler (yani kullanıcı "example.com" olarak belirlenir, istemci bir SRV kaydı arar ve "bağlantı noktası" üzerinden "server101.example.com" alır 255 "; o zaman buna bağlanır). Bazı müşteriler bunu gerekmediği yerlerde de uygular (örneğin, son akıllı telefonum örneğin yeni bir e-posta hesabı kurarken SRV kayıtlarını arar).

Ne yazık ki SRV kayıtları için destek oldukça nadirdir. Yalnızca birkaç önemli protokol desteği (Jabber / XMPP, Kerberos, LDAP, SIP) zorunludur ve her müşteri zorunlu olsa bile desteklememektedir.


15

Eğer yazdığınızda http://www.domain.com tarayıcınıza, zaten bir hizmet varsa port 87 için www.domain.com işaret için doğrudan bir yol yoktur, HTTP portu nedenle 80 üzerinde olduğu anlaşılmaktadır IIS'de bu bağlantı noktasında çalışıyor.

Olduğu söyleniyor, birkaç "geçici çözümler" vardır.

  • Sadece http://www.domain.com:87/ kullanın - bu sunucunuzdaki 87 numaralı bağlantı noktasına (apache) bağlanacaktır.
  • Bir yeniden yönlendirme kurabilirsiniz, böylece http://www.domain.com/apache , www.domain.com:87 adresine yönlendirmek için (ya da beğenmek istiyorsanız vekil) yönlendirilir.
  • Bir "VirtualHost" kurabilirsiniz, böylece www.domain2.com hala www.domain.com ile paylaşılan 80 numaralı bağlantı noktasında olacaktır. IIS'yi değiştirmeden bunu ayarlayamazsınız.

Sam haklı, DNS portlara gelince çok iyi durumda. Herhangi bir bağlantı noktası yeniden yönlendirmesi, o bağlantı noktasında çalışan hizmet tarafından gerçekleşir. Bu nedenle, bunu gerçekleştirmek için IIS ile bir şeyler yapmanız gerekecek, eğer 80 numaralı bağlantı noktasında bırakmaktan başka seçeneğiniz yoksa.

Durumunuzu Apache'de mod_proxy kullanarak da çözdüm, bunu IIS ile yapmanın bir yolu olup olmadığından emin değilim.


Tamam, peki nasıl IIS üzerinde proxy ayarlanır?
Tomasz Smykowski

2
IIS7 ise, Uygulama İsteği Yönlendirmesini (ARR) kullanabilirsiniz.
Scott Forsyth - MVP

1
Scott, ARR ile ilgili dokümantasyon için iyi bir bağlantın var mı?
Jacques

12

Korkarım alan adları sadece bir IP adresiyle ilişkili olabilir, bir port ile ilişkilendirilemez.

Çoğu web sunucusu (örneğin, Apache, IIS vb.), Web isteklerinin, isteğin kendi alanını tanımlayan bir ana bilgisayar başlık alanı içerdiği gerçeğini kullanarak aynı IP adresinde iki alan barındırmanıza izin verir.

Kullandığınız web sunucusunun ne olduğunu söylerseniz, sunucunuzu istediğiniz gibi ayarlamak için insanların sizi ilgili belgelere yönlendirebileceğinden eminim.


Mesele bu. İki farklı web sunucusu kullanıyorum.
Omar Abid

12

Teknik olarak, RFC 2782'de tanımlandığı gibi DNS sunucularında SRV kayıtlarını kullanarak tarayıcılara hangi sunucuların http üzerinde bir (alt) etki alanı için hangi bağlantı noktalarını kullandığını söyleyebilirsiniz:

_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.

Bu, özellikle SRV kayıtlarının kullanımının protokol şartnamesinde önceden tanımlandığı yerlerde, birçok protokol / hizmet için işe yarar.

Ancak bu " Utanç Hali " nin belirttiği gibi, web tarayıcılarının / istemcilerinin çoğu bunu desteklememektedir (HTTP için). Ayrıca neden tarayıcılar-değil-kullan-srv kayıtlarını görün .

Anlaşma temel olarak, SRV'nin http protokolüne bir zorunluluk olarak dahil edilmemesi, bu yüzden onu uygulayan her tarayıcı URL'leri olmayan tarayıcılardan farklı şekilde çözüyor.

Bu yüzden bunu sadece isteğe bağlı bazı yük dengelemesi olarak kullanmalısınız, burada içerik bakımından hangi sunucunun seçildiği ile ilgili değildir. "İsteğe bağlı", yalnızca birkaç istemci bunu uygularsa yükün çoğunu dengeleyemeyeceği için.


6

DNS, belirli bir Bağlantı Noktasına yönlendirme yeteneğine sahip değildir, tüm DNS'nin umurunda olduğu bir adın IP adres çözünürlüğüdür ve bunun tersi de geçerlidir.

NO-IP gibi Dinamik IP DNS sağlayıcıları gibi bazı servisler, IP'lerin evdeki DNS hizmetlerinde engellenmesine benzer bir şey yapmanıza yardımcı olabilecek bir seri sağlar.


Bazı kayıt şirketleri (GoDaddy), park edilmiş sunucuları üzerinden alan adı iletimi sunar. Bunu bir şans verebilirsin, ama biraz çamur. Alternatif olarak, SRV kayıtlarını arayan kendi web tarayıcınızı yazabilir ve ardından dünyayı onu kullanmaya ikna etmeye çalışabilirsiniz :)
Jason Antman

6

Kullanmak için herhangi bir standart olmayan bağlantı noktası üzerinde (TBT) hizmet ve URI noktasını yazmayın, herkes RFC 2782 tanımlanan SRV kayıtlarını kullanabilirsiniz.

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

Bölgedeki diğer tüm http-ana bilgisayarları hala varsayılan 80


3
1 Aşağıdaki tabloların birkaç kadarıyla Spec giderse, yanlış olduğunu işaret için - DNS kesinlikle olabilir SRV kayıtları üzerinden bir hizmet portu işaret eder. Ancak aynı zamanda müşterinin önce SRV kaydını sormayı bildiğini varsayar.
mcauth

2

En basit yol, bir ters vekil kullanmak ve onu web vekiliniz olarak ayarlamaktır. A nginxveya apachebunun için yapılandırabilirsiniz . Temelde geçmişte aynı problemi yaşadım ve bu tür bir yapılandırmayı basit bir şekilde elde etmek için bir araç yaptım. Ergo: https://github.com/cristianoliveira/ergo

Bunu kullanıyorum ve temelde çekicilik gibi çalışıyor :)


0

Aynı ana bilgisayarda iki web sunucusu dağıtmaya yönelik bir yaklaşım, her ikisinin de 80 numaralı bağlantı noktasını iki farklı IPv6 adresinde dinlemektir. IPv6 resmi olarak bir arayüze iki adres atayabileceğinizi ve adresleri tükenmeden yapabileceğiniz yeterli IPv6 adresi olduğunu belirtir.

Bu gelecekteki kanıtıdır ve iki etki alanınızın her birinin farklı IP adreslerine işaret eden AAAA kayıtları olabilir, böylece etki alanları farklı web sunucularında son bulur.

Tek bir IPv4 adresiniz varsa, ters proxy çalıştırmak için IPv4 adresindeki 80 numaralı bağlantı noktasını kullanabilirsiniz. Bu şekilde yalnızca IPv4 istemcileri her iki web sunucunuza da erişebilir. Ters proxy yaklaşımı, bazı web sunucuları ters proxy ile aynı ana bilgisayardayken ve bazı web sunucularının diğer ana bilgisayarlarda olması durumunda bile çalışır.

Böyle bir kurulumda example.orgadreslerine sahip olabileceği 192.0.2.1ve 2001:db8::1süre example.netadresleri vardır 192.0.2.1ve 2001:db8::2.

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.