再起動しても持続するMacOSXの静的ルートをどのように定義しますか?私がGoogleで見つけた唯一の提案は、起動時に実行するようにlaunchdサービスを設定することを推奨しています。これは恐ろしいハックのようです(たとえば、再起動せずにネットワークを再起動しても存続しますか?)
一時的に必要なルートを設定するには、次のコマンドを実行します。
route add -net ${network} ${gateway} ${netmask}
これを持続させるにはどうすればよいですか?
起動デーモン(その前のスタートアップアイテムのような)がこの点で2つの重要な問題を抱えていることを除いて:
システム構成がネットワーク構成をやり直すと、ルートが破棄されます。 LaunchedにLaunchDaemonを定期的に実行させることでこれに対抗できますが、ルートが復元されるまでその時間待つ必要がある場合があります。
一部のネットワークインターフェイスが完全に構成される前に、起動デーモンとスタートアップアイテムの両方を実行できます。その場合、その時点でルートを作成できず、Launch Daemonの定期的な呼び出し(またはスタートアップアイテムの場合はおそらくcronジョブ)の待機にフォールバックする必要がある場合があります。
うまくいけば、より良い(つまりより堅牢な)ソリューションになるものを自分のWebサイトに投稿しました。 インストーラーパッケージ(ダウンロード) を作成しました。ソースコードもいくつかありますが、投稿ごとに複数のハイパーリンクを配置するのに十分な評判がまだないため、サーバー障害にリンクを投稿できません。
これを使用するには、パッケージをインストールします(これまでのところ、私のラップトップでのみテストされていますが、動作しているようです)。 「staticrouted」サーバープロセスを開始するLaunchDaemonをインストールする必要があります(これを上で確認できます。実行されていない場合は、インストーラーが少し間違っている可能性がありますが、launchctlを使用して起動できるはずです。通常)。
静的ルートを作成するには、「staticroute」プログラム(/ usr/local/sbinにあります)を使用します。例えば.
staticroute add 10.128.4.0/24 "Main Network Interface"
staticroute delete 10.192.0.0/16 "Other Interface"
設定されたスタティックルートのリストも表示されます。
staticroute list
およびインターフェイス名のリスト
staticroute list-interfaces
構成された静的ルートは再起動後も存続し、ネットワークインターフェイスが上下すると自動的に追加および削除されます。
マニュアルページもあります。これらは/ usr/local/share/man/man8にインストールされるため、/ usr/local/share/manがまだ存在しない場合は、MANPATHに追加することもできます。
強調する必要があります。静的ルートを維持するためにcronジョブを使用する必要があるために発生している問題を修正するために、今日このコードをノックアップしました。それは私にとってはうまくいくようですが、YMMV。コードとバイナリはMITライセンスされています。
良さの昇順での3つのアプローチ:
良さの順序については意見が分かれる必要があります。OPがlaunchdを使用している場合(手動で作成されたplistまたはlingonで作成されたplistのいずれか)、起動時に実行できます。 RouteSplitのようなAppleScriptベースのソリューションを使用している場合、ユーザーがログインしないと実行できません。
チャールズ、私は興味があります、なぜlaunchdのようなOSベンダーが認可したツールを使用することはあなたにとってハックに見えるのですか?