ARP 호스트 이름 문제

ARP 호스트 이름 문제

내 LAN에 있는 장치의 호스트 이름을 보는 데 문제가 있습니다. 내 첫 번째 노트북(Ubuntu 18.04 LTS Desktop)에서 다음 명령의 결과는 다음과 같습니다.

arp -a

정확히 내가 원하는 것:

X (192.168.56.243) at 40:a3:cc:99:2d:66 [ether] on wlan0
test-test-test (192.168.56.146) at 48:bf:6b:e3:bf:5a [ether] on wlan0
TP-Link_Archer_ (192.168.56.1) at 10:7b:44:40:61:70 [ether] on wlan0

사용지도, 다음을 사용하여 LAN을 검색할 수 있습니다.

nmap -sn 192.168.56.0/24

호스트 이름으로 완벽한 결과를 얻었습니다.

Starting Nmap 7.60 ( https://nmap.org ) at 2018-08-07 09:07 EDT
Nmap scan report for TP-Link_Archer_ (192.168.56.1)
Host is up (0.0054s latency).
Nmap scan report for ZZ (192.168.56.156)
Host is up (0.00045s latency).

그러나 Debian 9 x64 Minimal이 설치된 다른 노트북에서는 전체 호스트 이름 부분이 누락되었습니다. 발행할 때마다arp-a, 다음 정보를 얻습니다.

? (192.168.56.243) at 40:a3:cc:99:2d:66 [ether] on wlan0
? (192.168.56.146) at 48:bf:6b:e3:bf:5a [ether] on wlan0
? (192.168.56.1) at 10:7b:44:40:61:70 [ether] on wlan0

추가적으로 스캔nmap -sn 192.168.56.0/24다음 출력을 생성합니다.

Starting Nmap 7.60 ( https://nmap.org ) at 2018-08-07 09:17 EDT
Nmap scan report for 192.168.56.1
Host is up (0.0054s latency).
Nmap scan report for 192.168.56.156
Host is up (0.00045s latency).

솔직히 무슨 일이 일어나고 있는지 전혀 모르겠습니다. 아마도 뭔가를 놓친 것 같습니다.데비안 최소화Ubuntu에 설치하고 설치하십시오. 하지만 데비안 컴퓨터가 나에게 호스트 이름을 표시하기 시작할 수 있도록 누락된 부분을 어디서 찾아야 할지 모르겠습니다.

어떤 아이디어가 있나요?

편집하다: 내 /etc/nsswitch.conf는 다음과 같습니다:

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

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files dns
networks:       files

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

netgroup:       nis

그러나 브리지된 네트워크 어댑터를 사용하여 가상 머신을 설정하고 동일한 버전의 Debian Minimal을 설치했으며 모든 IP에 대한 호스트 이름을 얻을 수 있습니다. 이제 문제는 실패한 데비안에서 어떤 패키지/모듈/서비스가 누락되어 호스트 이름을 얻을 수 없느냐 하는 것입니다.

답변1

IP 주소를 이름으로 변환할 수 있는 DNS 서버에 대한 액세스 권한이 없습니다.

호스트 이름과 IP 주소를 연결하는 다른 방법이 있지만 컴퓨터가 두 대 이상인 경우 DNS가 가장 좋은 대답입니다.

귀하의 의견에 따르면 예, /etc/resolv.conf에는 DNS 서버의 주소가 포함되어야 합니다. 소규모 네트워크에서는 일반적으로 라우터와 동일합니다.

답변2

arpIP를 호스트 이름으로 변환하는 방법을 결정하기 위해 시스템을 조사하고 있습니다. 해당 스위치를 사용하면 -n이를 삭제하고 호스트 이름을 변환하지 않고 IP만 표시합니다.

대부분의 Linux 도구와 마찬가지로 arp조회를 위해 NS(Name Service Switch)를 사용합니다. 명령을 strace실행 하면 arp다음과 같은 항목을 찾는 것을 볼 수 있습니다.

$ strace -s 2000 arp -a
...
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 5

이 파일을 보면 arp호스트 이름을 찾는 방법을 알 수 있습니다.

$ grep hosts: /etc/nsswitch.conf
#hosts:     db files nisplus nis dns
hosts:      files dns myhostname

이는 파일을 먼저 본 다음 DNS를 두 번째로 쿼리한다는 의미입니다. files이것이 의미하는 바는 시스템의 /etc/hosts파일을 사용한다는 것입니다. 이 명령을 사용하여 NS가 이를 수행하는 방법을 확인할 수 있습니다 getent hosts.

CentOS 7 가상 머신을 예로 들어 보겠습니다.

$ arp -a
? (10.0.2.3) at 52:54:00:12:35:03 [ether] on eth0
gateway (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0
$ arp -an
? (10.0.2.3) at 52:54:00:12:35:03 [ether] on eth0
? (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0

getent10.0.2.2 IP를 찾기 위해 쿼리하는 경우 :

$ getent hosts 10.0.2.2
10.0.2.2        gateway

IP가 로컬 파일에 없으면 다음에 DNS에서 조회됩니다. 내 IP는 모두 이 가상 머신의 개인 IP이고 내 가상 머신에서 정의한 DNS에 명시적으로 나타나지 않으므로 다음과 같이 정의된 DNS가 있습니다.

$ more /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.2.3

노트: arp사용 가능한 이름을 찾을 수 없기 때문에 물음표를 표시할 수밖에 없습니다.

관련 정보