前書き
Raspberry Piに他PCからSSHなどでアクセスする場合、IPアドレスが必要です。IPアドレスがDHCPで動的に割り当てられる場合、都度Raspberry Pi3のIPアドレスを調べなければなりません。その手間を無くすため、IPアドレスを固定化します。
IPアドレスの固定化のため、必要な情報は以下の4点です。本記事では、これらの情報の確認方法およびIPアドレス固定化のための設定を記載します。ただし、Raspberry Pi3が有線LANもしくは無線LAN経由でネットワーク接続できている状態が前提です。
IPアドレス固定化のために必要な情報
- DHCPサーバが割り当てるIPアドレス範囲
- サブネットマスク
- デフォルトゲートウェイアドレス
- DNSサーバアドレス
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アドレスを固定化できます。
