Пройдіть повний TLD (* .dev, наприклад) до 127.0.0.1


29

Для розробки я хочу, щоб усі запити DNS до .dev TLD пересилали на власний ПК.

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

Я читав, що для виконання цієї роботи може використовуватися експедитор DNS, як DNSmasq (наприклад, як описано тут ). Також це програмне забезпечення вже встановлено на Ubuntu 12.10.

Проблема полягає в тому, що я не бачу, як і де я повинен налаштувати DNSmasq, тобто де мені слід поставити цей рядок:

address=/dev/127.0.0.1

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

Відповіді:


18

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

Щоб зробити те, що ви хочете, вам потрібно буде використовувати dnsmasq як кешуючий DNS-сервер. Тобі потрібно:

  • Встановіть dnsmasq sudo apt-get install 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.
BenjaminRH

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використовувати dnsmasqDNS. 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.