IP-адресу Busybox ping працює, але nslookup імені хоста не вдається "погана адреса"


14

Я збираю власне ядро ​​3.14. Я побоююся, що я, можливо, залишив якусь важливу функцію для роботи в мережі, щоб налагодити роботу DNS.

Я не можу вирішити доменні імена. Я можу пінг мого DNS-сервера. Я можу вирішити використання цього DNS на інших машинах, тому я знаю, що це не сервер.

~ # cat /etc/resolv.conf
nameserver 192.168.13.5

~ # nslookup google.com
Server:    192.168.13.5
Address 1: 192.168.13.5

nslookup: can't resolve 'google.com'

~ # ping -c 1 google.com
ping: bad address 'google.com'

~ # ping -c 1 192.168.13.5 
PING 192.168.13.5 (192.168.13.5): 56 data bytes
64 bytes from 192.168.13.5: seq=0 ttl=128 time=0.382 ms

--- 192.168.13.5 ping ststistics ---
1 packets transmitted, 1 packets recieved, 0% packet loss
reound-trip min/avg/max = 0.382/0.382/0.382 ms

Будь-які ідеї, що я залишив? ось моя конфігурація: http://pastebin.com/vt4vGTgJ

Редагувати :

Якщо це не ядро, що я можу пропустити? Я використовую зайнятий ящик, статично пов'язаний. у цій системі немає спільних бібліотек.


У вас налаштований якийсь брандмауер? Якщо так, чи блокуєте ви порт 53 UDP / TCP?
Дженні Д

Ні брандмауера, ні блоку на порту 53. Я можу отримати доступ до DNS з іншої машини в тій самій підмережі.
AllenKll

Наскільки я знаю, ви не можете просто відключити функціональність DNS за допомогою .config-options зі свого ядра.
Бонсі Скотт

1
Ви впевнені, що ваш DNS-сервер @ 192.168.13.5 дозволяє рекурсивні запити? Наприклад, якщо dig @192.168.13.5 www.google.comви отримуєте додаткову інформацію? Чи можете ви виконувати рекурсивні запити на сервері DNS 192.168.13.5 з інших машин?
Чіпстер

1
здається, що у вашому ядрі все гаразд, але рішення DNS не працює. Ви отримали IP-сервер імен від DHCP? встановлений маршрут? спробуйте інший сервер імен, тобто nameserver 8.8.8.8.

Відповіді:


6

Проблема полягає в зайнятості. Я перейшов на попередньо складену версію і не мав проблем. Мені потрібно розглянути варіанти компіляції з ним. Спасибі за вашу допомогу.

https://gist.github.com/vsergeev/2391575 :

Існують відомі проблеми з функціональністю DNS у статично пов'язаних програмах glibc (як, наприклад, зайнятий ящик у цьому випадку), оскільки лібни повинні завантажуватися динамічно. Побудова ланцюжка інструментів uClibc та зв’язування зайнятої скриньки проти цього вирішить це.


Ви насправді компілювали зайняту скриньку проти uClibc, щоб перевірити цю відповідь, чи це просто здалося найбільш правдоподібним?
Тім

Я цього не тестував. Налагоджена версія працювала на мої проблеми.
AllenKll

2

Я зіткнувся з тією ж проблемою, і виявилося, що busybox вибагливий щодо формату Resol.conf. Між тегом серверу імен та адресою nslookup для роботи nslookup повинен бути рівно один пробіл. Крім того, /etc/nsswitch.conf має включати dns для хоста.

[masterbox master (git hash 349d72c19) sysroot-glibc-linaro-2.25-2018.05-arm-linux-gnueabihf]

root@4000000a:~# cat /etc/nsswitch.conf 
passwd:    files compat
shadow:    files compat
hosts:    files dns compat 

Так, питання старе, але поточна зайнята скринька все ще веде себе так.

[Я використовував xxd нижче, щоб показати кількість пробілів у резолюції.conf]

Це не вдається:

root@4000000a:~# xxd /etc/resolv.conf
00000000: 6e61 6d65 7365 7276 6572 2020 382e 382e  nameserver  8.8.
00000010: 382e 380a                                8.8.
root@4000000a:~# nslookup  www.cnn.com 
nslookup: bad address ' 8.8.8.8'

і це працює:

root@4000000a:~# xxd /etc/resolv.conf
00000000: 6e61 6d65 7365 7276 6572 2038 2e38 2e38  nameserver 8.8.8
00000010: 2e38 0a                                  .8.
root@4000000a:~# nslookup  www.cnn.com                
Server:     8.8.8.8
Address:    8.8.8.8:53

Non-authoritative answer:
www.cnn.com canonical name = turner-tls.map.fastly.net
Name:   turner-tls.map.fastly.net
Address: 151.101.1.67
Name:   turner-tls.map.fastly.net
Address: 151.101.65.67
Name:   turner-tls.map.fastly.net
Address: 151.101.129.67
Name:   turner-tls.map.fastly.net
Address: 151.101.193.67

Non-authoritative answer:
www.cnn.com canonical name = turner-tls.map.fastly.net
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42::323
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42:200::323
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42:400::323
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42:600::323

0

Я не впевнений, це та сама проблема, яка була у мене чи ні, але я нещодавно оновив і стару внутрішню систему DNS-сервера з OpenBSD 3.8 до 5.6, і втратив здатність вирішувати хости за допомогою ping, але команда хоста працювала. Виявилося, я повинен був додати 127.0.0.1/8 до директиви match-clients у найменуванні на додаток до 192.168.0.0/16, який я вже мав там, а потім він почав працювати належним чином після перезавантаження імені.


0

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

Мені вдалося лише про ping ip-адресу. З URL команда пінг повернуться bad address error. Потім я змінив resolv.confфайл.

sudo vim /etc/resolv.conf

nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4

І все працювало чудово.


1
Це, здається, не вирішує проблему для мене. Як згадувалося в ОП, схоже, що до статичних зв'язків це стосується лібнів, які не працюють. Компіляція зайнятої скриньки з uclibc (і udhcpc), здається, вирішує проблему для мене.
Аттіла О.

0

Я вирішив ті самі симптоми, відредагувавши: /etc/nsswitch.confта додавши DNS до наступного рядка:

hosts:      files dns

-1

sudo vim /etc/resolv.conf щоб відредагувати resoluv.conf, переконайтеся, що адреси серверів імен (а також ключове слово 'nameserver') розділені одним пробілом, а не комою, як показано нижче:

nameserver 8.8.8.8 8.8.4.4
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.