LINUX.ORG.RU

Не работает dns при запуске dhcpcd

 ,


0

1

При запуске dhcpcd не работает dns, при этом пинг по ip адресу работает.

dhcpcd.conf:

# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

interface wlan0
static domain_name_servers=8.8.8.8

Интерфейс запускается следующим образом:

# modprobe rt2800usb
...
# wpa_supplicant -B -Dwext -iwlan0 -c /usr/local/etc/wpa_supplicant.conf
...

# dhcpcd wlan0
all: IPv6 kernel autoconf disabled
wlan0: adding address fe80::d5ec:46d2:4d48:9e42
if_addaddress6: Operation not supported
script_runreason: /lib/dhcpcd/dhcpcd-run-hooks: WEXITSTATUS 127
script_runreason: /lib/dhcpcd/dhcpcd-run-hooks: WEXITSTATUS 127
wlan0: waiting for carrier
[ 2663.433046] wlan0: authenticate with 40:4a:03:42:17:0f
[ 2663.573679] wlan0: send auth to 40:4a:03:42:17:0f (try 1/3)
[ 2663.581269] wlan0: authenticated
[ 2663.584864] rt2800usb 2-1.3:1.0 wlan0: disabling HT as WMM/QoS is not supported by the AP
[ 2663.594791] rt2800usb 2-1.3:1.0 wlan0: disabling VHT as WMM/QoS is not supported by the AP
[ 2663.609222] wlan0: associate with 40:4a:03:42:17:0f (try 1/3)
[ 2663.627678] wlan0: RX AssocResp from 40:4a:03:42:17:0f (capab=0x31 status=0 aid=6)
[ 2663.642889] wlan0: associated
wlan0: carrier acquired
all: IPv6 kernel autoconf disabled
script_runreason: /lib/dhcpcd/dhcpcd-run-hooks: WEXITSTATUS 127
DUID 00:01:00:01:c9:73:fa:7a:7c:dd:90:bf:ad:54
wlan0: IAID 90:bf:ad:54
wlan0: soliciting a DHCP lease
wlan0: offered 192.168.30.32 from 192.168.30.1
wlan0: probing address 192.168.30.32/24
wlan0: leased 192.168.30.32 for 1200 seconds
wlan0: adding route to 192.168.30.0/24
wlan0: adding default route via 192.168.30.1
script_runreason: /lib/dhcpcd/dhcpcd-run-hooks: WEXITSTATUS 127
forked to background, child pid 1878
# 
# ping ya.ru
ping: bad address 'ya.ru'

При этом, если использовать ifup - то все работает, но ifup использует udhcpc, хотелось бы отказаться от него в пользу dhcpcd из-за некоторых глюков в процессе работы.

# ifup wlan0
udhcpc (v1.24.1) started
Sending discover...
Sending select for 192.168.30.32...
Lease of 192.168.30.32 obtained, lease time 1200
deleting routers
adding dns 192.168.30.1
# 
# ping ya.ru
PING ya.ru (87.250.250.242): 56 data bytes
64 bytes from 87.250.250.242: seq=0 ttl=48 time=10.295 ms
64 bytes from 87.250.250.242: seq=1 ttl=48 time=8.960 ms
64 bytes from 87.250.250.242: seq=2 ttl=48 time=8.520 ms

--- ya.ru ping statistics ---

И файл resolv.conf пуст.

Ответ на: комментарий от mky
# /etc/nsswitch.conf

passwd:         files
group:          files
shadow:         files

hosts:          files dns
networks:       files dns

protocols:      files
services:       files
ethers:         files
rpc:            files

В случае с dhcpcd resolv.conf указывает на несуществующий файл, в случае с udhcpc содержит

# cat ./resolv.conf 
nameserver 192.168.30.1 # wlan0
Но тут такой момент, udhcpc юзает данные из /etc/network/interfaces, а dhcpcd, как я понимаю, нет и руководствуется только собственными настройками.

На всякий случай:

# cat ./network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

auto wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant.conf

id_thx1138 ()
Ответ на: комментарий от mky

Еще уточнение, ситуация не зависит от используемого интерфейса, что eth0, что wlan0 - dhcpcd ведет себя одинаково :/

id_thx1138 ()
Ответ на: комментарий от mky

Если сделать ifup, ifdown и затем dhcpcd, то resolv.conf просто пуст, но файл существует.

id_thx1138 ()

Если самостоятельно создать resolv.conf, то dns в dhcpcd начинает работать!

echo -e "nameserver 8.8.8.8 # ddns for eth0, wlan0\n" > /tmp/resolv.conf
Переформулируем теперь вопрос, почему dhcpcd не создает resolv.conf?

Содержимое директории etc:

# ls -l
total 80
lrwxrwxrwx    1 root     root            19 Jan  1 00:41 dhcp -> /usr/local/etc/dhcp
lrwxrwxrwx    1 root     root            26 Jan  1 00:41 dhcpcd.conf -> /usr/local/etc/dhcpcd.conf
-rw-r--r--    1 root     root            42 Jan  1 00:41 dhcpcd.duid
lrwxrwxrwx    1 root     root            26 Jan  1 00:41 dhcp??d.conf -> /usr/local/etc/dhcpcd.conf
-rw-r--r--    1 root     root           492 Apr 23  2016 fstab
-rw-r--r--    1 root     root           304 Jan 28  2016 group
-rw-r--r--    1 root     root             6 Aug 13  2018 hostname
-rw-r--r--    1 root     root            36 Aug 13  2018 hosts
...
drwxr-xr-x    6 root     root           140 Jan 28  2016 network
-rw-r--r--    1 root     root           230 Apr 13  2016 nsswitch.conf
...
lrwxrwxrwx    1 root     root            18 Feb  3  2016 resolv.conf -> ../tmp/resolv.conf
...
-rw-r--r--    1 root     root            78 Mar 24  2017 wpa_supplicant.conf

id_thx1138 ()

Благодаря этой статье https://habr.com/post/280037/ разобрался, что у меня в системе просто не хватало /lib/dhcpcd/dhcpcd-run-hooks (рукалицо)

Большое спасибо за направление поиска в сторону resolv.conf!

id_thx1138 ()

Для удобства модификации (и запутывания системных администраторов) у dhclient-script'а есть хуки. Их положение разнится (в Ubuntu Xenial и Debian Stretch это /etc/dhcp/dhclient-exit-hooks.d, для какой-то версии Centos — /etc/dhclient-enter-hooks/ и т.д.). XD

id_thx1138 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.