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).

正直なところ、何が起こっているのか分からない。おそらく何かを逃したようです。Debian の最小化Ubuntuにインストールしてインストールします。しかし、Debianコンピュータが私にホスト名を表示し始めるために、欠けている部分をどこで見つけるべきかわかりません。

どんなアイデアがありますか?

編集する: 私の/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のホスト名を取得できます。これで問題は、失敗したDebianでどのパッケージ/モジュール/サービスが欠落しているため、ホスト名を取得できないのかということです。

答え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を2番目に照会することを意味します。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利用可能な名前が見つからないため、疑問符を表示するしかありません。

関連情報