きなこのブログ

技術系の覚書など。

Raspbian Stretchでネットワーク設定

Raspbian Stretchでネットワーク設定

dhcpcd.conf か?/etc/network/interface か?

ネットの記事を探すと/etc/network/interfaceで設定するという記事がたくさんありますが、Raspbian Jessieから大きな変更があり、dhcpcd.confで固定するようになったようです。(Wheezy -> Jessie -> Stretch - Wiki(en)

dhcpcd vs /etc/network/interfacesより抜粋して要約;

本当に単純なやり方でJessieを使うなら、interfacesはほとんど無視してdhcpcd.confinterfacesで作業できます。

dhcpcdとinterfaceに優先順位はある?どちらを使えばいい?

dhcpcd.confwpa-supplicant.confが基準になって、interfacesはデバイス自身のために残ります。

ということなのでWheezyまでは固定IP設定は/etc/network/interfaceでいいですし、Jessie以降でもそうできなくはないですが、ここではStretchなのでdhcpcd.confを使うことにします。

なお、同じような大型アップデートとしてサービスの登録をinit.dで行っていたものがsystemdに変わっていますが、これは別の記事で書きます。

/etc/network/interfacesの設定

よって/etc/network/interfacesにはIPを書かず、デバイス設定の記述だけ足します。

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotlplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

ちなみに、初期状態でも起動したらIPを取って来ているのでDHCPなら何もしなくてもよさそうです。configに明記するなら以下のようにできます。

auto eth0
iface eth0 inet dhcp

dhcpcd.confの設定

/etc/dhcpcd.confの一番最後に固定したいIPアドレスを書き足します。

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

interface wlan0
static ip_address=192.168.0.116/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

インタフェース名もWindowsユーザには馴染みがないので混乱するところですね。eth0が有線LAN、wlan0無線LANです。

wpa_supplicant.confの設定

無線LANの接続設定は/etc/wpa_supplicant/wpa_supplicant.confに書きます。

先に必要なSSIDと、パスフレーズを暗号化してメモっておきましょう。

wpa_passphrase SSID パスフレーズ

wpa_supplicant.confにconfigを追記します。key_mgmt公式ドキュメントを見ていると、なくても良いかもしれません(未検証)

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

# ここから追記
network={
    ssid="SSID" #ダブルクォーテーションが必要
    scan_ssid=1 #SSIDがステルスなら1にする
    psk=暗号化されたパスフレーズ #暗号化しないと動かない(気がする)
    key_mgmt=WPA-PSK #なくてもいいかも
}

wlanデバイスが動作しているか不安な場合は、SSIDを拾うかどうか見てみましょう。

sudo iwlist wlan0 scan | grep <SSID名>

余談ですが、サポートされる周波数は2.4GHzのみです。5GHzはサポートされていません。

結果確認

DHCPの予約があれば解除しておき、サービスとインタフェースを再起動してIPアドレスが固定されるか確認します。ifconfigWindowsで言うところのipconfigです(ざっくり)

# サービスとインタフェースを再起動
sudo systemctl restart networking
sudo systemctl restart dhcpcd
sudo ifconfig down eth0
sudo ifconfig up eth0
sudo ifconfig down wlan0
sudo ifconfig up wlan0
ifconfig

まとめてsudo rebootでもいいです。下手するとsshが繋がらなくなるので注意してください。シリアル接続だとサービスの起動ステータスも出力されるので、networkingdhcpcdが[OK]になっているかチェックしておきましょう。

コマンドからステータスチェックするならこう。

systemctl status networking
systemctl status dhcpcd

Active: active (exited)になっていれば立ち上がっています。

再起動後、ifconfigして無事IPアドレスが取れていれば成功です。