Czy system komputerowy (Linux) ma tylko jedną nazwę hosta?

15

hostname służy do wyświetlania nazwy DNS systemu oraz do wyświetlania lub ustawiania nazwy hosta lub nazwy domeny NIS.

Czy system komputerowy (Linux) ma tylko jedną nazwę hosta?

W hostingu wirtualnym kilka nazw hostów można rozpoznać w różnych katalogach głównych na serwerze WWW. Jeśli system komputerowy (Linux) może mieć tylko jedną nazwę hosta, w jaki sposób możliwy jest wirtualny hosting?

Dzięki.

Tim
źródło
Rekordy DNS A lub AAA wskazują ten sam adres IP dla wielu domen. Nazwa hosta maszyny niekoniecznie jest ważna.
RubberStamp,
(1) Czy dane wyjściowe są hostnamekiedykolwiek używane do tłumaczenia nazwy hosta na adres IP? (2) A oznacza adres IPv4, AAAA IPv6. Co to jest AAA?
Tim
Usługi mDNS, takie jak avahizależą od nazwy hosta komputera. W takim przypadku hostname.localzostanie rozwiązany na lokalny adres IP urządzenia. Widzę, że ktoś napisał odpowiedź, która jest rozwinięciem mojego pierwszego komentarza ... zbyt jednocześnie dla powiadomień przeglądarki.
RubberStamp
AAA to krótka literówka „A”
RubberStamp,
Host wirtualny nie ma nic wspólnego z nazwą hosta. Zależy to wyłącznie od zachowania serwera WWW. Serwer reaguje inaczej na różne pola Host nagłówka żądania HTTP. Nie sądzę, że typowy serwer WWW zrobiłby cokolwiek związanego z DNS lub nazwą hosta, aby zaoferować funkcjonalność hosta wirtualnego.
炸鱼 薯条 德里克

Odpowiedzi:

26

Tak i nie. Są dwie różne rzeczy zwane nazwami hostów.

„Wewnętrzna” nazwa hosta jest w zasadzie ciągiem przechowywanym przez jądro. Jest to ten zwracany przez hostnamepolecenie (lub gethostname()wywołanie) i jest unikalny w systemie (*) .

Jest to najczęściej używane, gdy program chce wypisać jakiś identyfikator systemu, na którym działa. Np. \hW Bash PS1rozwija się do nazwy hosta. Podobnie, pliki dziennika w stylu syslog zawierają również nazwę hosta we wpisach dziennika.

(* Jak komentuje Stephen Kitt, przestrzeni nazw można używać do wyświetlania różnych nazw hostów dla procesów w tym samym systemie. Jest to najczęściej używane w przypadku kontenerów, które próbują zachowywać się jak odrębne systemy.)

Są też nazwy DNSSą które są używane przez inne systemy do wyszukiwania adresu IP innego. Może istnieć więcej niż jedna nazwa DNS, która wskazuje ten sam adres IP, a więc ten sam host.

Wewnętrzna nazwa hosta i nazwy DNS nie muszą być takie same. Załóżmy, że ktoś ma serwer sieciowy, pod który postanowił zadzwonić orange(*) , z adresem IP 192.0.2.9. Może to służyć dwie różne domeny i DNS będzie skonfigurować mieć www.example.orgi www.example.comzarówno punkt 192.0.2.9, natomiast wewnętrzna hosta systemu może być orange.example.orgalbo po prostu orange. W tym przypadku, konfiguracja DNS zazwyczaj też wyszukiwania wstecznego na 192.0.2.9punkcie plecami do nazwy orange.example.org, ale nie ma nic do tego siły.

(* ponieważ lubią nazywać swoje serwery po owocach. Ktoś może ich użyć webserver1, ale chodzi o to, że nie trzeba go nazywać po jednej z rzeczywistych domen).

Ponadto wirtualny hosting wymaga, aby przeglądarka poinformowała serwer WWW o nazwie witryny, do której próbował uzyskać dostęp. W przeciwnym razie serwer nie wiedziałby, do której wirtualnej witryny próbował dotrzeć klient. HTTP ma do tego Hostnagłówek .


To, co zamazuje rozróżnienie między nazwą DNS a wewnętrzną nazwą hosta, to protokół mDNS (implementowany np. Przez demona avahi ) i inne protokoły wykrywania. mDNS umożliwia hostom wysyłanie zapytań do wszystkich innych hostów w tej samej sieci w celu uzyskania informacji o nazwach oraz wyświetlanie ich własnych nazw na innych hostach bez jawnego konfigurowania ich w DNS.

ilkkachu
źródło
Dzięki. (1) „konfiguracja DNS zwykle miałaby 192.0.2.9 wskazuje na nazwę orange.example.org” Nie rozwiązuje problemu uzyskania adresu IP dla danej nazwy hosta, dlaczego jest odwrotnie? (2) Czy dane wyjściowe są hostnamekiedykolwiek używane do tłumaczenia nazwy hosta na adres IP?
Tim
(2) ... Po skonfigurowaniu lokalnej sieci Wi-Fi w domu od dostawcy usług internetowych za pomocą routera i modemu, maszyny w sieci można rozpoznać po wynikach ich hostnamepoleceń, prawda? Czy router działa jak DNS, przetwarzając dane wyjściowe hostnamena prywatne adresy IP w sieci?
Tim
2
tak jak w (1), istnieją również wyszukiwania wsteczne, które pobierają adres IP i zwracają nazwę. (W przypadku systemu z jedną nazwą i jednym adresem chciałbyś, aby oba były rozwiązywane do drugiego, dla jasności)
ilkkachu
3
Małe sieci mogą korzystać mDNS. Na lepsze lub gorsze pozwala właścicielom systemów wybrać własne nazwy hostów, dostępne dla innych systemów w sieci lokalnej, bez konieczności rejestracji na serwerze DNS.
Mark Plotnick,
2
W wielu sieciach domowych router lokalny działa jako resolver DNS. Hosty wysyłają swoją nazwę hosta, gdy żądają adresu za pomocą DHCP, a router zapamiętuje tę nazwę i rozwiązuje ją dla wszystkich hostów w sieci. Jak wspominają Mark i RubberStamp, istnieje również Bonjour (zaimplementowany w Avahi), który umożliwia wykrywanie usług w sieci LAN (w szczególności drukarek). Zauważ też, że hosty mogą mieć wiele adresów IP, a nazwy hostów mają teraz przestrzeń nazw, więc procesy mogą zobaczyć różne nazwy hostów na tym samym hoście.
Stephen Kitt
7

Czy system komputerowy (Linux) ma tylko jedną nazwę hosta?

Nie.

[Całkowicie zignoruję to, że ktokolwiek może nadać Twojemu hostowi dowolną nazwę, podając rekord DNS wskazujący na jego adres, lub że możesz mieć dla niego więcej niż jeden alias /etc/hostslub rozważania filozoficzne na temat tego, jaką nazwę naprawdę jest ]

W systemie linux nazwa hosta to po prostu zasób na proces („przestrzeń nazw UTS”), który jest domyślnie dziedziczony przez jego elementy potomne, ale można go odłączyć za pomocą flagi unshare(2)lub clone(2)przy użyciu tej CLONE_NEWUTSflagi. Powinieneś zajrzeć donamespaces(7) podręcznika.

Podobnie jak pid, numery portów, punkty montowania itp. Nazwa hosta nie jest już identyfikatorem globalnym i może być zwirtualizowana tak samo jak przestrzeń adresowa (pamięć wirtualna) lub tablica deskryptorów plików procesu.

W hostingu wirtualnym kilka nazw hostów można rozpoznać w różnych katalogach głównych na serwerze WWW. Jeśli system komputerowy (Linux) może mieć tylko jedną nazwę hosta, w jaki sposób możliwy jest wirtualny hosting?

Hosting wirtualny jest czymś zupełnie innym i zwykle odbywa się to poprzez skonfigurowanie wieloznacznego rekordu DNS (np. *.foo.com=> 13.13.13.13) Z serwerem WWW działającym 13.13.13.13i obsługującym różne katalogi / zasoby w oparciu o wartość Host:nagłówka http [1] (który jest wysoce konfigurowalny ; większość serwerów internetowych może obsługiwać różne zasoby w oparciu o dowolny nagłówek http, nie tylkoHost: ). W tym wszystkim system operacyjny systemu, na którym działa serwer WWW, nie odgrywa żadnej roli.

[1] lub na wartość wskazania nazwy serwera w przypadku https, co pozwala temu samemu serwerowi używać różnych certyfikatów dla różnych hostów wirtualnych.

Wujek Billy
źródło
Muszę się z tobą nie zgodzić. W przypadku hostingu wirtualnego zwykle mamy określony zestaw rekordów nazw plików wskazujących na jeden host. Nie używamy wieloznacznego rekordu DNS, ponieważ w domenie jest wiele systemów wymagających hostów wirtualnych. Wyłączając przestrzenie nazw UTS (jak często to jest używane?), Nazwa hosta zgłasza pojedynczą nazwę hosta dla danego serwera. DNS i hostnamectl są ortogonalne i mają niewiele wspólnego ze sobą.
doneal24
1
@ DougO'Neal Z czym się nie zgadzasz? Czy rekordy DNS z symbolami wieloznacznymi są używane w sposób, w jaki je opisuję? Są tak powszechnie używane (przepraszam za grę słów), czy ci się to podoba, czy nie. Że informacje UTS są zwirtualizowane na proces w systemie Linux? Tak po prostu jest. Jeśli chodzi o ideę, że przestrzenie nazw są używane / do wykorzystania w rozwiązaniach kontenerowych / wirtualizacyjnych w puszkach (jak sugerowano w drugiej odpowiedzi), przepraszam, ale to znaczy „tylko dziewczyny bawią się lalkami” lub „ręczne skrzynie biegów są używane tylko w ciężkich ciężarówkach” jakość ;-)
Wujek Billy
1

Zwykle ustawiasz pojedynczą nazwę hosta w / etc / hostname. I ustawiasz wiele nazw domen w / etc / hosts.

Przestrzenie nazw UTS pozwalają, aby pojedynczy system miał różne nazwy hostów i domen dla różnych procesów. Aby uzyskać więcej informacji: https://en.wikipedia.org/wiki/Linux_namespaces . Zatem absolutnie możliwe jest posiadanie wielu nazw hostów i nazw domen dla tego samego systemu. Na przykład kontener dokujący w tym samym hoście ma inną nazwę hosta niż system hosta.

Uddhav Gautam
źródło