Ssh&vncサービスがavahiに登録されているRaspberry Pi(raspbian jessie)を持っています。クライアント(Chromebook)で両方のサービスを確認できます
chronos@localhost ~ $ avahi-browse -arl
+ mlan0 IPv4 raspberrypi SSH _ssh._tcp local
+ mlan0 IPv4 raspberrypi VNC _rfb._tcp local
+ mlan0 IPv4 raspberrypi [30:b5:c2:1e:2f:df] _workstation._tcp local
= mlan0 IPv4 raspberrypi SSH _ssh._tcp local
hostname = [raspberrypi.local]
address = [192.168.1.200]
port = [22]
txt = []
= mlan0 IPv4 raspberrypi [30:b5:c2:1e:2f:df] _workstation._tcp local
hostname = [raspberrypi.local]
address = [192.168.1.200]
port = [9]
txt = []
= mlan0 IPv4 raspberrypi VNC _rfb._tcp local
hostname = [raspberrypi.local]
address = [192.168.1.200]
port = [5900]
txt = []
そして、私は名前と住所の両方を解決できるようです:
chronos@localhost ~ $ avahi-resolve --address 192.168.1.200
192.168.1.200 raspberrypi.local
chronos@localhost ~ $ avahi-resolve --name raspberrypi.local
raspberrypi.local 192.168.1.200
しかし、Chromebookからラズベリーをpingまたはsshしようとすると、解決されません。
chronos@localhost ~ $ ping raspberrypi.local
ping: unknown Host raspberrypi.local
chronos@localhost ~ $ ssh [email protected]
ssh: Could not resolve hostname raspberrypi.local: Name or service not known
私は何かが足りないのですか?ローカルネットワーク内の別のクライアント(Arch Linux)からRaspberry Piを実際にSSH接続できるので、問題はChromebook側にあるはずです。
これは、Raspberry Pi(/etc/avahi/services/ssh.service)で使用しているサービス定義です。
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h SSH</name>
<service>
<type>_ssh._tcp</type>
<port>22</port>
</service>
</service-group>
AvahiはLAN上でAvahiサービスを探し、(あなたの例では)IP解像度を表示するようにクエリします。
ChromebookでIPアドレスを使用すると、探している結果が得られます(ping応答またはsshアクセス)。
ほとんどのネットワークはマシン名を保存せず、IPのみを保存します。次の行を追加することで、/etc/hosts
(Chromebookは開発者モードである必要があります)で独自のドメイン名ルックアップ(静的IPアドレス用)を提供できます:raspberrypi.local 192.168.1.200
または、スクリプトで自動化することにより、sed
を使用してraspberrypi.local
で始まる行を、コマンドavahi-resolve --name raspberrypi.local
の出力に置き換えます。これは動的IP割り当てでは機能しますが、RPiの電源がオンになるたびに少なくとも1回はスクリプトを実行する必要があります(スクリプトが変更された場合)。
(期待どおりの)結果が得られない理由は、ドメインネームサービス(またはDNSサーバー)がLANアドレス名を認識していないためです。
以下も機能します。
ping `avahi-resolve --name raspberrypi.local`
ssh `avahi-resolve --name raspberrypi.local`
`はチルダキーにあります(〜)
Avahi *.local
の名前ルックアップをサポートして、ping raspberrypi.local
で機能するようにする通常の方法は、mdns4_minimal
の/etc/nsswitch.conf
を使用することです。 buntu 16.10でローカルDNSルックアップを構成する方法は?-Ubuntuに問い合わせる
これはChrome OS: 199397-FR:mDNS名前解決-クロム-モノレール )で可能だったようですが、問題が発生しました 626377-.localユニキャストDNSを壊さずにmDNSホスト名解決を有効にする-クロム-モノレール で説明されているように、独自の非mdns .local
ドメインを使用する一部のネットワーク。
2018年の初めの時点で、問題626377は、mdnsルックアップを再度有効にするためのリリースに近づいているようです。
それまでの間、開発者モードに入ってrootfsパーティションを変更すれば、これはローカルで修正できると思います。それまでは、PaulWrattによる回答にいくつかの役立つ回避策があります。