Направьте полный TLD (например, * .dev) на 127.0.0.1.


29

В целях разработки я хочу, чтобы все DNS-запросы к домену .dev пересылались на мой собственный ПК.

Файл hosts не хватает. Я использую несколько доменов, а также несколько поддоменов. Я должен был бы добавить строку для каждой комбинации.

Я прочитал, что DNS-сервер пересылки, такой как DNSmasq, может использоваться для выполнения этой работы (например, как описано здесь ). Также это программное обеспечение уже установлено в Ubuntu 12.10.

Проблема в том, что я не вижу, как и где я должен настроить DNSmasq, то есть, где я должен поместить эту строку:

address=/dev/127.0.0.1

1
Вы можете не захотеть использовать, .devкак Google взял его. Я все еще исследую, для чего они будут его использовать и планируют ли обычные люди подключаться к нему или просто сотрудников, но вы можете не захотеть перенаправлять весь доступ в случае, если он первый, если только это не тестовый блок, который никогда не будет подключаться к внешним хостам.
trysis

Ответы:


18

Полный автономный dnsmasq (сервер DHCP и DNS) не установлен по умолчанию в Ubuntu 12.04 и 12.10, но пакет с именем dnsmasq-base установлен по умолчанию в Ubuntu Desktop 12.04 и 12.10. Пакет dnsmasq-base содержит двоичный файл dnsmasq и используется NetworkManager.

Чтобы сделать то, что вы хотите, вам нужно использовать dnsmasq в качестве кэширующего DNS-сервера. Вам нужно:

  • Установить dnsmasq sudo apt-get установить dnsmasq
  • Измените настройки сети, чтобы ваш компьютер использовал себя в качестве DNS-сервера.
  • Внесите изменения в конфигурационные файлы:

Создайте /etc/dnsmasq.d/dev-tldс этим содержанием:

local=/dev/

address=/dev/127.0.0.5

Первая команда говорит, что *.devзапросы не могут быть перенаправлены на ваш реальный DNS-сервер. Второй говорит, *.devрешает, 127.0.0.5который является localhost.

  • Перезапустите сервис dnsmasq (не сетевой менеджер)

Спасибо! Это было чрезвычайно полезно, когда я узнал, что подарок DNSMasq не был реальной сделкой. После установки полного пакета и его настройки, как я описал ранее, я получил его на работу. :)
Roel van Duijnhoven

1
Я бы предпочел другой ответ для недавних настольных установок. Для недавних настольных установок вы будете запускать два экземпляра dnsmasq таким образом. Ваш ответ может быть очень полезен при настройках не NetworkManager, более старых (не использующих dnsmasq) или даже при установке на сервер!
gertvdijk

Да, другой ответ лучше, чем Ubuntu 12.10.
БенджаминRH

21

В Ubuntu 12.10 или более поздней версии вы можете сделать это с помощью dnsmasq, запущенного NetworkManager.

  1. Создайте каталог, mkdir /etc/NetworkManager/dnsmasq.dесли он еще не существует.

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Бросить следующую строку в /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) Перезапустите NetworkManager.

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04) Перезапустите Dnsmasq.

    sudo service dnsmasq restart
    
  5. Наслаждайтесь удивительностью.

введите описание изображения здесь


1
Спасибо AbrahamVanHelpsing за ссылку на арку вики о том, как это сделать.
jrg

После того, как вы по-прежнему выполняете ваши действия, я вижу «неизвестный хост» после запуска пинга. Нужно ли настраивать / включать DNSMasq в каком-то другом месте? Или настроить свойства моей сети по-другому? Благодарность!
Roel van Duijnhoven

Интересный. это хорошо для меня.
JRG

Ах, @RoelvanDuijnhoven - у вас работает 12.10 или 12.04? У меня нормально работает на 12.10.
JRG

Я бегу 12.10. Но я должен упомянуть, что я пытался изменить какой-то конфигурационный файл, прежде чем задавать вопрос здесь. Возможно, эти изменения смягчают ваше решение. Решение Хавьера Риверы, однако, добилось цели!
Roel van Duijnhoven

1

В Ubuntu 16.04 у меня работало следующее:

  1. устанавливать dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. Редактировать dnsmasq.confфайл:

    sudo nano /etc/dnsmasq.conf
    
  3. Добавьте вашу команду:

    address=/dev/127.0.0.1
    

    Для подстановочного знака (*) вы можете использовать точку (.), Затем dnsmasq для разрешения WHATEWER_YOU_PUT_HERE.yourmachine.yourdomainтого же ip. Например,address=/.localhost.dev/127.0.0.1

  4. Перезапустите службу dnsmasq:

    sudo /etc/init.d/dnsmasq restart
    

1

Только что установил свежий 19.04, и единственный способ systemd-resolvedзаставить его работать - это отключить его и NetworkManagerиспользовать dnsmasqвместо него для DNS. NetworkManagerимеет встроенную поддержку dnsmasqи dnsmasq-baseпакет установлен по умолчанию.

Я указывая несколько доменов на различные виртуальные машины , как *.customerX.testв 192.168.33.10и *.productY.testк 192.168.33.20и так далее. Я бы *.devбольше не использовал , а вместо этого один из зарезервированных доменов верхнего уровня .

Решение

  1. Отключить systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. Изменить /etc/NetworkManager/NetworkManager.confдля использования dnsmasqдля DNS.

    [main]
    dns=dnsmasq
    
  3. Положить dnsmasqконфигурацию в/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. и, наконец, перезагрузите компьютер, NetworkManagerкоторый будет генерировать новый/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.