Raspberry Piにホスト名でアクセスできない時

2021年5月6日

はじめに

ラズパイを触り始めて最初に色々と便利な設定をしていく中で、DHCPでラズパイにIPアドレスを割り当てていると、そのうちIPが変わるかもしれないし、ホスト名でアクセス出来るようにしよう!やってみよう!なのに、ネット上の情報では出来ると書いてあるけど出来ない!

というアナタと私向けの記事です。

ホスト名でアクセスが出来る仕組み

を細かく説明できるほど詳しくはないので簡潔に説明します。

まず、ホスト名なんて大体DNS(Domain Name System)で解決しているんだろうと勝手に思っていましたが、そんなことはありませんでした。そんなことをしているのはインターネットにあるドメインを取得しているWebサービスだけに違いないです。

では家のルータ配下にあるホームネットワークの場合はどうなのかと言うと、大体はmDNS、NBNS(NetBIOS)、LLMNRの機能の3拓です。私の調べた限り。

ということで、私の環境でホスト名でラズパイにアクセスした時にのキャプチャデータがこちらです。ツールにはWiresharkを使いました。

Wiresharkを使ってみたい人は以下からダウンロードして、通信データを除いてみましょう。

https://www.wireshark.org/download.html

私のラズパイのホスト名、Raspberrypi.localでアクセスした時の問い合わせ結果は以下のようになっています。

  • DNS => 知らないと言われる。
  • NBNS(NetBIOS) => 答えてくれている
  • LLMNR(Link Local Multicast Name Resolution) => 答えてくれない。

ラズパイでホスト名解決の記事をインターネット上で探すと大体出てくるのはこのNBNSによるホスト名解決ではなく、mDNSという仕組みを使うことになります。このmDNSという仕組みをラズパイで使うのは簡単で、以下のコマンドでAvahiをインストールだけ、となっています。

sudo apt-get install avahi-daemon

どっこい、最新のラズパイのOS Raspbianには最初からインストールされているのに、なぜかアクセス出来ない…そんなあなたぐらいしかこの記事には辿り付きません。

理由は簡単でWindowsがこのmDNSにデフォルトで対応していないからなんですね。色々調べていると、「Bonjour for Windows」か「iTunes」を入れて下さいという記事にたどり着きます。うーん入れたくない…。

そこでもう少し調べてみたところ、ラズパイでもNetBIOSに対応出来ることが分かりました。

と、ここで少し今まで出てきた用語を本当に簡単に説明しておきます。

DNSとは

Domain Name Systemのことで、インターネットにアクセスするときに使うアクセス先の名前のこと、としましょう。実際にはその名前でアクセスが行われるわけではなく、ドメイン名をIPアドレスに変換する作業が必要になります。その変換をしてくれるのがDNSサーバーなんですね。

NetBIOSとは

Windwosで昔から使われているローカルネットワーク内でホスト名を解決するための仕組みです。

LLMNRとは

IPv6で登場したホスト名解決の仕組みです。IPv4にも対応していますが、使用するためにはIPv6の設定を有効にしておく必要があります。

最近仕事で、IPアドレスだとアクセス出来るけど、ホスト名だとアクセス出来ない機器があって、色々と調べていたらどうもLLMNRしか話せない機器だったという話がありましたので、そんなこともあるのだな、ぐらいに考えていてもらえると良いです。

結局のところ、ホスト名解決のやり方としては、どれも「このホスト名のIP教えて下さい!」とネットワークに問い合わせることで解決するのです。

ラズパイでNetBIOSを有効にする方法

純粋にNetBIOSだけを有効にする方法もありますが、オススメしたいのが、Sambaをインストールすることです。

Sambaって…と思われる方がいるかもしれませんので、簡単に説明しておくと、ラズベリーパイの中のデータをWindowsからWindowsのディレクトリのように扱えるサービスです。

Sambaを入れる = NetBIOSが有効になるわけではないのですが、Sambaをインストールすると、NetBIOSを使ってホスト名でアクセスできるようにしましょうか?と聞いてくれるんです。

ここで「Yes」にしておくだけで、ラズパイのNetBIOSが有効になりますので、その後、"ホスト名 + .local"でSSHなどのアクセスが出来るようになります。

ホスト名が"raspberrypi"の場合は"raspberrypi.local"になることだけ注意して下さい。

Sambaのインストール方法

インストール

以下のコマンドでインストールが可能です。

sudo apt-get install samba

インストール中にWINSなんとかを有効にしますか?と聞かれるのでOKとして下さい。

設定ファイルの追加

最初にsambaの設定ファイルのコピーを取っておきましょう。機械的に以下をコピーしてOKです。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bk

その後、/etc/samba/smb.confを開き、最終行に以下を機械的にコピーして下さい。

[pi]
comment = Share
path = /home/pi
public = yes
read only = no
browsable = yes
force user = pi

ユーザの追加

以下のコマンドでSambaのパスワードを設定して下さい。"raspberry"で良いと思います。(情報リテラシー的にはダメですが…)

sudo smbpasswd -a pi

サービスの再開

設定を変更したら最後にsambaのサービスを再起動する必要があります。

sudo systemctl restart smbd

Windows PCからアクセス

ここまで出来ればPCからアクセスできるはずです。トライしてみて下さい。

最後に

と、Sambaのインストールが完了すれば、今まで出来なかったホスト名でのSSHアクセスも出来るようになっているはずです。

何かご不明点がありましたらありましたらお気軽にお問合せ下さい。