자동차급 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이 내 모든 인터페이스를 관리하도록 하기 때문에 이제 폴더는 비어 있습니다.

관련 정보