VPNで、192.168.40.0/24 を使っているが、家のどのマシンからもRaspberry Pi zero 2 W(以下ラズパイ)に繋がるように、次の様なルーティングにしている。
| 1 2 3 4 5 6 7 8 | noizumi@rx7pi:~ $ netstat -nr カーネルIP経路テーブル 受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インタフェース 0.0.0.0         192.168.42.129  0.0.0.0         UG        0 0          0 usb0 192.168.11.0    192.168.40.254  255.255.255.0   UG        0 0          0 wg0 192.168.30.0    0.0.0.0         255.255.255.0   U         0 0          0 wg0 192.168.40.0    0.0.0.0         255.255.255.0   U         0 0          0 wg0 192.168.42.0    0.0.0.0         255.255.255.0   U         0 0          0 usb0 | 
しかし、家に帰ると、WiFiが繋がり、192.168.11.0/24 のルーティングが非常にマズい事になってしまうので、削除して、家のWiFiのルーティングを適用したい。
前まで、ネットワークに接続したら、/etc/network/if-up.d とかにスクリプト入れてたら動いていたのだが、Raspberry Pi の buster では、動かなくなっている。
色々探してみたけど、「ifup,ifdownは使えなくなった」という情報しか出てこず、ルーティングを自動変更する手段が分からない。
「raspberry pi run script when connected to wifi」でググれカスしてみると、
https://raspberrypi.stackexchange.com/questions/120705/run-script-when-pi-connects-to-any-network
なるものがあり、参考にして、次の /lib/dhcpcd/dhcpcd-hooks/05-changeroute.sh を作成。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/sh do_bound(){         if [ "$new_network_number" = "192.168.11.0" ]; then                 ip route del 192.168.11.0/24         fi } do_expire(){         if [ "$old_network_number" = "192.168.11.0" ]; then                 ip route add 192.168.11.0/24 via 192.168.40.254 dev wg0         fi } if [ "$ifwireless" = "1" ]; then         case "$reason" in         BOUND)                  do_bound;;         EXPIRE)                 do_expire;;         esac fi | 
家のWiFi 接続時に、192.168.11.0/24 dev wg0 を削除して、wpa_supplicant がネットワークを設定し、WiFi が切れた時は、192.168.11.0/24 dev wg0 を設定するって感じで、うまく動いている。
WiFi に接続したらこんな感じ
| 1 2 3 4 5 6 7 8 9 | noizumi@rx7pi:~ $ netstat -nr カーネルIP経路テーブル 受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インタフェース 0.0.0.0         192.168.42.129  0.0.0.0         UG        0 0          0 usb0 0.0.0.0         192.168.11.1    0.0.0.0         UG        0 0          0 wlan0 192.168.11.0    0.0.0.0         255.255.255.0   U         0 0          0 wlan0 192.168.30.0    0.0.0.0         255.255.255.0   U         0 0          0 wg0 192.168.40.0    0.0.0.0         255.255.255.0   U         0 0          0 wg0 192.168.42.0    0.0.0.0         255.255.255.0   U         0 0          0 usb0 | 
しかし、英語情報に当たらないと分からないとは、困ったもんですなあ。 🙁
