デフォルトパスをリセットするbashコマンド/スクリプト

デフォルトパスをリセットするbashコマンド/スクリプト

私はOpenconnect VPNクライアントを実行するためにbashスクリプトを書いた複数のOpenWrt(組み込みLinux)ルーターを管理します。クライアントは「vpnc-script」を使用して、元のDHCPによって提供されたデフォルトパスを置き換えるパスを設定します。

私の問題は、トンネルがクラッシュしたりプロセスが終了したときにデフォルトルートがリセットされず、ルータに再接続できるデフォルトルートがないことです。

これまで、私はゲートウェイのIPアドレスに変数を手動で設定することでこの問題を解決してきました。しかし、私はこれが必要だとは思わない。また、ルーターが移動したら(別のゲートウェイの後にVPN接続を提供するために)、スクリプトでゲートウェイ変数を手動で変更する必要があります。

ルーターの起動時にデフォルトのパスが正しく(自動)設定されるため、後で簡単にトリガーする方法があると確信していますが、生涯にわたって見つけることができません!

Linuxシステムにデフォルトパスをリセットするように指示する簡単な方法はありますか?

答え1

よく。私のすべてのスクリプトでこれまで考えたことがない理由はわかりませんが、簡単な方法はインターフェースをリセットすることです。

ip link set eth0 down
ip link set eth0 up

答え2

デフォルトのパスは別のパスにすぎません。削除すると、カーネルはそれを維持できません。ランタイム構成のみ変更できます。

どこかにインターフェイスを設定した場合は、インターフェイスを再起動してみることができます(あなたの答えで述べたように)。しかし、まだそうしていない場合は、別の解決策が必要です。

2つのオプションが表示されます。

  • VPN 設定スクリプトでインターフェイスを設定すると、まず古いデフォルトパスを読み、他の場所に保存します。その後、トンネルが失敗した場合は、別のスクリプトを起動して保存した内容を読み取り、再適用できます。
  • VPN構成スクリプトに別々のルートテーブル(デフォルトとして設定)を使用させるようにします。その後、インターフェイスがダウンしたら、ルーティングテーブルを再切り替えするだけです。

関連情報