На Ubuntu 14.04 я использую dnsmasq для разрешения подстановочных доменов example.com к локальной машине (настольный компьютер дома).
После большого чтения вокруг я не могу ни за что в жизни разобраться в том же на чистой установке 18,04.
Все, чего я хочу достигнуть в данный момент:
ping example.com
проверять с помощью ping-запросов 127.0.0.1 а не 93.184.216.34;ping anysubdomain.example.com
также проверять с помощью ping-запросов 127.0.0.1;ping google.com
проверять с помощью ping-запросов реальный google.com через маршрутизатор/IP DNS.Конечно, это должно быть просто, даже тривиально?
Но я озадачен. Я могу получить разрешение example.com, но только за счет повреждения всего остального.
Как я могу сделать это?
Вот шаги для человечности 18.04. Это немного давно systemd-resolved
не играет очень хорошо с NetworkManager
при конфигурировании с dnsmasq
.
Все же я все еще рекомендую запуститься dnsmasq
от NetworkManager
, потому что изменения сетевой связности (WI-FI, соединенный проводом...), будут обработаны прозрачно.
Включите dnsmasq в NetworkManager
Отредактируйте файл /etc/NetworkManager/NetworkManager.conf
, и добавьте строку dns=dnsmasq
к [main]
раздел, это будет похоже на это:
[main]
plugins=ifupdown,keyfile
dns=dnsmasq
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
Позвольте NetworkManager справиться /etc/resolv.conf
sudo rm /etc/resolv.conf ; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf
Настроить example.com
echo 'address=/.example.com/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/example.com-wildcard.conf
Перезагрузка NetworkManager
и тестирование
NetworkManager должен быть перезагружен для изменений для вступления в силу.
sudo systemctl reload NetworkManager
Затем мы можем проверить, что можем добраться до некоторого обычного сайта:
dig askubuntu.com +short
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69
И наконец проверьте что example.com
и субдомены разрешены как 127.0.0.1
:
dig example.com askubuntu.example.com a.b.c.d.example.com +short
127.0.0.1
127.0.0.1
127.0.0.1
Сначала удостоверьтесь в /etc/NetworkManager/NetworkManager.conf
следующая строка не присутствует или прокомментирована:
dns=dnsmasq
Перезапуск NetworkManager:
sudo systemctl restart NetworkManager
Удостоверьтесь, что NetworkManager-управляемый dnsmasq не работает больше, или путем уничтожения процесса или перезагрузки системы.
Затем установка dnsmasq:
sudo apt install dnsmasq
Добавьте следующее к /etc/dnsmasq.d/example.com
:
address=/example.com/127.0.0.1
Перезапуск dnsmasq:
sudo systemctl restart dnsmasq
Теперь у Вас должен быть подстановочный знак переопределение DNS для example.com.
Это не будет столь же просто как редактирование файла hosts. У Вас есть несколько опций:
Этот прокси DNS Python, который обработает подстановочные знаки в/etc/hosts
Основываясь на ответе pim, я создал суть, содержащую простой сценарий Bash, который использует DNSMasq в сочетании с NetworkManager для настройки домена .test, указывающего на 127.0.0.1
См. суть на https://gist.github.com/archan937/d35deef3b1f2b5522dd4b8f397038d27.
Вы можете запустить скрипт с помощью следующей команды:
curl -sL https://gist.githubusercontent.com/archan937/d35deef3b1f2b5522dd4b8f397038d27/raw/setup-dnsmasq.sh | sudo bash
Ура!