RaspberryPi[39] add route が有効にならない

DHCPでルーターからIPをもらうときには、適切に route 情報が書きこまれるけれど、固定IPにしたときは、route が何も設定できない状態になります。起動時の自動起動で設定スクリプトを書きましたが、全然反映されないので悩みました。手動で

sudo /usr/sbin/route add -net 192.168.1.0 netmask 255.255.255.0

と入れると、ちゃんと設定されるので記述自体は間違ってない。

ラズパイの自動起動の方法はいくつかあります。一番簡単なのは、/etc/rc.local に記載する方法で、私はずーとこれで行っていました。今回、同じように記述しても反映されないので、色々調べた結果、route コマンド はネットワークリンクがUPしてからではないと駄目なようです。SIOCADDRTのエラーが出る場合はまずそれでしょう。それをキーワードで調べると、/etc/network/if-up.d の下に static-route ファイルを作り記述するという方法と、/lib/dhcpcd/dhcpcd-hooksの下に 40-route ファイルを作りその中に記述するという二つの方法が見つかりました。

/usr/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 wlan0
/usr/sbin/route default gw 192.168.1.1

結論から言えば、後者の40-route ファイルに記述することでちゃんと route が設定されました。

ちなみに。ラズパイ4はrc.localで呼んだスクリプトでもちゃんと設定されます。なぜか2Wはこれがうまくいかない。時間を待って起動させれば、有効になったかもしれません。

色々自動起動の方法を調べていて、crontab を利用する方法があるのを初めて知りました。これは。route の設定はできません。やはり、リンクがUPしてから行わないとだめなので。

キーワード機能
@reboot起動時に1度だけ実行
@yearly1年に1度だけ実行(「0 0 1 1 *」と同等)
@annually@yearlyと同じ
@monthly1カ月に1度だけ実行(「0 0 1 * *」と同等)
@weekly1週間に1度だけ実行(「0 0 * * 0」と同等)
@daily1日に1度だけ実行(「0 0 * * *」と同等)
@hourly1時間に1度だけ実行(「0 * * * *」と同等)
crontabの便利な記述