3

どのタイプの NKE を作成すべきかについてのヒントを期待しています。OS X でパケットの iproute2 スタイルのルーティングを行うことを検討しています。デフォルトでは、macOS では、「route」コマンドは IP アドレスに限定されているように見えます。ルートをポートに基づいて作成したいと思います。

拡張するために、私はポート 80 と 443 のみが許可されている企業ネットワークにいますが、非常に遅いがすべてのトラフィックを許可する 2 番目のネットワークがあります。80/443 のすべてのトラフィックをより高速な企業ネットワークに転送し、それ以外はすべて低速のネットワークに転送したいと考えています。ただし、ローカル ネットワークの IP 範囲を介して企業ネットワークと通信しようとするトラフィックは例外です。ケースバイケースで、特定のインターフェイスを他のインターフェイスよりも優先して使用するようにアプリを構成できることはわかっています。また、インターフェイスに接続されたプロキシを使用して、トラフィックがフィルターで一致した場合に別のインターフェイスにトラフィックを「転送」することもできますが、過去にメモリ/ディスクの使用量とローカル プロキシに関する問題がありました。

ポートごとに macOS のルーティングを変更することはできないため、サービス順序の最上位に位置し、トラフィックを誘導する独自の仮想ネットワーク インターフェイスを作成できたらどうでしょうか? おそらく、これはパケットの転送、場合によってはパケットの再作成を意味するため、これが最善のアプローチであると 100% 確信できるわけではありません。または、リダイレクトするトラフィックを既存のインターフェイスでリッスンし、リダイレクトされたパケットを別のインターフェイスに変更することもできます。

Apple の Web サイトにある NKE のドキュメントなどの NKE のドキュメントを読んでいると、Apple のメーリング リストへのこの未回答のポスターと同じ立場にいることに気づきました。与えられた例は、使用するインターフェイスの再割り当てではなく、ファイアウォールまたはパケットの書き換え (NAT など) に焦点を当てる傾向があります。そうでなければ良い本も私を助けることはできません。

カーネル拡張機能を書かない方が安全なので、PFでこれが可能ならそこでやりたいです。私はIPNetSentryXについても認識していますが、おそらくサポートが終了していると思われます。つまり、結局 IPFW を使用していたのでしょうか? NKEを使っているとのことですが、可能性はありますか?

考え?Github を検索しましたが、マシンのネットワーク トラフィックをルート化するための 2 つのリポジトリ、TunTap コードを使用する VPN クローンの束、およびルーター アドバタイズをリッスンする拡張機能の構築に関するこの read-meしか見つかりませんでした。残念ながら、ルーティングの例や、トラフィックのインターフェイスの変更はありません。考え?

更新 1: BSD 4.3 の PF に関するドキュメントを確認しましたが、ルーティングに必要なものがないようです。代替ルートに関する IPNetRouterX のヘルプ ページを見ると、Apple Network Kext Interface Filter を使用したいようです。

更新 2: Kext の開発に関する WWDC からの関連講演が 3 つあります。少なくとも 2010 年以降にオンラインで行われたものです。

  • WWDC 2010 セッション 203 Mac OS X 用 I/O キット デバイス ドライバー
  • WWDC 2013 セッション 707 Kext 開発の新機能 (最後の 3 分の 1 は、新しいデバッグ フラグと 10.9 の変更点をカバーしています)
  • WWDC 2015 セッション 706セキュリティとアプリ (kexts について簡単に言及)

kext をテストするために 2 番目の VM を維持するのにどれだけの作業が必要かを考えると、kext でこれを実行したいかどうかはわかりません。事実上、iproute2 ユーザー空間ツールを使用した Linux では 1 ~ 2 行で済みますが、カーネル開発なしでは Mac では不可能のようです。基本的に、デスクトップ コンピューターで Linux ではなく OS X を選択したことに腹を立てたのはこれが初めてです。

それでも、誰かが macOS 開発ポインターで kext ネットワーク ルーティングを持っている場合、私はすべて耳にします。これは、私ができるかどうかを確認するためだけに、楽しい週末のプロジェクトになるかもしれません.

4

0 に答える 0