Bir makineyi, ana bilgisayar adını kullanarak LAN'dan erişilebilir hale getirme


120

Ana bilgisayar adını kullanarak erişmek istediğim makinenin ayrıntıları:

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

Varsayılan bir Debian 6 (Squeeze) kurulumu, bu yüzden henüz hiçbir şey yapmadım.

Makinenin üstünden erişmeye çalışan (Debian Unstable çalıştıran) bir makineden aldığım şey:

$ 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

Müşteride (çalıştırdığınız makine ping) veya müşterinin danıştığı bir makinede bir şey yapmanız gerekir . İstemcideki işletim sistemi nedir? DNS yapılandırması nedir?
Gilles,

DNS yapılandırması nedir? Ayrıca, güncellenmiş gönderiye bakın.
tshepang

1
Cevabım, peşinde olduğun şeyler gibi mi? Eğer öyleyse, sorunun basitleştirilmesi gerekiyor - kim zaten DNS hakkında kim bilir pingve kim bilir /etc/hosts?
Gilles

Çok teşekkürler. Bir bakacağım. Oh, ve bu bir cevaptan daha çok bir yazı :)
tshepang

3
Cevap "dnsmasq kurulum ve yapılandırma" dır. Bitti. :)
Warren Young

Yanıtlar:


145

İnternette, yerel ağlar dahil, makineler birbirlerini IP adresleriyle çağırır . Makine B'ye, makine B adını kullanarak makine B'den erişmek için, makine A'nın B adını IP adresine eşlemenin bir yolu olmalıdır. A'da makine adlarını bildirmenin üç yolu vardır:

  • bir ana bilgisayar dosyası . Bu, adları adreslerle eşleyen basit bir metin dosyasıdır.
  • alan adı sistemi (DNS) . Küresel internette kullanılan yöntem budur. Örneğin, bu sayfayı bir tarayıcıya yüklediğinizde, bilgisayarınızın yaptığı ilk şey, adresini bilmek için bir DNS isteği yapmaktır unix.stackexchange.com.
  • NIS , LDAP veya Active Directory gibi diğer isim veritabanları . Bunlar bazı kurumsal ağlarda kullanılır, ancak çok sık kullanılmaz (kullanıcı veritabanları için NIS, LDAP veya AD kullanan birçok ağ, makine adları için DNS kullanır). Ağınız bunlardan birini kullanıyorsa, profesyonel bir ağ yöneticiniz vardır ve ona ne yapması gerektiğini sormalıdır.

Bunların pratikte çalışabileceği birçok yol vardır; hepsini gizlemek imkansız. Bu cevapta, birkaç ortak durumu açıklayacağım.

Hosts dosyası

Hosts dosyası yöntemi, herhangi bir özel yöntem gerektirmediği avantajına sahiptir. Birkaç makineniz varsa, kullanışsız olabilir, çünkü bir makinenin adı değiştiğinde her makineyi güncellemeniz gerekir. B'nin IP adresi dinamik olarak atanmışsa uygun değildir (böylece ağa her bağlandığınızda farklı bir tane alırsınız).

Ana bilgisayar dosyası, adları IP adreslerine eşleyen satırların basit bir listesidir. Bu gibi görünüyor:

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

Unix sistemlerde ana bilgisayar dosyasıdır /etc/hosts. Windows'ta öyle c:\windows\system32\drivers\etc\hosts. İnternete bağlayabileceğiniz her işletim sistemi için de benzer bir dosya var; Wikipedia'da bir liste var .

A'nın ana bilgisayar dosyasına B'ye bir giriş eklemek için:

  1. B'nin IP adresini belirleyin. B'de komutu çalıştırın ifconfig(eğer komut bulunmazsa deneyin /sbin/ifconfig). Çıktı şöyle satırları içerecektir:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    Bu örnekte, B'nin IP adresi 10.3.1.42'dir. Birkaç inet addr:satır varsa , hiçbir zaman logiriş veya bir tünel veya sanal giriş olan ağ kartınıza uygun olanı seçin .

  2. Hosts dosyasını A'da düzenleyin. A bazı unix sistemi kullanıyorsa, /etc/hostssüper kullanıcı olarak düzenlemeniz gerekir ; bkz. Komutu sistem yöneticisi olarak nasıl çalıştırırım (kök) .

Ev veya küçük ofis ağlarında DHCP + DNS

Gerekli donanıma sahipseniz, bu yöntem çok kolaydır. Yalnızca bir cihazı yapılandırmanız yeterlidir; tüm bilgisayarlarınız birbirlerinin adlarını bilecektir. Bu yöntem, bilgisayarlarınızın IP adreslerini DHCP üzerinden aldığını varsayar ; bu, bilgisayarların ağa bağlandığında otomatik olarak bir IP adresi alma yöntemidir. DHCP'nin ne olduğunu bilmiyorsanız, muhtemelen yaparlar.

Ağınızda bir ev yönlendiricisi varsa , bu yönlendiriciye bağlı makinelerin adlarını yapılandırmak için en iyi yer burasıdır. Öncelikle, B'nin MAC adresini bulmanız gerekir . Her ağ cihazının benzersiz bir MAC adresi vardır. B'de komutu çalıştırın ifconfig -a(eğer komut bulunmazsa deneyin /sbin/ifconfig -a). Çıktı şöyle satırları içerecektir:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

Bu örnekte MAC adresi 01:23:45:67:89:ab. Yönlendiriciye bir kablo (veya wifi üzerinden bağlıysanız wifi kartı) ile bağlanan ağ bağlantı noktasına karşılık gelen HWaddr hattını seçmelisiniz. Birkaç girişiniz varsa ve hangisinin hangisi olduğunu bilmiyorsanız, kabloyu takın ve hangi ağ cihazının bir IP adresi aldığını görün ( inet addrhemen altındaki satır).

Şimdi, yönlendiricinizin web arayüzünde “DHCP” gibi bir ayar arayın. Ayarın adı ve konumu tamamen yönlendirici modeline bağlıdır, ancak çoğu benzer temel ayarlara sahiptir. İşte bir Domates ürün bilgisinde nasıl göründüğü :

domates ekran görüntüsü

MAC adresini, bir IP adresini ve istediğiniz adı girin. Yerel ağınızın adres aralığındaki herhangi bir IP adresini seçebilirsiniz. Çoğu ev yönlendiricisi, 192.168 biçimindeki bir adres aralığı için önceden yapılandırılmıştır. x . y veya 10. x . y . z . Örneğin, yukarıda gösterilen Domates yönlendiricisinde, “Ağ” sekmesinde, 10.3.0.1 değerinde bir “yönlendirici IP adresi” ve 255.255.255.0 değerinde bir “alt ağ maskesi” ayarı bulunur; yerel ağın 10.3.0 biçiminde bir adresi olması gerekir. z . Ayrıca otomatik olarak atanmış DHCP adresleri için bir dizi adres vardır (10.3.0.129–10.3.0.254); Manuel olarak atanmış DHCP adresiniz için bu aralıkta olmayan bir tane seçin.

Şimdi B'ye ağa bağlanın; belirttiğiniz IP adresini almalı ve belirtilen adla ağdaki herhangi bir makineden erişilebilmelidir.

Dnsmasq ile kendi DNS sunucunuzu kurun

Yetenekli bir ev yönlendiriciniz yoksa, aynı işlevi herhangi bir Linux makinesinde ayarlayabilirsiniz. DNS kurmak için Dnsmasq'ın nasıl kullanılacağını açıklayacağım . Başka pek çok benzer program var; Dnsmasq'ı seçtim çünkü yapılandırması kolay ve hafiftir (örneğin yukarıda gösterilen Domates yönlendiricinin kullandığı şey). Dnsmasq, PC'ler, sunucular ve ağ ekipmanı için çoğu Linux ve BSD dağıtımında mevcuttur.

Her zaman açık, statik bir IP adresi olan ve bir tür Linux veya BSD çalıştıran bir bilgisayar seçin; hadi S (server için) diyelim. S'ye dnsmasqpaketi kurun (eğer zaten yoksa). Aşağıda yapılandırma dosyasının olduğunu kabul edeceğim /etc/dnsmasq.conf; konum bazı dağıtımlara göre değişebilir. Şimdi birkaç şey yapman gerekiyor.

  • Dnsmasq'a internetten aldıklarına ek olarak ana bilgisayar adlarını sunmalarını söyle. Basit yolu içinde adlarını ve IP adreslerini girmektir /etc/hosts(yukarıdaki bölümü “Sunucular dosya” bölümüne bakın) ve emin /etc/dnsmasq.confyoktur no-hostsyönerge uncommented. (İle başlayan satırlar #yorumlanır.) İsimleri farklı bir dosyaya koyabilirsiniz; bunu yaparsanız, bir çizgi koymak addn-hosts=/path/to/hosts/fileiçinde /etc/dnsmasq.conf.
  • Dnsmasq'a Internet'teki makinelerin adları için IP adreslerinin nasıl alınacağını söyleyin.

    • Debian, Ubuntu veya bir türev kullanıyorsanız, resolvconfpaketi kurun . En yaygın durumlarda, her şey kutudan çıkar.
    • Şebeke yöneticiniz veya İSS'niz size DNS sunucularının adreslerini verdiyse /etc/dnsmasq.conf, örneğin:

      server=8.8.8.8
      server=8.8.4.4
      
    • Geçerli DNS ayarlarınızın ne olduğunu bilmiyorsanız, dosyaya bakın /etc/resolv.conf. Bir satır gibi görürseniz nameserver 8.8.8.8, bir çizgi koymak server=8.8.8.8içinde /etc/dnsmasq.conf. /etc/dnsmasq.confDeğiştikten sonra Dnsmasq’ı yeniden başlatın. Bunu yapma komutu dağılıma bağlıdır; tipik olanaklar arasında restart dnsmasqveya /etc/init.d/dnsmasq restart.

  • S'ye, tüm ana bilgisayar adı istekleri için Dnsmasq hizmetini kullanmasını söyle. Dosyayı düzenleyin /etc/resolv.conf(root olarak), her nameserversatırı kaldırın ve nameserver 127.0.0.1yerine koyun .
    • Debian veya Ubuntu'da resolvconf kullanıyorsanız /etc/resolv.conf, resolvconfpaketi ağ kurup çalıştırırken yüklediyseniz , bu seçenek düşük olabilir . Dosyalar emin olun base, headve tailde /etc/resolvconf/resolv.conf.d/dizinde herhangi içermez nameserversonra, girdileri çalıştırmak resolvconf -u(root olarak).
  • Diğer makinelere S'yi DNS sunucusu olarak kullanmalarını söyleyin. Düzenleme /etc/resolv.conftamamının yerini ve nameservertek olan çizgiler nameserver 10.3.0.210.3.0.2 S IP adresi (S IP adresini bulmak için nasıl yukarıya bakınız) olduğu.

Dnsmasq'ı DHCP sunucusu olarak da kullanabilirsiniz , böylece makineler adlarına karşılık gelen adresi otomatik olarak alabilirler. Bu, bu cevabın kapsamı dışındadır; Dnsmasq belgelerine bakın (zor değil). Belirli bir yerel ağda yalnızca tek bir DHCP sunucusu olabileceğini unutmayın (yerel ağın tam tanımı bu cevabın kapsamı dışındadır).

Küresel İnternet'teki İsimler

Şimdiye kadar yerel bir ağ üstlenmiştim. Ya dünyanın farklı bir köşesinde olan bir makineye isim vermek istiyorsanız? DHCP'yi içeren parçaların yalnızca yerel bir ağ içinde uygulanabilir olması dışında, yukarıdaki tekniklerden herhangi birini kullanabilirsiniz. Alternatif olarak, makinelerinizin genel IP adresleri varsa, kendi genel adınızı onlar için kaydedebilirsiniz. (Genel bir IP adresine özel bir IP adresi de atayabilirsiniz; daha az yaygın ve daha az yararlıdır, ancak teknik zorluk yoktur.)

Kendi alan adınızı almak

Kendi etki alanı adınızı alabilir ve bu etki alanı içindeki ana bilgisayar adlarına IP adresleri atayabilirsiniz. Alan adını bir alan adı sağlayıcısına kaydetmeniz gerekir; bu genellikle yılda 10 ila 15 dolar arasındadır (en ucuz alanlar için). Ana bilgisayar adlarına adres atamak için etki alanı adı sağlayıcınızın web arayüzünü kullanın.

Dinamik DNS

Makinelerinizde dinamik bir IP adresi varsa, adres değiştiğinde makinenin adına bağlı IP adresini güncellemek için dinamik DNS protokolünü kullanabilirsiniz. Tüm alan adı sağlayıcıları dinamik DNS'i desteklemez, bu yüzden satın almadan önce alışveriş yapın. Kişisel kullanım için , eğer kendi alan adlarını kullanıyorsanız (örn. ) , No-IP ücretsiz bir dinamik DNS servisi sunar example.ddns.net.


Dnsmasq ile kendi DNS sunucunuzu yapın: diğer makineye Windows yüklü olduğunda, diğer makineye S kullanmasını nasıl söyleyebilirim
Radu Rădeanu

@Radu Bir bağlantıyla ilişkili DNS sunucularını kontrol panelinden bir yerde değiştirebilirsiniz. Ağ arabiriminin bağlantı özelliklerini kaldırmanız gerektiğini düşünüyorum.
Gilles,

C: \ windows \ system32 \ drivers \ etc \ hosts dizinini oluşturdum ve işe yarıyor. Teşekkürler!
Radu Rădeanu

Bunu aramak için saçlarımı çekiyordum ve yönlendiricide önerdiğin gibi buldum. Detaylı bilgi için teşekkürler!
Jason Turan,

Eğer bir şirket ağıysam, altyapı borcunu söylemeliyim. mac'umu DNS sunucu listesine eklemek için değil mi?
WesternGun

24

Çok Noktaya Yayın DNS (mDNS) kullanın . Bu, LAN alt ağlarında çalışan sıfır yapılandırma protokolüdür. Sunucu gerekli değil. TLD'yi kullanır .local(bu zaten kullandığınız şeydir).

Çünkü soruyorsun, başka her şey fazla görünüyor. Öyle olmasaydı, muhtemelen sormazdın.


1
mDNS, her pencereye bir şey kurmadan Windows'ta desteklenmiyor gibi görünüyor.
Zitrax

1
@ Zitrax İyi nokta (bu * bir Nix sitesi olsa da). Windows kurulumu için uygun bilgi orada bulunabilir - nispeten basit.
tne

3
Aka Zeroconf veya Bonjour. avahiPaket (ler) tarafından sağlanmıştır . Ağınızı avahi-browse -alrörneğin üzerinden sorgulayabilirsiniz .
DanMan

4
vi /etc/dhcp3/dhclient.conf

send host-name "ubuntu-laptop";

ve

/etc/init.d/networking restart

Bunu müşteride mi yoksa ana bilgisayarda mı çalıştırmalıyım?
tshepang

İlk bit dhcp sunucusunda yapılır (ve çalıştırmak istersiniz service restart dhcpd). İkinci kısım müşteri üzerinde yapılacak ve çoğu dağıtımda şimdi olduğu gibi çalıştırılması gerekiyor service networking restart.
Caleb,

Hatırladığım kadarıyla bunu sadece müşteri tarafında yapmam gerekiyor ..
LanceBaynes

3

Bilgisayarlar, hangi host adlarının hangi IP adreslerine ait olduğunu sihirli bir şekilde bilmiyorlar. Yerel ana bilgisayarda bile, bir çeşit arama var.

Bir tür isim arama servisi kullanmak için diğer sistemlerinizi yapılandırmanız gerekecektir. Bu /etc/hosts, istemci, ldap, nsswitch veya normal DNS sunucularında olabilir. bindYerel bir alan içindeki tüm yerel makineleri kullanıp girdim , ardından o site için DNS kullanmasını sağladım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.