Jawaban sederhana, terkait dengan tingkat pertanyaan
Mengabaikan penggunaan DNS yang eksotis, dan juga membalikkan pencarian DNS (tidak relevan dengan pertanyaan), hampir semua penggunaan DNS adalah dalam bentuk:
- Klien mengirimkan nama domain (sepenuhnya memenuhi syarat atau sebaliknya) ke server DNS
- Server DNS mengembalikan informasi domain dari catatannya. Biasanya informasi kunci yang diminta adalah alamat IP untuk berkomunikasi dengan web / email pada domain itu, atau alamat IP server DNS lain yang lebih mampu memberikan informasi itu.
Setelah klien menghubungi server, server itu sendiri akan mengambil alih dan sistem DNS keluar dari gambar.
Artinya, sistem DNS tidak perlu menyediakan informasi port, dan hampir tidak pernah melakukannya. Jadi meskipun tujuan dari pertanyaan itu valid, dan sering dilakukan, sebenarnya bukan sistem DNS yang melakukannya. Itu sebabnya Anda tidak bisa menyelesaikannya :)
Idenya adalah bahwa sekali klien Anda dapat menemukan mesin atau server tertentu yang ia cari, tergantung pada mesin itu untuk mendengarkan port apa pun yang dipilihnya, dan menerima / menolak / merespons protokol apa pun pada port apa pun yang dikonfigurasi.
Misalnya, layanan web HTTP biasanya disediakan pada port 80. Itu berarti bahwa setelah klien mengetahui IP mesin, dapat berasumsi bahwa mengirim pesan ke port 80 akan menghasilkan pesan yang dibaca / direspon oleh layanan web mesin tersebut. Tetapi tidak harus seperti itu. Jika server dikonfigurasi untuk mendengarkan permintaan masuk web pada port 9000, setiap klien yang dapat mencapai port 9000 akan dapat mencapai layanan webnya. Jika server berada di belakang proxy / NAT / router yang mengalihkan port 10000 ke port 9000, dan klien mengirimkan permintaan web pada port 10000, server akan menerimanya pada port 9000 dan merespons juga.
Redirect / pemetaan dalam server web
Anda bertanya tentang pemetaan redirect atau menulis ulang dalam komentar. Ini adalah fungsi yang dapat dilakukan server web. Pada dasarnya, Anda dapat mengonfigurasi server web (atau sebagian besar / banyak server web) untuk mengelola cara menangani URL yang diterimanya dalam permintaan. Jadi itu dapat secara internal memodifikasi URL pada tanda terima untuk membuat URL yang berbeda ditangani dengan cara yang sama, atau memperbaiki kesalahan ketik umum (pemetaan), atau itu benar-benar dapat merespons untuk memberi tahu klien sendiri untuk meminta kedua kalinya, menggunakan beberapa URL yang berbeda, pengganti, (redirect).
Ini memiliki kegunaan mereka, dan pada prinsipnya dapat menangani kasus penggunaan Anda, tetapi mereka tidak terdengar seperti solusi "tepat" untuk Anda, karena alasan ini:
- Saya tidak berpikir pemetaan akan membantu sama sekali . Pemetaan hampir benar-benar internal untuk server web, ia mengatakan "memperlakukan ini URL seolah-olah itu bahwa URL". Misalnya, Anda dapat menggunakan pemetaan URL server web untuk memungkinkan pengguna melakukan kueri forum menggunakan URL yang sangat lama, lama dan saat ini (untuk kenyamanan pengguna) menggunakan " https://example.com/index.php?area-=forum&topic = 2 ", juga" https://example.com/forum.php?topic=2 "dan juga" https://forum.example.com?topic=2", dan hanya menangani ini satu kali, dengan memetakan dua yang pertama ke URL ketiga secara internal, sebagai langkah pertama dalam menangani permintaan. Karena target ini memengaruhi jalur kueri bukan IP / port, pemetaan tidak banyak digunakan untuk manajemen pelabuhan, dan dalam kasus Anda, klien tidak pernah benar-benar menanyakan 8080 sama sekali.
- Pengalihan akan berfungsi, tetapi mungkin bukan yang Anda inginkan . Pengalihan di server web bergantung pada server web yang sebenarnya menerima permintaan (karena ini adalah fungsi internal server web). Jadi server web harus mendengarkan pada port 80 pula untuk mendapatkan permintaan asli, agar dapat menanggapi dengan redirect / peta. Itu juga harus mendengarkan pada port 8080. Secara fungsional, itu akan memerlukan aturan redirect untuk harus memberitahu port permintaan klien 80, untuk meminta lagi menggunakan URL ": 8080", yang tidak terdengar seperti apa yang Anda inginkan melakukan. Pengguna juga akan melihat URL baru dengan ": 8080" di dalamnya, sedangkan sepertinya Anda menginginkannya menjadi "transparan" dan tidak ditampilkan.
- Pengalihan juga hanya akan berfungsi untuk mengarahkan ulang port standar (80 atau 443) - Anda tidak bisa mengarahkan ulang port 2000 ke 8080, karena klien tidak akan meminta pada 2000 secara default, di tempat pertama, jadi itu tidak akan pernah pergi ke server web, bahkan jika sedang mendengarkan pada tahun 2000. Ini mungkin tidak menjadi masalah bagi Anda.
Namun jika Anda ingin pengalihan "cerdas", di mana hanya kueri tertentu yang dialihkan ke 8080, ini mungkin cara yang harus ditempuh, karena pengalihan dapat menyertakan logika untuk memutuskan URL mana yang harus diarahkan, sedangkan pemetaan pelabuhan (di bawah) akan memetakan semuanya .
Cara melakukannya dengan benar
Jawaban untuk pertanyaan Anda adalah, Anda ingin server web untuk menanggapi permintaan web yang dikirim klien ke port default (80/443), tetapi yang sebenarnya diterima server pada port 8080.
Itu berarti, seperti yang Anda lihat, Anda memerlukan sesuatu di antaranya memetakan port antara klien dan server . Dengan begitu, klien mengirim pada port 80 (port default yang digunakan oleh browser web), tetapi sebenarnya diterima pada port 8080 oleh server web. Tentu saja Anda harus mengkonfigurasi server web untuk mendengarkan pada port 8080, karena ini bukan standar, tetapi mudah dan server web mana pun harus dapat menentukan port pendengarnya.
Cara paling umum untuk melakukan ini adalah di dalam router / firewall, melalui pemetaan port.
Secara sederhana, untuk melakukan ini, router diberi aturan, bahwa apa pun yang diterima yang memiliki IP tujuan dan port tujuan = 80, harus diteruskan ke LAN dengan port tujuan diubah menjadi 8080 sebagai gantinya. Baik server web maupun klien tidak akan menyadari perubahan (100% ditangani oleh router), sehingga 100% transparan untuk keduanya. Klien tidak akan memiliki ": 8080" di URL-nya dan tidak perlu mengarahkan ulang apa pun, karena ia menanyakan port 80, dan server web dapat mengabaikan port 80 dan hanya mendengarkan 8080, karena ia tidak pernah mendapatkan permintaan pada port 80 .
Jika Anda menginginkan cara yang sederhana dan langsung, mirip dengan apa yang akan dilakukan "DNS untuk port", ini mungkin setara dengan apa yang Anda minta dalam pertanyaan Anda.