RaspberryPi3(Raspbian stretch)での静的ルート でハマったのでメモ
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch
#環境
RapberryPi3(以下、端末)は以下のネットワークに接続されている。
IPは固定
10.0.0.0/8----ルーター(IF .1)---192.168.0.0/24---(usb0* IF .254)
端末(wlan0 IF .12)---192.168.2.0/24
*usbドングルによる接続
#要求
- 192.168.0.0/24は、10.0.0.0/8ネットワークにアクセスする場合のみ利用
- 基本、10.0.0.0/8ネットワーク以外は192.168.2.0/24ネットワークのみを利用
#問題
- 10.0.0.0/8のルート情報がない
- デフォルトゲートウェイの優先度がusb0の方が高い
#条件
- 10.0.0.0/8は192.168.0.1(GW)へいくルート情報の追加
- 192.168.0.0/24側のデフォルトゲートウェイの削除もしくは優先度の変更
- DHCPによる動的IPにおいても対応可能
#方法
デフォルトゲートウェイは、静的IPの割り当てであれば
/etc/dhcpcd.confファイルの追記の際に入れているstatic routersを削除すれば対応可能
interface usb0
static ip_address=192.168.0.254/24
static routers=192.168.0.1 ー>コメントアウト
DHCPによる動的IPの場合はできない。
##方法1. /etc/network/interfaces.d/ 配下ディレクトリに設定(失敗)
$sudo vim /etc/network/interfaces.d/usb0
allow-hotplug usb0
iface usb0 inet static
post-up route add -net 10.0.0.0/8 metric 10 gw 192.168.0.1
post-up route del default dev $IFACE
結果として、10.0.0.0/8のルートはできるが、デフォルトゲートウェイの削除が不安定
(一旦削除されたあとさらに上書きされている)
##方法2. /lib/dhcpcd/dhcpcd-hooks/40-route ファイルを追加(成功)
$sudo vim /lib/dhcpcd/dhcpcd-hooks/40-route
ip route add 10.0.0.0/8 via 192.168.0.1
ip route del default via 192.168.0.1
予定通り動作した。
ip routeで優先度も変更可能
以下参考URL
方法1でも中途半端に動作したため、解決に時間がかかった。
デフォルトゲートウェイを削除したいと思わなかったら方法2は知らないままだったので記録として残します。