Ini adalah Pertanyaan Canonical tentang resolusi DNS / Hostnames ke IP / Port
Contoh 1
Saya menjalankan server web pada port 80 dan yang lain pada port 87. Saya ingin menggunakan DNS sehingga www.example.com masuk ke port 87. Bagaimana saya bisa melakukannya hanya dengan DNS?
Contoh 2
Saya menjalankan layanan di server saya pada port non-standar. Bagaimana saya bisa membuat klien terhubung ke port non-standar ini secara otomatis? Bisakah saya menggunakan DNS? Apakah ada dukungan khusus aplikasi di mana DNS dapat menunjukkan IP dan Port?
Contoh 3
Apakah beberapa protokol aplikasi secara khusus mendukung kesadaran nama host, dan memungkinkan tindakan khusus diambil berdasarkan informasi ini? Apakah ada pertanyaan lain tentang Kesalahan Server yang mencakup sebagian dari ini?
Commandeering:
Pertanyaan ini pada awalnya menanyakan tentang menjalankan IIS dan Apache pada server yang sama, tetapi konsep yang sama dapat diterapkan pada perangkat lunak server yang menerima koneksi dari klien. Jawaban di bawah ini menjelaskan masalah teknis dan solusi penggunaan DNS dan dukungan protokol aplikasi untuk menetapkan nomor port yang akan disambungkan klien.
sumber
Jawaban:
Anda tidak dapat menggunakan DNS untuk menunjuk ke port (kecuali klien mendukung catatan SRV, kebanyakan tidak).
Situs web dan Protokol dengan Header Host
Anda harus meletakkan beberapa metode front-end untuk melakukan ini. Biasanya Anda akan menggunakan server web ujung depan atau perangkat lunak proxy khusus untuk meneruskan koneksi dari port 80 ke port! 80 berdasarkan nama server yang diminta di header. Beberapa firewall juga dapat maju berdasarkan header host juga.
Catatan SRV
Beberapa klien mendukung pencarian catatan SRV yang menunjukkan nama host dan nomor port server untuk layanan yang ditentukan (yaitu pengguna menentukan "example.com", klien mencari catatan SRV dan mendapatkan "server101.example.com" pada port "255 "; kemudian terhubung dengan itu). Beberapa klien juga menerapkan ini di tempat yang tidak diperlukan (ponsel cerdas saya yang terakhir akan mencari catatan SRV saat membuat akun email baru misalnya).
Sayangnya dukungan untuk catatan SRV sangat jarang. Hanya beberapa protokol penting yang mengamanatkan dukungannya (Jabber / XMPP, Kerberos, LDAP, SIP) dan tidak setiap klien mendukungnya bahkan ketika diamanatkan.
sumber
Ketika Anda mengetik http://www.domain.com ke browser Anda, dipahami bahwa port HTTP pada 80. Oleh karena itu, tidak ada cara langsung untuk mengarahkan www.domain.com ke port 87 jika Anda sudah memiliki layanan berjalan pada port itu di IIS.
Yang sedang berkata, ada beberapa "solusi".
Sam benar, DNS agnostik ketika datang ke port. Segala macam pengalihan port terjadi oleh layanan yang berjalan pada port itu. Karena itu Anda perlu melakukan sesuatu dengan IIS untuk mewujudkan hal ini, jika Anda tidak punya pilihan selain meninggalkannya di port 80.
Saya juga sudah mengatasi situasi Anda dengan menggunakan mod_proxy di Apache, tidak yakin apakah ada cara untuk melakukan ini dengan IIS.
sumber
Saya khawatir nama domain hanya dapat dikaitkan dengan alamat IP dan bukan porta.
Sebagian besar server web misalnya (Apache, IIS, dll.) Memungkinkan Anda memiliki dua domain yang di-host pada alamat IP yang sama dengan menggunakan fakta bahwa permintaan web berisi bidang header-host yang mengidentifikasi domain dalam permintaan itu sendiri.
Jika Anda mengatakan apa server web yang Anda gunakan, saya yakin orang-orang dapat mengarahkan Anda ke dokumentasi yang relevan untuk mengatur server Anda seperti yang Anda inginkan.
sumber
Secara teknis Anda dapat menggunakan catatan SRV pada server DNS sebagaimana didefinisikan dalam RFC 2782 untuk memberi tahu browser server mana yang menangani http pada port mana untuk domain (sub-):
Ini bekerja dengan baik untuk banyak protokol / layanan, terutama di mana penggunaan catatan SRV sudah ditentukan dalam spesifikasi protokol.
Namun seperti yang dinyatakan " Hall of Shame " ini, sebagian besar browser / klien web tidak mendukung ini (untuk HTTP). Juga lihat mengapa-do-browser-not-use-srv-records .
Kesepakatannya pada dasarnya, bahwa SRV tidak termasuk dalam protokol http sebagai suatu keharusan sehingga setiap browser yang mengimplementasikannya menyelesaikan URL secara berbeda dari browser yang tidak.
Jadi, Anda hanya boleh menggunakan ini sebagai beberapa penyeimbangan beban opsional, di mana tidak relevan server mana yang dipilih dalam hal konten. "Opsional" karena tidak akan menyeimbangkan banyak beban jika hanya sedikit klien yang menerapkan ini.
sumber
DNS tidak memiliki kemampuan untuk mengalihkan ke Port tertentu, semua DNS peduli adalah resolusi alamat IP dari sebuah nama, dan sebaliknya.
Beberapa layanan, seperti penyedia Dynamic IP DNS, seperti NO-IP menyediakan layanan yang dapat membantu Anda melakukan sesuatu yang serupa untuk mendapatkan pemblokiran bulat IP di layanan DNS rumah.
sumber
Untuk menggunakan layanan (TBT) apa pun pada port non-standar dan tidak menulis port di URI, semua orang dapat menggunakan catatan SRV, yang didefinisikan dalam RFC 2782.
Semua http-host lain di zona masih akan dilayani pada port default 80
sumber
Cara paling sederhana adalah menggunakan proxy terbalik dan mengaturnya sebagai proxy web Anda. Anda dapat mengkonfigurasi
nginx
atauapache
untuk itu. Saya pada dasarnya memiliki masalah yang sama di masa lalu dan membuat alat untuk mencapai konfigurasi seperti itu dengan cara yang sederhana. Ergo: https://github.com/cristianoliveira/ergoSaya telah menggunakan ini dan pada dasarnya, bekerja seperti pesona :)
sumber
Satu pendekatan untuk menyebarkan dua server web pada host yang sama adalah meminta keduanya mendengarkan pada port 80 pada dua alamat IPv6 yang berbeda. IPv6 secara resmi menentukan bahwa Anda dapat menetapkan dua alamat ke sebuah antarmuka, dan ada cukup alamat IPv6 yang dapat Anda lakukan tanpa kehabisan alamat.
Ini adalah bukti di masa depan, dan kedua domain Anda masing-masing dapat memiliki catatan AAAA yang menunjuk ke alamat IP yang berbeda, sehingga domain tersebut berakhir di server web yang berbeda.
Jika Anda memiliki satu alamat IPv4 juga, Anda dapat menggunakan port 80 pada alamat IPv4 untuk menjalankan proxy terbalik. Dengan begitu, klien khusus IPv4 dapat mengakses kedua server web Anda. Pendekatan proxy terbalik bahkan berfungsi jika beberapa server web berada di host yang sama dengan proxy terbalik dan beberapa server web berada di host lain.
Dalam pengaturan seperti itu
example.org
bisa memiliki alamat192.0.2.1
dan2001:db8::1
sementaraexample.net
memiliki alamat192.0.2.1
dan2001:db8::2
.sumber