Tam TLD'yi (örneğin * .dev) 127.0.0.1'e yönlendirin


29

Geliştirme amacıyla, tüm DNS isteklerinin .dev TLD'ye kendi bilgisayarıma iletilmesini istiyorum.

Hosts dosyası yeterli değil. Birden çok etki alanı ve aynı zamanda birden çok alt etki alanı kullanıyorum. Her kombinasyon için bir satır eklemek zorunda kalacağım.

İşi yapmak için DNSmasq gibi bir DNS ileticisinin kullanılabileceğini okudum (örneğin burada açıklandığı gibi ). Ayrıca bu yazılım Ubuntu 12.10'da zaten yüklü.

Sorun şu ki, DNSmasq'ı nasıl ve nereye yapılandırmam gerektiğini, yani bu satırı nereye koyacağımı görememem:

address=/dev/127.0.0.1

1
.devGoogle'ın aldığı gibi kullanmak istemeyebilirsiniz . Hala ne için kullanacaklarını ve düzenli çalışanlarla veya sadece çalışanlarla bağlantı kurmayı planlayıp planlamadıklarını araştırmaya devam ediyorum, ancak bu yalnızca bir test kutusu olmadıkça, eski olması durumunda tüm erişimi yeniden yönlendirmek istemeyebilirsiniz. asla harici ana bilgisayarlara bağlanmayacak.
trysis

Yanıtlar:


18

Tam bağımsız dnsmasq (DHCP ve DNS sunucusu) Ubuntu 12.04 ve 12.10'da varsayılan olarak kurulmaz, ancak dnsmasq-base adlı bir paket varsayılan olarak Ubuntu Desktop 12.04 ve 12.10'da kurulur. Dnsmasq-base paketi dnsmasq binary'ini içerir ve NetworkManager tarafından kullanılır.

İstediğinizi yapmak için dnsmasq'ı önbellekleme DNS sunucusu olarak kullanmanız gerekir. Gerek:

  • Dnsmasq'ı kurun sudo apt-get install dnsmasq
  • Ağ ayarlarınızı değiştirin, böylece bilgisayarınız kendisini dns sunucusu olarak kullanır.
  • Config dosyalarında değişiklikleri yapın:

/etc/dnsmasq.d/dev-tldBu içeriklerle oluşturun :

local=/dev/

address=/dev/127.0.0.5

İlk komut *.devtaleplerin gerçek DNS sunucunuza iletilemediğini söylüyor . İkincisi, hangisinin yerel ana makine olduğuna *.devkarar veriyor 127.0.0.5.

  • Dnsmasq servisini yeniden başlatın (ağ yöneticisi değil)

Teşekkür ederim! DNSMasq’ın şu anki gerçek anlaşma olmadığını bilmem son derece yardımcı oldu. Komple paketi kurduktan ve çalıştıktan önce tarif ettiğim şekilde yapılandırdıktan sonra. :)
Roel van Duijnhoven

1
Son masaüstü kurulumları için diğer cevabı tercih ederim . En yeni masaüstü kurulumlarında, bu şekilde iki dnsmasq örneği çalıştırıyor olacaksınız. Cevabınız NetworkManager olmayan kurulumlarda, daha eski olanlarda (dnsmasq kullanmadan) ve hatta sunucu kurulumlarında çok faydalı olabilir!
gertvdijk

Evet, diğer cevaplar Ubuntu 12.10’dan bu yana en iyisidir.
BenjaminRH

21

Ubuntu 12.10 veya sonrasında, bunu NetworkManager tarafından çalıştırılan şekilde dnsmasq ile yapabilirsiniz.

  1. mkdir /etc/NetworkManager/dnsmasq.dÖnceden yoksa dizini oluşturun .

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Aşağıdaki satırı atınız /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) NetworkManager'ı yeniden başlatın.

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04) Dnsmasq'ı yeniden başlatın.

    sudo service dnsmasq restart
    
  5. Muhteşemliğin tadını çıkar.

görüntü tanımını buraya girin


1
AbrahamVan'a, bunun nasıl yapılacağına dair arch wiki bağlantısına teşekkürler .
jrg

Adımlarınızı takip ettikten sonra, hala bir ping çalıştırdıktan sonra "bilinmeyen ana bilgisayarı" görüyorum. DNSMasq'ı başka bir yerde yapılandırmam / etkinleştirmem gerekir mi? Veya ağ özelliklerimi farklı şekilde yapılandırmak mı? Teşekkürler!
Roel van Duijnhoven

İlginç. benim için iyi görünüyor.
jrg

Ah, @RoelvanDuijnhoven - 12.10 veya 12.04 mü koşuyorsunuz? 12.10'da benim için iyi çalışıyor.
jrg

12.10'u çalıştırıyorum. Ancak burada bir soru sormadan önce bazı yapılandırma dosyalarını değiştirmeye çalıştığımı belirtmem gerekiyor. Muhtemelen bu değişiklikler çözümünüzü hafifletir. Ancak Javier Rivera'nın çözümü işe yaradı!
Roel van Duijnhoven

1

Aşağıdakiler Ubuntu 16.04'te benim için çalıştı:

  1. kurmak dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. dnsmasq.confDosyayı düzenle :

    sudo nano /etc/dnsmasq.conf
    
  3. Komutunu ekle:

    address=/dev/127.0.0.1
    

    Joker karakterde (*) WHATEWER_YOU_PUT_HERE.yourmachine.yourdomainaynı ipi çözmek için nokta (.) Sonra dnsmasq kullanabilirsiniz . Örneğin,address=/.localhost.dev/127.0.0.1

  4. Dnsmasq servisini yeniden başlatın:

    sudo /etc/init.d/dnsmasq restart
    

1

Yeni bir 19.04 yükledim ve çalışmasını sağlamanın tek yolu DNS yerine devre dışı bırakmak systemd-resolvedve NetworkManagerkullanımdı dnsmasq. NetworkManageriçin destek sağlamıştır dnsmasqve dnsmasq-basepaket varsayılan olarak yüklenmiştir.

Ben gibi farklı VM'lere birden fazla alan adını işaret ediyorum *.customerX.testiçin 192.168.33.10ve *.productY.testkarşı 192.168.33.20vb. *.devArtık kullanmayacağım, bunun yerine, ayrılmış üst düzey alanlardan birini kullanacağım .

Çözüm

  1. Devre Dışı systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. Düzenleme /etc/NetworkManager/NetworkManager.confkullanmak dnsmasqDNS için.

    [main]
    dns=dnsmasq
    
  3. dnsmasqYapılandırmayı içine koy/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. ve son olarak yeniden NetworkManageryeni bir üretecektir hangi/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
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.