[クーポン配布] LABISTS JP JP製ラズベリーパイ4Bセット品に使用出来る割引クーポンはこのバーをクリック

Raspbian Stretchで固定IPにする方法

インストールと設定
この記事は約8分で読めます。

当ブログの記事ではWi-Fiの設定がとても人気があります。結構、皆さん苦戦しているようですね。これはRaspbianでもLibreELECでも、Retropieにしろ、需要があるのかと思います。

Raspbian のWi-Fi設定(Raspberry Pi 初期設定)
...

今回はSSHでアクセスし易いように、有線LAN、無線LAN(Wi-Fi)での接続を、Raspbianで固定IPにする方法をご紹介します。分かりやすいようにご紹介しますね。

もしも「分かりにくい!」「間違ってる?!」などご質問やご指摘はフォーラムにお願いいたします。もちろん、コメントでもOKです!

フォーラムでは他の人にも通知が行きますので、もっと詳しい人から返信いただけて解決が早いかも知れません。

なお、SSH経由でアクセスせず、Raspberry Pi 実機を直接操作する場合は、SSH関係を飛ばして、固定IPの設定まで飛んでください。
スポンサーリンク

今回の環境

  • Raspberry Pi は3B+
  • Raspbian Stretch 2018−06
  • 有線LANまたは無線LAN(Wi-Fi)
  • 母艦PCはMacでターミナル接続(Windowsの人はPuttyをご利用ください)
スポンサーリンク

SSHを有効にする

Raspbian側でSSHはONにしてください。Raspberry Pi 側でのONにしている場合や、ご自宅のネットワーク環境をご存じの場合は次に飛んでください。

SSHはセキュリティの関係で初期設定ではOFFになっています。

ネットワーク越しに遠隔操作するためには、操作したいRaspberry Pi のSSHが有効になっていなければなりません。RaspbianをGUIがないRaspbian Liteを利用しているのなら、操作したい実機をCUIで操作します。

3つの方法があります。どれでも構いません。

  1. SSHファイルで起動時に有効にする
  2. SSHのONをGUIで行う
  3. SSHのONをCUIのraspi-setupで行う

それぞれ説明します。

SSHファイルで起動時に有効にする

実はRaspbianとRaspberry Pi には、初回起動時にSSHファイルを用意することで、SSHを有効にして起動させることが可能です。

こちらにまとめてあります。

RaspbianをインストールするときSSHを有効化する方法
...

SSHファイルが初回起動時にboot直下に存在した場合、SSHを有効にして、その作成した空のSHHファイルを削除するという仕組みです。

Windowsの場合

touch Volume/boot/ssh

Windowsの場合

copy nul D:¥boot/ssh

Macならターミナルアプリケーション、Windowsならコマンドプロンプトで実行してください。

SSHのONをGUIで行う

Raspberry Pi デスクトップ環境でインストールしたならば、GUIかでメニューから操作できます。また、LibreELECのような統合型OSの場合はマウスなどでメニューから辿ってSSHを有効にします。

SSHのONをCUIで行う

主にRaspbian Liteの場合は実機のコマンドで設定します。

sudo raspi-config
スポンサーリンク

SSHでアクセスするためにIPアドレスを確認する

SSHが有効になれば、別の母艦PCから操作可能です。
先ずは接続先のRaspberry Pi のIPアドレス(またはホスト名)が分からないと接続できません。

自宅のネットワーク環境を他のPC(母艦)から調べる方法

arpというコマンドを使います。MacでもWindowsでもOKです。

arp -a | grep b8

ただ、これはネットワーク通信している機器に限るのと、応答しない機器もあります。そうなるとPingコマンドですべてにPingを飛ばすことで解決します。しかし、for文を使ったコマンドも上手く動作しないこともある(文系オヤジだから上手くいかない)ためarp-scanというツールで解決させました。

また、ブロードキャストアドレスへPingを投げればOKという記述も見られます。しかし、私の環境では無駄でした。

ping 192.168.0.255

arp-scanというコマンドツールはMacOSXでは標準で入っていません。しかし、これが便利なので、面倒でもインストールしてみました!

arp-scanのインストール

ターミナルでHomebrewをインストールします。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2分くらいかかるでしょうか? インストールできたら、今度はこのHome brewというパッケージシステムで、arp-scanをインストールします。(ややこしいですね)

brew install arp-scan

実行してみる。

 sudo arp-scan --interface=en0 192.168.0.0/24
Interface: en0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 256 hosts (https://github.com/royhills/arp-scan)
arp-scan

このように分かりやすいですね!

b8:27:ebから始まるMACアドレスがRaspberry Pi です。これで次回から調べるのが楽になりました。

ネットワークに通信すればキャッシュに登録されるので、arp -aコマンドで検出されます。機器を取り外したり、何かの事情で表示されないのであれば、arp-scanのインストールをオススメします。

Raspberry Pi でIPアドレスを調べる

SSHでアクセスしたいRaspberry Pi のターミナル(LX Terminal)でifconfigコマンドを打つことでIPアドレスを確認できます。

ifconfig -a

今後はipコマンドに統一されるようです。

ip a

これでもOK!

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP8000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether b8:27:eb:12:79:14 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP8000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether b8:27:eb:47:2c:41 brd ff:ff:ff:ff:ff:ff

eth0の中のinetと書かれている部分がそのRaspberry Pi のIPアドレスです。

スポンサーリンク

SSHでアクセス

ターミナルにてSSH接続(MacのターミナルまたはWindowsのPutty)します。

ssh pi@192.168.0.8

パスワードを訊かれたら初期は「raspberry」です。

もしもエラーが出たら?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

そのIPアドレスは別のに使われていました。そのため一旦、そのIPアドレスで設定されていた認証ファイルを削除します。

ssh-keygen -R 192.168.0.8

これでもう一度SSHのコマンドでアクセス可能になります。

スポンサーリンク

固定IPの記述

/etc/dhcpcd.confに記述

ちょっと昔は/etc/networks/interfacesに記述したのですけど、現在はdhcpcd.confに記述することになっています。ネットの古い記事はinterfacesになっています。気をつけてください。

sudo nano /etc/dhcpcd.conf

以下を参考にして記述します。

interface eth0
static ip_address=192.168.x.8/24 ←任意で決めた他と被らない番号
static routers=192.168.x.x ←ルーターの番号
static domain_name_servers=192.168.x.x ←こちらもルーターの番号

これで完了です。

補足メモ:
一般的にプライベートのアドレスというのは、192.168〜から始めるルーターが多いです。絶対ではなく慣例でそうなっている部分があり、説明が難しいのですけど、およそ購入してきたルーターは、「192.168.0.1」や「192.168.1.1」が多いかと思います。
ラズパイダ内ではそういう意味で192.168.〜で記載しています。

 

よろしけばこちらもお読みください。
IPアドレスとサブネットマスクを理解しよう!

スポンサーリンク

ホスト名でSSH接続する!(かんたんです)

ホスト名で接続する方法があります。IPアドレスが分からない場合に便利です。仕組みとしては任意で決めたホスト名(決めない場合の名前はraspberrypi)をIPアドレスの代わりに使います。mDNSです。(※Windowsは今はどうだか知りません・・・)

ホスト名はraspi-setupで任意に決められます。LibreELECならメニューの中に設定する場所があります。

名称はハイフンくらいしか余分に使えないのと、あまり長いと面倒なので、シンプルにしています。

例えば、rpi-zerowや、rpi-musicsysとか、Libreelecです。

これを使うと、先程のSSHのアクセスのコマンドも以下のようになります。

ssh pi@rpi-musicsys.local

これならIPアドレスを固定していなくてもOK!

IPアドレスを調べなくてもOK!

間違いやすいのは.localを付け忘れること

便利です。
ローカル環境の信頼できる機器という条件の下なら簡単ですよね。

固定IPにすることや、ホスト名を使うこと、その都度の使用用途によるため、ホスト名の方が簡単ですけど、使い分けてください。

個人的には自宅内での使用ならホスト名だけでも全く不都合はありませんね。

試してみてください。

コメント

  1. 固定IPの記述 に記載のとおりにやってみますと、VNCサーバーマークに!がついて、しかもネットに繋がらなくなってしまいます。何が問題でしょうか?

    元に戻すと復旧しましたが、この方法は他の方も同様にお示しのようなので困惑しております。正しく運用するには、他にも設定項目があるのでしょうか?

    • コメントありがとうございます。
      記事のこの部分でしょうか?

      interface eth0
      static ip_address=192.168.0.8/24
      static routers=192.168.0.1
      static domain_name_servers=192.168.0.1

      補足を載せておきますね。
      固定IPの記述をこのブログの通りではダメです。恐らくそのままコピーしたのででしょうか?
      ルーターの番号は環境により異なります。

      ifconfig -a

      このコマンドで表示されたアドレスが仮に「192.168.0.9」であれば、基本はルーターの番号は「192.168.0.1」になるでしょう。
      jazzwalkerさんはどのように表示されました?

      ネットに繋がらなくなるというのは、ルーターの番号が異なっているからだと思います。
      もしもルーターの番号も合っているのならば、他の要因が考えられます。

      記事には補足しておきますね。

  2. ご回答ありがとうございます。

    >ルーターの番号も合っているのならば、他の要因が考えられます。

    ルーターの番号は合わせました。他の要因としては何が考えられますでしょうか?

    • ルーターのIPアドレスはどうなっています?

      ip a

      もしくは

      ifconfig -a

      結果を貼り付けてもらえますか?

      • ルーターのアドレスは出ていないように思いますが、結果を以下に貼り付けます。

        pi@pi:~ $ ip a
        1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
        2: eth0: mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether b8:27:eb:b9:07:ba brd ff:ff:ff:ff:ff:ff
        3: wlan0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether b8:27:eb:XX:XX:XX brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.3/24 brd 192.168.1.255 scope global wlan0
        valid_lft forever preferred_lft forever
        inet6 2400:4050:c0e0:2200:2b:972e:a53d:15b6/64 scope global mngtmpaddr noprefixroute dynamic
        valid_lft 14394sec preferred_lft 12594sec
        inet6 fe80::8666:a1e8:a34a:c682/64 scope link
        valid_lft forever preferred_lft forever

  3. なお、Wi-Fi接続ですので、

    記事中の、interface eth0 のところは
    interface wlan0 としました。

    • inet 192.168.1.3/24とあるので、ルーターは192.168.1.1だと思います。
      固定(static)IPを192.168.1.任意にして(例えば29)

      interface wlan0
      static ip_address=192.168.1.29/24
      static routers=192.168.1.1
      static domain_name_servers=192.168.1.1

      これで良いと思います。
      固定にしてから試してもらいたいコマンドは2つありまして、
      wifiのインターフェイスを再起動

      sudo ifdown wlan0
      sudo ifup wlan0

      確認するのに、

      ip addr

      またPingが通るかも確認してみてください。
      ルーターへ

      ping 192.168.1.1

      Raspberry Pi へ

      ping 192.168.1.29

      あと、もしかしてWifiのSSIDって、ステルスになっています? ステルスでなければいいのですが、ステルスならwpa_supplicant.confへ

      scan_ssid=1

      がないとダメかも知れません。

      wpa_supplicant.confも見直してみてください。

      他の要因として、ルーター含めた家庭内無線LAN環境が分かりませんので、まだなんとも言えません。
      ネットワークってどういう環境かによってだいぶ異なりますので・・・。

      もしも宜しければ、ラズパイダのフォーラムに登録して書き込んで貰えれば、他の方からも返信が付くかも知れません。ご検討ください。

  4. >inet 192.168.1.3/24とあるので、ルーターは192.168.1.1だと思います。

    Wi-Fiルーターは、192.168.1.210 にしてあるのです。
    大元のNTTゲートウェイは、192.168.1.1 です。

    ここでの設定は、Wi-Fiルーターのアドレスの方ではないのでしょうか?

    /etc/dhcpcd.confの方も、Wi-Fiルーターのアドレスを入れておりましたが。

    • 何となく分かりました!
      えーと、ルーターのIPアドレスを指定するのですけど、言葉を換えるとゲートウェイを指定することになるので、本来はjazzwalkerさんだと192.168.1.1になります。

      恐らく想像ですけど、NTTのゲートウェイと仰るのは、もしかしてルーター機能が働いていませんか? そして、別にWi-Fi機能とルーティング機能を持ったルーターを設置されていると思います。違いますかね??
      別にルーターが複数台という環境もあるのですけど、通常のご家庭では全く必要ありませんし、恐らく一定の期間で接続出来なくなってルーターの電源を抜き差しして再起動するなんてことしないとならないということはありませんか??

      ルーターの役割が特になく2台のルーターが存在するとパケットがグルグル回ってしまっていることがあります。(細かくは省きますが)
      DHCPで割り当てではなく、固定IPにした時、ルーターを指定するので、問題が発覚することがあります。

      実は友人などからもよく相談に乗って対応することがあるのですけど、ルーターが2台存在することがあります。確固たる意味はなく増設してしまったパターンです(^_^;
      先日など3台のルーター機能が有効になっていたパターンがありまして原因の特定に難儀しました・・・。

      Wi-Fiの機能を有したルーターの設定画面に入って変更できるのならば、それはルーターモードは切ってブリッジモードで運用する方がよろしいかと思います。
      必要がなければ、ルーターは1つにしてください。

      もしも的外れであれば申し訳ありません。

    • 基本はルーターってIPアドレスを割り振る機能です。
      仮にルーターが2台あったとしたら、1台を固定IPで指定していても、2つの機械から番号を割り振っていることになります。
      経験では、パケットがグルグル回ってしまい、時間とともに段々とネットの速度も遅くなり、最後は繋がらなくなるということもありました。使用頻度によってですけど、1ヶ月〜3ヶ月くらい。

      恐らくですけど、NTTから貸与または購入したルーターがWi-Fi機能が付いていないで、Wi-Fi機能付きのルーターを増設したということではないでしょうか。
      その場合は、Wi-Fiの機械自体はIPアドレスを192.168.1.210にするのは良いのですけど、ルーティング機能は止めないとなりません。物理スイッチか内部の設定で、ブリッジモードが選べますから、それでパケットはスルーさせるべきです。

      ルーター >> Wi-Fi付きルーター >> Raspberry Pi など
              (ブリッジモード)

      ブリッジモードでもWi-Fiの機能は設定通りにそのまま使えますから、仮にWi-Fiのためだけに増設したならブリッジモードで、DHCPの機能は切ってください。
      結構、そういうご家庭は多いみたいで、私個人で何件あったか覚えていないくらいあります。
      ネットワークって意外と難しいんですよ。
      良ければ試してみてください。

  5. >NTTから貸与または購入したルーターがWi-Fi機能が付いていないで、Wi-Fi機能付きのルーターを増設したということではないでしょうか。

    その通りです。それでブリッジ接続にしております。
    それでも、192.168.1.1を指定すべきなのでしょうか?

    • はい。ゲートウェイの指定なので、大元の192.168.1.1ですね。
      考え方としては、経路の出入り口の指定という感じです。
      インターネットへ出入りするのは、ブリッジモードのWi-Fiルーターではなくて、その先ですから。

      私も上手く表現できないのですけど、2台のルーターを使うこともあるものの、一般的な家庭であれば、ルーター1台で支障ないため、出入り口は1つのルーターという考え方で大丈夫です。
      そもそもそのブリッジモードのWi-Fiも192.168.1.210で固定IP化してあって、その中のデフォルトゲートウエイはやはり192.168.1.1に指定していると思います。

      interface wlan0
      static ip_address=192.168.1.29/24
      static routers=192.168.1.1
      static domain_name_servers=192.168.1.1

      これでネットに繋がらない場合は、まだ他の要因があると思われます。

      jazzwalkerさんの環境がすべては分かりませんので、情報があれば原因は分かるかと思います。
      試してみてください。

      • >ゲートウェイの指定なので、大元の192.168.1.1ですね。

        繋がりました。
        丁寧なご回答、ありがとうございました。

        これでしばらく様子をみます。

        • ご理解いただけて良かったです!
          固定IP化してあれば楽ですよね。

          また何かありましたらご遠慮なくどうぞ。
          フォーラムでお待ちしています。