前書き

Raspberry Piに他PCからSSHなどでアクセスする場合、IPアドレスが必要です。IPアドレスがDHCPで動的に割り当てられる場合、都度Raspberry Pi3のIPアドレスを調べなければなりません。その手間を無くすため、IPアドレスを固定化します。

IPアドレスの固定化のため、必要な情報は以下の4点です。本記事では、これらの情報の確認方法およびIPアドレス固定化のための設定を記載します。ただし、Raspberry Pi3が有線LANもしくは無線LAN経由でネットワーク接続できている状態が前提です。

IPアドレス固定化のために必要な情報

DHCPサーバが割り当てるIPアドレス範囲

実際の所、IPアドレスの固定化では、DHCPサーバが割り当てるIPアドレスを正確に知る必要がありません。最低限、「このIPアドレスで固定化しよう!」と考えているIPアドレスが、DHCPサーバのIPアドレス割り当て範囲に入っていれば良いです。

そのため、真面目な調べ方と雑な調べ方の二通りを示します。後者で良いと思います。

真面目な調べ方

DHCPサーバが割り当てるIPアドレス範囲は、環境によって異なります。一般的な家庭の場合、DHCPサーバはルータが兼ねています。そのため、割り当てIPアドレスを調べる場合、「ルータのIPアドレスをブラウザの検索バーに入力し、管理画面を開き、情報を取得」もしくは「説明書を確認」が必要になります。

ここでのルータのIPアドレスは、後述する「デフォルトゲートウェイアドレスの取得方法」を読めば、取得できます。管理画面を開いた後、設定画面から「割り当て開始IPアドレス」と「割り当て数」を探し、その情報を用いて割り当てIPアドレス範囲を計算します。

この方法は、管理画面がルータ製品によって異なるため、詳細は割愛します。

雑な調べ方

固定IPアドレスに何を割り当てれば良いか分からない場合、現在の設定値(動的に割り当てれたIPアドレス)を使用してください。この方法で上手く動作しない場合、頭が悪い方法ですが、IPアドレス末尾の数字を+1し続けて、繋がるまで繰り返せば良いです。

現在のIPアドレス(動的割り当て値)は、以下のコマンドで確認できます。

$ hostname -I    (注釈):-Iオプションは、ホストのIPアドレスを表示
192.168.10.108   (注釈):動的に割り当てられたIPアドレス

サブネットマスクの取得方法

サブネットマスクは、IPアドレスのネットワーク部を割り出すための情報です。IPアドレスは、ネットワーク部とホスト部から成り立っています。ネットワーク部は、IPアドレスとサブネットマスクの論理積から得られます。詳しい説明は、このサイトが分かりやすいです。

サブネットマスクは、ifconfigコマンドで"netmask XXX.XXX.XXX.X"と記載された部分から確認できます。有線接続の場合はeth0、無線接続の場合はwlan0の結果を確認してください(<>に関する部分は表記が崩れていますが、それはwordpressのおせっかい機能のためです)

$ sudo ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:27:eb:c4:2f:1d  txqueuelen 1000  (イーサネット)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (ローカルループバック)
        RX packets 28  bytes 1792 (1.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28  bytes 1792 (1.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.108  netmask 255.255.255.0  broadcast 192.168.10.255  (注釈):netmaskがサブネットマスク
        inet6 fe80::30eb:4e7:7e9:4b30  prefixlen 64  scopeid 0x20
        ether b8:27:eb:91:7a:48  txqueuelen 1000  (イーサネット)
        RX packets 738  bytes 70465 (68.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 512  bytes 83002 (81.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

デフォルトゲートウェイアドレスの取得方法

デフォルトゲートウェイとは、外部ネットワークと通信する場合、通信プロトコルを変換かつ外部ネットワークと接続するシステムです。デフォルトゲートウェイのIPアドレスは、routeコマンドでDestination(受信先サイト)が"0.0.0.0"の行を確認すれば判断できます。該当行のGatewayが、デフォルトゲートウェイのIPアドレスです。

$ route -n     (注釈):-nオプションは、名前解決をせずに、IPアドレスを表示
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
0.0.0.0         192.168.10.1    0.0.0.0         UG    303    0        0 wlan0
192.168.10.0    0.0.0.0         255.255.255.0   U     303    0        0 wlan0

DNSサーバアドレス取得方法

DNSサーバとは、ホスト名・ドメイン名などの名前からIPアドレスを得るシステムです。DNSサーバのIPアドレスは、"/etc/resolv.conf"を参照すれば調べられます。

$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.10.1

IPアドレス固定化のための設定

固定IPアドレスを"192.168.10.108"、サブネットマスクを"255.255.255.0(/24)"、デフォルトゲートウェイ・DNSサーバを"192.168.10.1"と仮定します。なお、サブネットマスク(XX.XX.XX.XX)をネットマスク(/8〜/32の範囲)に変換しなければならないので、変換表を使ってください。

上記の仮定の場合、設定ファイル"/etc/dhcpcd.conf"に以下のように追記します。

$ sudo vi /etc/dhcpcd.conf   (注釈):任意のエディタで編集して良い。

[以下、/etc/dhcpcd.conf内]
# 以下の内容が追記項目
# 固定IPアドレスおよびサブネットマスク
static ip_address=192.168.10.108/24

 # デフォルトゲートウェイ(基本的には、ルータのIPアドレス)
static routers=192.168.10.0

# DNSサーバ(基本的には、ルータのIPアドレス)
static domain_name_servers=192.168.10.0

別の手段:/boot/cmdline.txtを修正 

Raspberry Piの/boot/cmdline.txtに

ip=(Raspberry PiのIPアドレス)

を追記し、Raspberry Piを再起動するとIPアドレスを固定化できます。