Prosta odpowiedź związana z poziomem pytania
Ignorując egzotyczne zastosowania DNS, a także odwrotne wyszukiwanie DNS (nie dotyczy pytania), prawie całe użycie DNS ma postać:
- Klient wysyła nazwę domeny (w pełni kwalifikowaną lub inną) do serwera DNS
- Serwer DNS zwraca informacje o domenie ze swoich rekordów. Zwykle kluczowymi żądanymi informacjami są adres IP do komunikacji z Internetem / pocztą e-mail w tej domenie lub adres IP innego serwera DNS, który jest w stanie lepiej dostarczyć te informacje.
Gdy klient skontaktuje się z serwerem, sam serwer przejmie kontrolę, a system DNS zniknie z obrazu.
Oznacza to, że system DNS nie musi dostarczać informacji o porcie i prawie nigdy tego nie robi. Więc chociaż cel pytania jest prawidłowy i często wykonywany, tak naprawdę nie jest to system DNS, który to robi. Dlatego nie możesz tego wypracować :)
Chodzi o to, że gdy klient może zlokalizować konkretną maszynę lub serwer, którego szuka, zadaniem tego komputera jest nasłuchiwanie na wybranych portach i akceptowanie / odrzucanie / odpowiadanie na dowolne protokoły na dowolnych skonfigurowanych portach.
Na przykład usługi sieciowe HTTP są zwykle świadczone na porcie 80. Oznacza to, że gdy klient zna adres IP komputera, można założyć, że wysłanie wiadomości do portu 80 spowoduje odczytanie / odpowiedź tej wiadomości przez usługę internetową tego komputera. Ale nie musi tak być. Jeśli serwer jest skonfigurowany do nasłuchiwania przychodzących żądań internetowych na porcie 9000, każdy klient, który może uzyskać dostęp do portu 9000, będzie mógł uzyskać dostęp do swojej usługi internetowej. Jeśli serwer znajduje się za serwerem proxy / NAT / routerem, który przekierowuje port 10000 na port 9000, a klient wysyła żądanie sieciowe na port 10000, serwer odbierze je na porcie 9000 i również odpowie.
Przekierowanie / mapowanie na serwerze WWW
Zapytałeś o mapowanie przekierowania lub przepisanie w komentarzu. Są to funkcje, które może wykonywać serwer WWW. Zasadniczo możesz skonfigurować serwer WWW (lub większość / wiele serwerów WWW) do zarządzania sposobem, w jaki obsługuje on adres URL otrzymany w żądaniu. Może więc wewnętrznie modyfikować adres URL po otrzymaniu, aby różne adresy URL były obsługiwane w ten sam sposób, lub naprawiać typowe literówki (mapowanie), lub może faktycznie odpowiedzieć, aby sam klient zapytał po raz drugi, używając innego, zastępczego adresu URL (przeadresować).
Mają one swoje zastosowania i mogą w zasadzie obsłużyć twój przypadek użycia, ale nie brzmią jak „właściwe” rozwiązanie z następujących powodów:
- Nie sądzę, żeby mapowanie w ogóle pomogło . Mapowanie jest prawie całkowicie wewnętrzne dla serwera WWW, mówi „traktuj ten adres URL tak, jakby to był ten adres URL”. Na przykład możesz użyć mapowania adresów URL serwera WWW, aby umożliwić użytkownikowi zapytanie o forum przy użyciu bardzo starych, starych i aktualnych adresów URL (dla wygody użytkownika) przy użyciu „ https://example.com/index.php?area-=forum&topic = 2 ”, także„ https://example.com/forum.php?topic=2 ”, a także„ https://forum.example.com?topic=2”i poradzić sobie z tym tylko raz, mapując pierwsze dwa z nich wewnętrznie na trzeci adres URL, jako pierwszy krok w obsłudze zapytania. Ponieważ cele te wpływają na ścieżkę zapytania, a nie na adres IP / port, mapowanie nie jest zbyt przydatne zarządzanie portem, a w twoim przypadku klient nigdy tak naprawdę nie pyta 8080.
- Przekierowanie działałoby, ale może nie być tym, czego chcesz . Przekierowanie na serwerze internetowym polega na tym, że serwer internetowy faktycznie odbiera zapytanie (ponieważ są to wewnętrzne funkcje serwera WWW). Serwer sieci i tak musiałby nasłuchiwać na porcie 80, aby otrzymać oryginalne zapytanie, aby odpowiedzieć przekierowaniem / mapą. Musiałby także nasłuchiwać na porcie 8080. Funkcjonalnie potrzebowałby reguły przekierowania, aby kazać każdemu klientowi pytającemu o port 80, aby zapytał go ponownie za pomocą adresu URL „: 8080”, co nie brzmi jak to, co chcesz zrobić. Użytkownik zobaczy także nowy adres URL z „: 8080”, podczas gdy wygląda na to, że chcesz, aby był „przezroczysty” i nie był wyświetlany.
- Również przekierowanie działałoby tylko w celu przekierowania standardowego portu (80 lub 443) - nie można było przekierować portu 2000 do 8080, ponieważ, po pierwsze, klient domyślnie nie sprawdzałby 2000, więc nigdy dostać się do serwera WWW, nawet jeśli nasłuchiwał w 2000 roku. Może to jednak nie stanowić problemu.
Jeśli jednak chcesz przekierować „inteligentne”, gdzie tylko niektóre zapytania są przekierowywane do 8080, może to być dobry sposób, ponieważ przekierowanie może zawierać logikę decydującą, które adresy URL powinny zostać przekierowane, podczas gdy mapowanie portów (poniżej) zmapowałoby wszystko .
Jak poprawnie to zrobić
Odpowiedź na twoje pytanie brzmi: chcesz, aby serwer WWW odpowiadał na żądania sieciowe, które klient wysyła na domyślny port (80/443), ale które serwer faktycznie odbiera na porcie 8080.
Oznacza to, jak widać, że potrzebujesz czegoś pomiędzy, co mapuje porty między klientem a serwerem . W ten sposób klient wysyła port 80 (domyślny port używany przez przeglądarki internetowe), ale tak naprawdę jest odbierany na porcie 8080 przez serwer WWW. Oczywiście będziesz musiał skonfigurować serwer WWW, aby nasłuchiwał na porcie 8080, ponieważ nie jest to standardem, ale jest to łatwe i każdy serwer sieciowy powinien mieć określone porty nasłuchiwania.
Najbardziej typowym sposobem na to jest router / firewall, poprzez mapowanie portów.
Mówiąc prościej, aby to zrobić, router otrzymuje regułę, że wszystko, co ma docelowy adres IP i docelowy port = 80, powinno być przekazywane do sieci LAN, a docelowy port należy zmienić na 8080. Ani serwer WWW, ani klient nie będą świadomi zmiany (jest w 100% obsługiwany przez router), więc będzie w 100% przezroczysty dla obu z nich. Klient nie ma w adresie URL „: 8080” i nie musi niczego przekierowywać, ponieważ wysyła zapytanie do portu 80, a serwer WWW może zignorować port 80 i nasłuchiwać tylko na 8080, ponieważ nigdy nie otrzymuje zapytań na porcie 80 .
Jeśli chcesz prosty, bezpośredni sposób, podobny do tego, co zrobiłby „DNS dla portów”, jest to prawdopodobnie najbliższy odpowiednik tego, o co pytasz w swoim pytaniu.