MacでRaspberry Piセットアップ(補足)

電子工作

Raspberry Piのセットアップ手順の補足です。

補足の内容

なんとかホームコントローラをつくりたい、ということで前回と前々回のエントリでRaspberry Piのセットアップを行いました。ただ、前回までのセットアップでは後々問題が出てくる可能性がありますので、さらに設定をしておきます。

インターネットに接続する場合、通常はブロードバンドルータを通して接続していると思います。また多くの方はブロードバンドルータの詳細設定はデフォルトのままにしていると思います。

ネットワークに家電やゲーム機、Macなどのデバイスを接続して通信を行うには、各デバイスに固有のIPアドレスを設定する必要があります。このIPアドレスの設定は面倒ですので、ルータをデフォルト設定にしている場合、通常はデバイスがルータに接続されたときにIPアドレスは自動で割り振られて設定されるようになっています。これは、DHCPによるIPアドレス割当て、と呼ばれています。

今後、MacからRaspberry Piにリモートでアクセスするために、Raspberry PiのIPアドレスを指定して接続することになりますが、Raspberry PiのIPアドレスも自動割当の場合、Raspberry Piを再起動するとIPアドレスが変わってしまうことがあります。その場合、MacからRaspberry Piに接続できなくなる可能性があります。

ということで、このエントリでは、Raspberry Piに固定IPアドレスを設定する方法を説明します。ネットワーク接続としては、以下のようなケースを想定しています。

Network address

ポイントは、今までDHCPでIPアドレス自動割当てしていたデバイスはそのままで、Raspberry Piのみ固定アドレスにする、という点です。この場合、ルータの設定はそのままで問題ないケースが多いですが、自分のネットワーク環境がどうなっているのか勉強もかねてきちんと設定してみます。

この説明の他に、sshで接続するときの問題なども説明します。

 

Raspberry Piに固定IPアドレスを設定する

これからRaspberry Piに固定IPアドレスを設定しますが、その前にIPアドレスの割り振りについて整理しておきましょう。

デバイスをルータに接続すると、ルータはDHCPでデバイスにIPアドレスを割り当てます。このIPアドレスは適当なアドレスを割り当てるわけではなく、特定の範囲内のIPアドレスを割り当てています。これから行う作業は、

  1. ルータがDHCPで割り当てるIPアドレスの範囲を確認して必要があればその範囲をちょっと狭める。
  2. Raspberry Piに、(1)で設定した範囲外のIPアドレスを固定アドレスとして設定する。

という内容になります。具体的には、例えば、ルータのDHCPのIPアドレス割当範囲が 192.168.1.2 〜 192.168.1.254 であれば、192.168.1.2 〜 192.168.1.100ぐらいに狭めます。家庭内でIPアドレスが必要なデバイスは100個もないと思うので、この範囲にしようと思います。このように範囲を設定すると、ルータはこれ以外のアドレスに割当てませんので、Raspberry PiのIPアドレスを192.168.1.101に設定しても問題ありません。このように、IPアドレスを整理して、192.168.1.2 〜 192.168.1.100 はルータがDHCPで割り当てる範囲、192.168.1.101 〜 192.168.1.254 は固定IPアドレスの範囲、として運用するようにします。なお、IPアドレスの値は個人個人の環境で異なることがありますので、この後の手順で値を確認してください。

それでは、まずルータのDHCP設定変更から行います。Safariなどのブラウザで、アドレス欄にルータのIPアドレスを入力します。

Router 1

なお、ルータのアドレスが分からない場合、以下のように確認してください。左上のアップルメニュー(リンゴマーク)から、「システム環境設定…」を選択します。システム環境設定の「ネットワーク」を選択します。左側のネットワークのリストから「接続済み」のネットワークを選択します。右下の方に「詳細…」というボタンがありますので、そのボタンをクリックします。いくつかタブがでてきますので、その中から「TCP/IP」を選択します。中央付近に「ルーター」という項目があります。その値がルータのアドレスになります。

ルータにアクセスするとユーザ名とパスワードを聞かれると思いますので、設置の時に設定した値を入力します。

Router 2

ユーザIDとパスワードがわからない場合は、ルータの取扱説明書にパスワードリセットの方法など、対策が書かれていると思いますので、それを参考にしてください。取扱説明書がない場合は、ルータの裏面などをみて型番を調べて、そのメーカのサイトに電子版の取説がないか確認してみましょう。この先はルータによってかなり異なりますが、私の例(ルータ型番:RT-200NE)で説明します。

ルータにアクセスすると、設定画面になると思います。この設定画面から、DHCPの設定を探します。RT-200NEでは、「詳細設定」の「DHCPv4サーバ設定」という名称でした。この項目を選択すると以下のような画面になります。

Router 3

RT-200NEの場合、割当範囲の設定は、割当開始IPアドレスと個数を指定する形式でした。上の設定では、ルータがDHCPで割り当てるIPアドレスの範囲は、192.168.1.2から始めて99個まで割り当てる、という意味になります。自分の環境では 192.168.1.2〜192.168.1.100 をDHCP割当範囲にしますので、開始IPアドレス欄に 192.168.1.2、割当個数に99となります(図の通り)。他のルータでは範囲を指定する設定方法もありますので、その場合はIPアドレスの範囲を入力します。

設定が終わったら「設定」ボタンを押して終了します。ここまでの設定で、ルータはDHCPで192.168.1.101以降のアドレス割り当てはしないので、Raspberry PiのIPアドレスを 192.168.1.101 に設定することにします。

次に、Raspberry PiのIPアドレスを192.168.1.101に設定します。まず、以下のようにローカル環境でRaspberry Piを立ち上げます。

Raspi system setup

立ち上がったら、セットアップ時のようにウインドウシステムを立ち上げます。コマンドプロンプトから「startx」と入力します。ウインドウシステムが立ち上がったらLXTerminalを立ち上げて、ここで作業を行います。これから何をするかというと、Raspberry Piのネットワークアドレス設定用のファイルをDHCPから固定の192.168.1.101に書き換えます。

まず以下のコマンドを入力してネットワークアドレス設定用のファイルを編集するために開きます。

pi@raspberrypi ~ $ sudo nano /etc/network/interfaces

すると以下のような画面になると思います。すみません、以下のスクリーンショットはMacから作業をしたため、Macのターミナルソフトのダイアログになっていますが、内容は同じです。

Rp interfaces edit 1

まず、DHCPではなく、固定IPアドレスにする、という内容に書き換えます。なお、このエディタはnanoというもので、カーソルはキーボードの矢印キーで移動できます。通常の感覚で使えると思います。ただ、UNIX系のOS(MacやLinux)にはviやemacsという便利なエディタがありますので、viやemacsを勉強することをお勧めします。

まず、4行目に「iface eth0 inet dhcp」とあります。この「dhcp」を「static」に書き換えます。次にこの行の後に、アドレスの情報を追記します。アドレスの情報はIPアドレス、サブネットマスク、デフォルトゲートウエイです。IPアドレスはこの例では192.168.1.101、サブネットマスクは先ほどのルータの設定画面に「ネットマスク 255.255.255.0」とありましたのでその値、デフォルトゲートウエイはルータのアドレスでOKです。編集後は以下のようになります。

Rp interfaces edit 2

それでは編集したファイルを保存して終了します。まず、変更したファイルを保存するためにCtrl-O(コントロールキーと”O”(オー)キー)を押します。Ctrl+Oを押すと以下のようにファイル名を聞かれます。

Rp interfaces edit 3

このままリターンキーを押します。リターンキーを押すと元の画面に戻りますので、エディタを終了させるためにCtrl-Xを押します。これで設定は終了です。

Raspberry Piの電源を切り、以下のように接続してMacからアクセスできるか確認してみましょう。

Raspi system server

Raspberry Piが立ち上がった頃(電源を入れて1分ぐらい?)、Macのターミナルアプリを立ち上げて、「ssh pi@192.168.1.101」と入力します。(IPアドレスは設定したアドレスになります)

パスワードを聞かれますのでパスワードを入力してログインできれば成功です。ここまで設定できたら、今後はMacのターミナルアプリからログインして作業するようにしましょう。私は、Raspberr Piをルータの横の隙間において、ネットワークと電源のみ接続して作業しています。

 

ssh接続で変なエラーがでたら

Raspberry PiにOSをインストールしていろいろと作業していたら、、、なんかよくわからなくなってしまった、という場合が出てくるかもしれません。その場合は、OSを再インストールしてしまう、というのも手ですね。このようにOSを再インストールした場合、Macからsshで接続しようとすると、うまく接続できないことがあります。以下のようなエラーです。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/tool-lab/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/tool-lab/.ssh/known_hosts:17
RSA host key for 192.168.1.10 has changed and you have requested strict checking.
Host key verification failed.

このエラーがでてしまうとsshで接続できません。ちょっと遠回りして、このエラーの原因と対策を説明します。

sshは、リモートにあるPCに接続してそのPCの作業を行います。ネットワーク経由で情報をやりとりしますので、データをそのままやりとりしていると、盗聴される危険があります。sshはリモートPC(サーバ)と作業PC(クライアント)間のデータを暗号化して処理しています。この暗号化は、初回接続時、サーバとクライアントで鍵を交換することにより固有の暗号で通信を行っています。

上のエラーは何を言っているかというと、「以前接続したコンピュータにssh接続しようとしたけど、誰かが悪意のあることをしたっぽいよ。誰かが途中に介在して盗聴してるかもよ。なんでかっていうと、鍵が違うからだよ!危ないよ!やめときなよ!てか、接続しないよ!帰んな!」(意訳)って感じです。

このエラーが出てしまった場合で、安全であることが確実な場合は以下のように対策します。

Macから接続した場合、ホームフォルダの.sshフォルダにknown_hostsというファイルがあります。そこに以前接続したPCが記録されています。このファイルから接続できないPCの情報を削除します。

それでは作業してみます。まず、Macのターミナルアプリを立ち上げて、ホームフォルダに移動します。ホームフォルダに移動するには「cd」と入力すればOKです。次に、「nano .ssh/known_hosts」と入力してknown_hostsファイルを開きます。このファイルは、接続したことのあるPCの情報が記録されていて、1PCあたり1行で記述されています。各行は、接続したことのあるPCのIPアドレスから始まっています。上のエラーの例では、最後から2行目に「192.168.1.10」とありますので、このアドレスの行を探してその行を削除します。削除したら保存して終了です。

これでもう一度sshで接続すればOKです。ただし、初回接続になりますので、接続していいか聞かれますので、yesを入力して接続します。

これでRaspberry Piの超基本部分の設定は終わりました。

« »