Oto szczegóły maszyny, do której chcę uzyskać dostęp za pomocą jej nazwy hosta:
$ hostname
hostname
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 hostname.company.local hostname
Jest to domyślna instalacja Debian 6 (Squeeze), więc jeszcze niczego nie majstrowałem.
Oto, co otrzymuję od komputera (działającego pod kontrolą Debiana Unstable) próbującego uzyskać dostęp do powyższej maszyny:
$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
networking
tshepang
źródło
źródło
ping
) lub na maszynie, z którą klient się konsultuje. Jaki jest system operacyjny na kliencie? Jaka jest jego konfiguracja DNS?ping
, a/etc/hosts
jednak nie o DNS tak?Odpowiedzi:
W Internecie, w tym w sieciach lokalnych, urządzenia wywołują się nawzajem według adresów IP . Aby uzyskać dostęp do komputera B z komputera A przy użyciu nazwy komputera B, komputer A musi mieć sposób na zmapowanie nazwy B na jej adres IP. Istnieją trzy sposoby deklarowania nazw komputerów na A:
unix.stackexchange.com
.Istnieje wiele sposobów, w jakie mogą one działać w praktyce; nie można ich wszystkich objąć. W tej odpowiedzi opiszę kilka typowych sytuacji.
Plik hostów
Zaletą metody pliku hosts jest to, że nie wymaga żadnej specjalnej metody. Może to być kłopotliwe, jeśli masz kilka komputerów, ponieważ musisz aktualizować każdy komputer, gdy zmienia się nazwa jednego komputera. Nie nadaje się, jeśli adres IP B jest przypisywany dynamicznie (aby uzyskać inny za każdym razem, gdy łączysz się z siecią).
Plik hosts to prosta lista linii mapujących nazwy na adresy IP. To wygląda tak:
W systemach unix plik hosts to
/etc/hosts
. W systemie Windows tak jestc:\windows\system32\drivers\etc\hosts
. Prawie każdy system operacyjny, który można połączyć z Internetem, ma podobny plik; Wikipedia ma listę .Aby dodać wpis dla B w pliku hosts A:
Określ adres IP B. Na B uruchom komendę
ifconfig
(jeśli komenda nie zostanie znaleziona, spróbuj/sbin/ifconfig
). Dane wyjściowe będą zawierać takie wiersze:W tym przykładzie adres IP B to 10.3.1.42. Jeśli jest kilka
inet addr:
linii, wybierz tę, która odpowiada twojej karcie sieciowej, nigdylo
wpis lub tunel lub wpis wirtualny./etc/hosts
jako superużytkownik; zobacz Jak uruchomić polecenie jako administrator systemu (root) .DHCP + DNS w sieciach domowych lub małych biurach
Ta metoda jest zdecydowanie najprostsza, jeśli masz wymagany sprzęt. Musisz tylko skonfigurować jedno urządzenie, a wszystkie twoje komputery będą wiedzieć o swoich nazwach. Ta metoda zakłada, że komputery uzyskują adresy IP przez DHCP , co jest metodą automatycznego pobierania adresu IP przez komputery po podłączeniu do sieci. Jeśli nie wiesz, co to jest DHCP, prawdopodobnie tak.
Jeśli sieć ma router domowy , najlepiej jest skonfigurować nazwy urządzeń podłączonych do tego routera. Najpierw musisz dowiedzieć się, jaki jest adres MAC B. Każde urządzenie sieciowe ma unikalny adres MAC. Na B uruchom polecenie
ifconfig -a
(jeśli polecenie nie zostanie znalezione, spróbuj/sbin/ifconfig -a
). Dane wyjściowe będą zawierać takie wiersze:W tym przykładzie adres MAC to
01:23:45:67:89:ab
. Musisz wybrać linię HWaddr, która odpowiada portowi sieciowemu, który jest podłączony do routera za pomocą kabla (lub karty Wi-Fi, jeśli masz połączenie przez Wi-Fi). Jeśli masz kilka wpisów i nie wiesz, który jest, podłącz kabel i sprawdź, które urządzenie sieciowe otrzymuje adres IP (inet addr
linia poniżej).Teraz w interfejsie internetowym routera wyszukaj ustawienie takie jak „DHCP”. Nazwa i lokalizacja ustawienia jest całkowicie zależna od modelu routera, ale większość ma podobny zestaw ustawień podstawowych. Oto jak to wygląda na oprogramowaniu układowym Tomato :
Wprowadź adres MAC, adres IP i żądaną nazwę. Możesz wybrać dowolny adres IP z zakresu adresów sieci lokalnej. Większość routerów domowych jest wstępnie skonfigurowana dla zakresu adresów w postaci 192.168. x . y lub 10. x . y . z . Na przykład na pokazanym powyżej routerze Tomato na zakładce „Network” znajduje się ustawienie „adresu IP routera” o wartości 10.3.0.1 i „maska podsieci” o wartości 255.255.255.0, co oznacza, że komputery sieć lokalna musi mieć adres 10.3.0. z . Istnieje również zakres adresów dla automatycznie przypisywanych adresów DHCP (10.3.0.129–10.3.0.254); dla ręcznie przypisanego adresu DHCP wybierz adres spoza tego zakresu.
Teraz podłącz B do sieci, która powinna uzyskać podany adres IP i będzie dostępna pod podaną nazwą z dowolnego komputera w sieci.
Stwórz własny serwer DNS z Dnsmasq
Jeśli nie masz sprawnego routera domowego, możesz skonfigurować tę samą funkcjonalność na dowolnym komputerze z systemem Linux. Wyjaśnię, jak używać Dnsmasq do konfigurowania DNS . Istnieje wiele innych podobnych programów; Wybrałem Dnsmasq, ponieważ jest łatwy do skonfigurowania i lekki (jest to, na przykład, przykład wykorzystania routera Tomato zilustrowanego powyżej). Dnsmasq jest dostępny w większości dystrybucji Linuksa i BSD na komputery PC, serwery i urządzenia sieciowe.
Wybierz komputer, który jest zawsze włączony, ma statyczny adres IP i działa na nim jakiś system Linux lub BSD; nazwijmy to S (dla serwera). Na S zainstaluj
dnsmasq
pakiet (jeśli jeszcze go nie ma). Poniżej założę, że plik konfiguracyjny to/etc/dnsmasq.conf
; lokalizacja może się różnić w zależności od dystrybucji. Teraz musisz zrobić kilka rzeczy./etc/hosts
(patrz sekcja „Plik hostów” powyżej) i upewnienie się, że dyrektywa/etc/dnsmasq.conf
nie zostałano-hosts
odkomentowana. (Linie rozpoczynające się od a#
są wykomentowane.) Możesz umieścić nazwy w innym pliku; jeśli nie, umieścić linięaddn-hosts=/path/to/hosts/file
w/etc/dnsmasq.conf
.Powiedz Dnsmasqowi, jak uzyskać adresy IP dla nazw komputerów w Internecie.
resolvconf
pakiet. W najczęstszych przypadkach wszystko będzie działać od razu po wyjęciu z pudełka.Jeśli administrator sieci lub dostawca usług internetowych podał ci adresy serwerów DNS, wprowadź je
/etc/dnsmasq.conf
na przykład:Jeśli nie wiesz, jakie są twoje obecne ustawienia DNS, zajrzyj do pliku
/etc/resolv.conf
. Jeśli widzisz, jak linianameserver 8.8.8.8
, umieścić linięserver=8.8.8.8
w/etc/dnsmasq.conf
. Po zmianie/etc/dnsmasq.conf
uruchom ponownie Dnsmasq. Polecenie, aby to zrobić, zależy od dystrybucji; typowe możliwości obejmująrestart dnsmasq
lub/etc/init.d/dnsmasq restart
./etc/resolv.conf
(jako root), usuń każdąnameserver
linię i wstawnameserver 127.0.0.1
zamiast niej./etc/resolv.conf
może nie być optymalny, jeśli zainstalowałeśresolvconf
pakiet z uruchomioną siecią. Upewnij się, że plikibase
,head
atail
w/etc/resolvconf/resolv.conf.d/
katalogu nie zawiera żadnychnameserver
wpisów, a następnie uruchomresolvconf -u
(jako root)./etc/resolv.conf
i zamień wszystkienameserver
wiersze na jeden, wnameserver 10.3.0.2
którym 10.3.0.2 to adres IP S (patrz powyżej, jak znaleźć adres IP S).Możesz również użyć Dnsmasq jako serwera DHCP , aby maszyny mogły automatycznie uzyskać adres odpowiadający ich nazwie. To wykracza poza zakres tej odpowiedzi; zajrzyj do dokumentacji Dnsmasq (nie jest to trudne). Pamiętaj, że w danej sieci lokalnej może być tylko jeden serwer DHCP (dokładna definicja sieci lokalnej wykracza poza zakres tej odpowiedzi).
Nazwy w globalnym Internecie
Do tej pory założyłem sieć lokalną. Co jeśli chcesz nadać nazwę maszynie, która znajduje się w innym zakątku świata? Nadal możesz używać dowolnej z powyższych technik, z tym wyjątkiem, że części związane z DHCP mają zastosowanie tylko w sieci lokalnej. Alternatywnie, jeśli twoje maszyny mają publiczne adresy IP, możesz zarejestrować dla nich swoją własną nazwę publiczną. (Możesz również przypisać prywatny adres IP do nazwy publicznej; jest on mniej powszechny i mniej przydatny, ale nie ma trudności technicznych).
Uzyskiwanie własnej nazwy domeny
Możesz uzyskać własną nazwę domeny i przypisać adresy IP do nazw hostów w tej domenie. Musisz zarejestrować nazwę domeny u dostawcy nazwy domeny; zazwyczaj kosztuje to 10–15 USD rocznie (w przypadku najtańszych domen). Użyj interfejsu internetowego dostawcy nazwy domeny, aby przypisać adresy do nazw hostów.
Dynamiczny DNS
Jeśli twoje maszyny mają dynamiczny adres IP, możesz użyć dynamicznego protokołu DNS , aby zaktualizować adres IP powiązany z nazwą urządzenia, gdy adres się zmieni. Nie wszyscy dostawcy nazw domen obsługują dynamiczny DNS, więc kupuj przed zakupem. Na własny użytek No-IP zapewnia bezpłatną usługę dynamicznego DNS, jeśli korzystasz z własnych domen (np
example.ddns.net
.).źródło
Użyj Multicast DNS (mDNS). Jest to protokół zerowej konfiguracji, który działa w podsieciach LAN. Nie wymaga serwera. Używa
.local
TLD (to jest to, czego już używasz).Ponieważ pytasz, wszystko inne wydaje się przesadne. Gdyby tak nie było, prawdopodobnie nie zapytałbyś.
źródło
avahi
pakiety. Możeszavahi-browse -alr
na przykład wysłać zapytanie do sieci .i
źródło
service restart dhcpd
). Druga część zostanie wykonana na kliencie, a na większości dystrybucji należy teraz uruchomić jakoservice networking restart
.Komputery nie tylko magicznie wiedzą, jakie nazwy hostów należą do adresatów IP. Nawet na localhost wymaga pewnego rodzaju wyszukiwania.
Musisz skonfigurować inne systemy, aby korzystały z usługi wyszukiwania nazw. Może to być
/etc/hosts
na kliencie, ldap, nsswitch lub normalnym serwerze DNS. Używambind
i wprowadzam wszystkie maszyny lokalne w domenie lokalnej, a następnie obsługuję DNS dla tej witryny.źródło