dnsmasq не работает для указания .local адресов на 127.0.0.1

dnsmasq не работает для указания .local адресов на 127.0.0.1

Я хотел бы получить .localадреса (например, test.local), на которые можно было бы указать, 127.0.0.1но это не работает. У меня последняя версия Ubuntu. В /etc/NetworkManager/NetworkManager.conf я закомментировал, dns=dnsmasqа затем сделал sudo service network-manager restart.

Затем я установил dnsmasq и добавил address=/local/127.0.0.1в /etc/dnsmasq.d/mycustomfile, затем сделал sudo service dnsmasq restart. Помимо того, что я упомянул, я не делал никаких других изменений.

Но когда я захожу на test.local, он не разрешается в 127.0.0.1, ping этого адреса .local также не увенчался успехом. Возможно, содержимое /etc/resolv.confимеет значение, просто это значение по умолчанию, я его не менял:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 222.11.22.36
nameserver 222.11.22.37

Вот вывод, когда я запускаю dnsmasq не как демон:

$ sudo dnsmasq --no-daemon     
dnsmasq: started, version 2.68 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 222.11.22.37#53
dnsmasq: using nameserver 222.11.22.36#53
dnsmasq: read /etc/hosts - 9 addresses

При запуске dnsmasq файл /etc/resolv.conf автоматически обновляется (и возвращается к записи выше при остановке dnsmasq):

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

И это:

$ sudo nslookup test.local 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   test.local
Address: 127.0.0.1

Но пинг на localhost по-прежнему не работает.

Что мне нужно сделать, чтобы dnsmasq заработал для разрешения адресов .local?

решение1

localпохоже, это какое-то зарезервированное ключевое слово, по крайней мере в Ubuntu:

  • address=/local/127.0.0.1-- не работает.
  • address=/loc/127.0.0.1-- работает.

решение2

Похоже, dnsmasq запускается правильно. Вам следует проверить, правильно ли работает dnsmasq с nslookup test.local 127.0.0.1.

Чтобы убедиться, что система использует dnsmasq, необходимо обновить параметр, /etc/resolv.confчтобы использовать его nameserver 127.0.0.1в качестве первого.

Вы также можете использовать пользовательскую конфигурацию восходящего преобразователя на dnsmasq с --resolv-file=/etc/resolv.conf.dnsmasq.

решение3

Вероятно, avahi-daemon использует домен "local". Смотрите:

https://unix.stackexchange.com/questions/352237/avahi-daemon-and-local-domain-issues

решение4

Если то, что вы хотите, включает в себя только указание на вашу собственную машину, а не попытку использовать dnsmasq для управления разрешением DNS других компьютеров, то вам нужно просто добавить несколько записей в /etc/hosts. Я бы рекомендовал вам отменить все ваши изменения в dnsmasq и его настройках и убедиться, что /etc/hostsв верхней части есть следующее:

127.0.0.1 localhost
127.0.1.1 mycomputername mycomputername.local anothername.local

После этого ping mycomputername.local будет указывать на вас (на самом деле, будет указывать на сервер dnsmasq, работающий на 127.0.1.1, ЗАТЕМ на localhost). Вы даже можете добавлять записи для других компьютеров в вашей сети, чтобы вам казалось, что на этой машине эти компьютеры можно называть и computer1.local computer2.localт. д.

192.168.1.31 computer1.local
192.168.1.32 computer2.local

Если вы не можете отменить изменения с помощью dnsmasq, то вы можете добавить эти дополнительные записи после localhost, но не удаляйте и не изменяйте localhostсаму запись. Вот так:

127.0.0.1 localhost mycomputername mycomputername.local anothername.local

BTW: правильный способ изменить resolv.conf на рабочем столе Ubuntu — с помощью сетевого менеджера на панели задач. Правильный способ на сервере Ubuntu — добавить dns-nameserverзаписи под сетевым устройством /etc/network/interfacesи либо перезапустить, либо сделать ifdown eth0 && ifup eth0. Как гласит предупреждение в /etc/resolv.conf, не изменяйте его напрямую, он записывается динамически на основе /etc/network/interfacesнастроек.

Связанный контент