カーグレードLinux(Halibut 8.0.0)を使用してDNSアドレスを確認するには?

カーグレードLinux(Halibut 8.0.0)を使用してDNSアドレスを確認するには?

Qualcommマザーボードに自動車用Linux(Halibut 8.0.0)をインストールしました。イーサネットの電源を入れることができます。

sa8155:~# ifconfig eth0 up
sa8155:~# udhcpc
udhcpc: started, v1.29.3
udhcpc: sending discover
udhcpc: sending select for 10.0.0.112
udhcpc: lease of 10.0.0.112 obtained, lease time 604800
/etc/udhcpc.d/50default: Adding DNS 75.75.75.75
/etc/udhcpc.d/50default: Adding DNS 75.75.76.76

DHCP レポートはネームサーバーを正しく検索しています。

ネームサーバーにpingを送信できます。

sa8155:~# ping 75.75.75.75
PING 75.75.75.75 (75.75.75.75): 56 data bytes
64 bytes from 75.75.75.75: seq=0 ttl=58 time=8.973 ms
64 bytes from 75.75.75.75: seq=1 ttl=58 time=19.634 ms
64 bytes from 75.75.75.75: seq=2 ttl=58 time=11.391 ms

ただし、DNSを使用して名前を解決することはできません。

sa8155:~# nslookup debian.org
nslookup: write to '127.0.0.1': Connection refused
;; connection timed out; no servers could be reached

この説明を除いて、/etc/resolv.confが空であることを確認しました。

sa8155:~# cat /etc/resolv.conf 
# Generated by Connection Manager

次のように/etc/resolv.confを手動で編集してみました。

sa8155:~# cat /etc/resolv.conf 
# Generated by Connection Manager
search example.com local.test
nameserver 75.75.75.75
nameserver 75.75.76.76

しかし、これはイーサネットインターフェイスを完全に無効にするようです。

sa8155:~# nslookup www.google.com
nslookup: write to '127.0.0.1': Connection refused
;; connection timed out; no servers could be reached

/ etc / hostsに個々のホストとIPアドレスのペアを手動で追加しようとしましたが、ルートであるにもかかわらずファイルを編集することはできません。

sa8155:~# ls -alF /etc/ | grep host
-rw-r--r--  1 root     root         26 Nov 13  2019 host.conf
-rw-r--r--  1 root     root     111912 Nov 13  2019 hostapd.conf
-rw-r--r--  1 root     root          7 Nov 13  2019 hostname
-rw-r--r--  1 root     root        237 Nov 13  2019 hosts
-rw-r--r--  1 root     root          0 Nov 13  2019 hosts.allow
-rw-r--r--  1 root     root          0 Nov 13  2019 hosts.deny
sa8155:~# chmod 766 /etc/hosts
chmod: changing permissions of `/etc/hosts': Read-only file system

そのため、ConnManを使用してDNSエントリを追加してみました。

これはプログラムです

ただし、connmanctl サービスは期待されるリストを返しません。

sa8155:~# connmanctl services
Error: The name net.connman was not provided by any .service files
sa8155:~# 

アップデート:cat /etc/nsswitch.conf

sa8155:/etc/systemd/network# cat /etc/nsswitch.conf 
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          localuser files myhostname  mdns4_minimal [NOTFOUND=return] dns
networks:       files

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

netgroup:       nis
sa8155:/etc/systemd/network# 

答え1

TegraのYoctoディストリビューションでも同様の問題が発生しました。私の問題は、connmanとsystemd-networkdの両方が構成され、リソースを配置して競合することです。

systemd を使用している場合は、connman で使用するインターフェイスと一致するネットワーク構成がないことを確認してください。

ネットワーク接続された .network ファイルは /etc/systemd/network にあります。 connmanに私のすべてのインターフェースを管理させるので、フォルダは空です。

関連情報