Я боролся с этой проблемой в течение нескольких дней, и я не могу понять, что я делаю неправильно. Я разрабатываю вид, который будет использовать динамические субдомены, поэтому я пытаюсь заставить все домены, заканчивающиеся на .test, маршрутизировать на один IP-адрес (я понимаю, что не только субдомены будут маршрутизировать, но и все домены .test, но я разрабатываю все свои достопримечательности в домене .test).
Я пытался настроить dnsmasq для достижения этой цели, но я не могу заставить его работать. Я знаю, что NetworkManager запускает свой собственный экземпляр dnsmasq. Я сделал следующую запись в нескольких местах, пытаясь заставить это работать. Запись, которую я пробую, выглядит следующим образом: address = /. Test / 192.168.10.10 .
Я сделал записи в:
Сначала я попробовал установить каталоги dnsmasq NetworkManager , После того, как это не сработало, я установил dnsmasq и попробовал другие места, и это тоже не сработало.
Я попытался перезапустить мой сетевой интерфейс, и я перезагружал мою машину оба раза.
1110 Я не уверен, что делаю не так. Любая помощь будет оценена.
В Ubuntu по умолчанию установлен DNS-сервер-заглушка (прослушивающий порт 53
) с именем systemd-resolved
. Я не смог бы заставить dnsmasq
работать, не отключив заглушку. Я не уверен, что можно отключить turinig off systemd-resolved
, но так как он называется Stub DNS, думаю, все должно быть в порядке (sudo systemctl disable systemd-resolved.service
).
Затем я внес изменения в /etc/dnsmasq.conf
: раскомментируйте bind-interfaces
и заставьте dnsmasq прослушать 127.0.0.1:53
(listen=127.0.0.1
и port=53
).
Скажите NetworkManager использовать dnsmasq
в качестве DNS-сервера, добавив dns=dnsmasq
в /etc/NetworkManager/NetworkManager.conf
(в категории [main]
).
Теперь, когда systemd-resolved
отключено, вы можете редактировать /etc/resolve.conf
(по крайней мере, пока не установите другую службу, которая генерирует и управляет resolve.conf
). nameserver 127.0.0.53
больше не требуется, измените его на nameserver 127.0.0.1
.
Теперь вы сможете настроить dnsmasq
для разрешения вашего TLD по адресу, который вы хотите. Создайте файл /etc/dnsmasq.d/test.conf
с address=/.test/127.0.0.1
.
Перезапустите оба, dnsmasq
и NetworkManager
(sudo servicectl restart dnsmasq.service
, sudo servicectl restart network-manager.service
).
developer@ubuntu:~$ dig hi_eric.test
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> hi_eric.test
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59442
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;hi_eric.test. IN A
;; ANSWER SECTION:
hi_eric.test. 0 IN A 127.0.0.1
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jul 01 07:30:46 PDT 2018
;; MSG SIZE rcvd: 46
Недостатком является то, что это заставило меня использовать жестко закодированные DNS-серверы для исходящего трафика (потому что сейчас .test
- единственный домен, который может разрешить ваш сервер). Мне пришлось добавить resolv-file=/etc/resolve.dnsmasq
в /etc/dnsmasq.conf
и создать /etc/resolve.dnsmasq
с общедоступными DNS-серверами Google:
nameserver 8.8.8.8
nameserver 8.8.4.4
Перезапустить dnsmasq
в последний раз (sudo servicectl restart dnsmasq.service
). Теперь все более-менее должно работать нормально. .test
разрешается в 127.0.0.1
, все остальное разрешается открытыми DNS-серверами Google. Вы можете настроить dnsmasq
конфигурацию, увеличить размер кэша и т. Д.
Как я уже сказал, я не уверен на 100% об этом решении (и я на 99% уверен, что есть лучшее решение), но оно работает. Я надеюсь, что кто-то еще исправит все, что я сделал неправильно, и поможет вам лучше и стабильнее решить вашу (и мою!) Проблему. Ура!