Я работаю над созданием домашней сети для меня и моих соседей по комнате. Моя идея заключается в том, что мы сможем хранить такие вещи, как прошлые счета за коммунальные услуги, в месте, более доступном, чем ящик на кухне и т. Д. В любом случае, у меня Apache 2 работает на Raspberry Pi, в моей локальной сети, и если я использую его IP-адрес, я могу получить доступ к страницам, обслуживаемых на Pi. Поскольку я больше занимаюсь этим проектом, чтобы узнать больше о сетевом взаимодействии и предоставлении услуг для моей квартиры, я подумал, что было бы здорово, если бы моя сеть могла обеспечить разрешение имени хоста для моей локальной сети. Поэтому вместо того, чтобы указывать в своем браузере 192.168.1.151
IP-адрес Pi, я мог бы указать его oberon
(его имя хоста) и просматривать веб-страницы, обслуживаемые Pi.
Теперь я знал, что я был не первым, кто хотел это сделать, поэтому я начал с Google. Этот вопрос, также касающийся Unix и Linux, очень помог мне: как сделать машину доступной из локальной сети, используя ее имя хоста . На данный момент, я попробовал все в проверенном ответе. Я думал об использовании hosts
файла, но это означало бы, что я должен был бы сказать своим соседям по комнате, чтобы они настраивали свои машины, что я не хочу, чтобы они делали. Я пытался зарезервировать аренду DHCP для Pi на моем маршрутизаторе (NETGEAR WNR1000v2 (он же N150)), и хотя резервирование работало, разрешение имени хоста не выполняется. Этот вид разочаровывает меня, потому что я сообщил маршрутизатору IP-адрес Pi и его имя хоста, но он по-прежнему не предоставляет эту информацию клиентам в моей локальной сети.
С этими двумя методами не работает, я решил установить dnsmasq
на Pi. Это казалось простым в настройке, и я был бы счастлив изучить новый инструмент. Я установил и он работает нормально (кажется). Я могу dig
или nslookup
прозвища Пи (которые я предлагаю в /etc/hosts
к oberon
и homenet
) и получить правильные результаты. Я могу сделать то же самое для имен в Интернете, таких как yahoo.com
и получить правильные ответы, потому что я настроил Google 8.8.8.8
и в 8.8.4.4
качестве серверов резервного копирования в /etc/dnsmasq.conf
. Посмотри это:
me@oberon~$ dig oberon
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;oberon. IN A
;; ANSWER SECTION:
oberon. 0 IN A 192.168.1.151
;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct 6 18:59:18 2013
;; MSG SIZE rcvd: 40
Обратите внимание, что SERVER
is 127.0.0.1
: oberon
ищет свой собственный IP-адрес сам по себе. Это то, что я ожидал увидеть. Вывод такой же, если я делаю dig oberon @localhost
. Из-за этого вывода, я думаю, что dnsmasq
работает нормально. Поэтому, чтобы вывести его на новый уровень, я хочу, чтобы все клиенты в моей локальной сети могли печатать oberon
в своем браузере и переходить на oberon
главную страницу. Для этого я знаю, что мне нужно настроить мой маршрутизатор (извините, если это отклоняется от строго Unix & Linux территории).
У меня есть Netgear WNR1000v2, с которым я довольно хорошо знаком. Я настроил переадресацию портов, чтобы я мог подключаться по SSH к Pi, и я также изучил другие параметры. Я знаю, что до того, как я начал этот проект, я получал свои DNS-серверы от своего интернет-провайдера, но теперь я хочу использовать эти DNS-серверы в первую очередь, но также использовать 192.168.1.151
в качестве последней проверки. Поэтому я изменил конфигурацию DNS моего маршрутизатора следующим образом:
Так что с этим конфигом я ожидал, что смогу сделать это nslookup oberon
на своем (Windows) рабочем столе и получить результат 192.168.1.151
. Но этого не происходит. Вот что происходит:
C:\Users\me>nslookup oberon
Server: UnKnown
Address: fe80::226:f2ff:fefa:bea
*** UnKnown can't find oberon: Non-existent domain
Сброс или dnsflushing
сетевой адаптер на моем компьютере с Windows ничего не меняет.
Теперь вот почему я как бы рву свои волосы здесь:
C:\Users\me>nslookup oberon 192.168.1.151
Server: oberon.lan
Address: 192.168.1.151
Name: oberon
Address: 192.168.1.151
Понятно, dnsmasq
работает просто отлично. Если я скажу своему окну Windows использовать 192.168.1.151
для разрешения имени oberon
, все будет хорошо ( .lan
домен был частью конфигурации dnsmasq
, поэтому я ожидал увидеть его там). Если бы я мог просто заставить свой маршрутизатор сказать моей машине Windows, что она использует, 192.168.1.151
когда она делает запросы DNS, я был бы хорош!
Поэтому мне кажется, что проблема в моем маршрутизаторе, но я просто не могу понять, что делать, кроме изменения DNS-серверов для включения, 192.168.1.151
как у меня уже есть. Может ли кто-нибудь помочь мне здесь? Я постараюсь предоставить любую дополнительную информацию по желанию.
источник
Ответы:
Ваша проблема заключается в неправильном понимании того, как используются эти DNS-серверы. Я не знаю точных подробностей метода, который Windows использует для выбора сервера DNS, но я держу пари, что его основной> вторичный> третичный / всегда /. И даже если это не так и было циклическим перебором, вы все равно будете запрашивать бесполезный сервер 2 из 3 раз.
Что произойдет, основной сервер будет запрошен. Если этот тайм-аут, который может быть вторым или вторым, будет запрошен следующий сервер. DNS не является «консенсусной» системой, и если запрашивается один из удаленных серверов, он в конечном итоге обнаружит результат, в котором ваше имя хоста не существует авторитетно, с точки зрения интернет-DNS-сервера.
Вам нужен собственный LAN DNS в качестве основного DNS-сервера. Остальные сделали бы подходящие серверы резервного копирования, но я бы подумал просто об этом отказаться.
Также следует отметить, что ваш обратный днс (поиск IP-адресов) преобразуется в "hostname.lan", но ваши тесты прямого разрешения выполняются только с именем хоста. У вас также должно быть настроено прямое разрешение для hostname.lan. Несмотря на то, что может быть много прямых обращений «имя к адресу» для хоста, существует ожидание, что есть обратный поиск IP для имени, которое, в свою очередь, имеет имя, совпадающее с этой записью IP. Это не всегда критично и иногда заставляет лог-файлы ныть, но некоторые вещи более чувствительны к этому, чем другие.
Кроме того, не забудьте удалить все файлы хост-файлов, которые вы установили, как только вы все это заработаете (я не знаю, относится ли это к dnsmasq, никогда не использовал его, у меня есть похожая, но более сложная конфигурация с использованием имени ISC-BIND сервер, который вы можете настроить для переадресации на другие серверы, которые вы используете, или просто использовать его как DNS-сервер без переадресации, который выполняет полное разрешение имен самостоятельно (что я и настроил).
Излишне говорить, что, как вы впервые предположили, что вы очень, очень далеки от одиночества при создании этой настройки, почти в каждой разумно развитой корпоративной ЛВС и в очень многих сверхразработанных домашних ЛВС будет такая установка.
источник
nslookup oberon
не менее, по- прежнему не работает. Одна вещь, которую я не упомянул в тексте моего первоначального поста, это то, что в случаеnslookup
неудачи он говорит, что используемый им сервер былfe80
IPv6-адресом, который, как я знаю, является зарезервированным локальным адресом ссылки. Но я не знаю, что это значит для DNS. Моя коробка Windows запрашивает себя?dnsflush
не меняет это поведение..lan
домена, я настроилdnsmasq
автоматическое расширение простых имен хостов для добавления.lan
. Запускnslookup oberon.lan 192.168.1.151
возвращает ожидаемый результатName: oberon.lan Address: 192.168.1.151
ipconfig /all
, показывает ли правильный используемый сервер днс, если это правильно, вам может понадобиться flushdns. Но я не могу думать ни о чем другом, это должно работать.Возможно, немного поздно, но отключение ipv6 на моем беспроводном адаптере помогло.
источник