このプロジェクトについて
dsnitchは、Dockerコンテナ向けに設計された軽量なシングルバイナリのネットワークおよびDNSエグレスインスペクタです。最新のLinux eBPF技術を活用し、コンテナからのすべてのアウトバウンドネットワークアクティビティ(TCP/UDP接続、ICMP ping、DNSクエリを含む)を、コンテナネットワークスタックの変更、サイドカーコンテナ、またはヘビーなテレメトリデーモンを必要とせずにリアルタイムで可視化します。
このツールは、受動的なカーネル内eBPFプローブをホストの統一cgroup v2階層とカーネルのTCPソケット状態トレースポイントに直接アタッチします。アウトバウンド接続要求、レイヤー3 ICMP ping、ポート53の生のDNSワイヤペイロードを傍受し、ソケットをDockerコンテナのメタデータと解決済みホスト名にユーザースペースで関連付けます。ロックレスBPFリングバッファを使用し、CPUオーバーヘッドはほぼゼロ(1%未満)です。
主な機能には、cgroup v2への直接アタッチによるゼロタッチのコンテナ属性付け、ユーザースペースのHickory DNSデコードによる完全なCNAMEチェーン解決を備えたカーネル内DNSスヌーピング、カーネルメモリポインタ(skaddr)を使用した決定的なステートフルソケット追跡(同時接続およびネットワーク名前空間間での衝突のない追跡)、ネイティブICMPプロトコルサポート、DNS解決済みホスト名と基盤となるエッジIPエンドポイントの両方を表示するデュアル宛先・物理IP列、およびダミーのPOSIX getaddrinfo() UDPポート0ルートルックアッププローブをスキップするインテリジェントなglibcノイズフィルタリングが含まれます。
Ratatuiで構築されたインタラクティブな分割ペインTUIは、左側にライブ接続カウンタ付きのコンテナ階層ツリー、右側にリアルタイムの色分けされたエグレスストリームを提供し、即時検索フィルタリング、コンテナのロック、ホストトラフィックの切り替えをサポートします。ヘッドレスストリーミングモード(-s)は、ロギング、CI/CDパイプライン、または他のCLIツールへのパイピング用に、非対話型のプレーンテキスト出力をサポートします。
インストールは簡単です。x86_64およびARM64 Linuxアーキテクチャ用のプリビルドバイナリが利用可能であり、Rust nightlyツールチェーンとrust-srcコンポーネントを使用してソースからビルドすることもできます。このツールは、統一cgroup v2とBTFを有効にしたLinuxカーネル5.8以降、およびDockerデーモンへのアクセスを必要とします。
非特権ユーザーの場合、dsnitchはsetcapを使用して最小限のLinuxケーパビリティ(cap_sys_admin、cap_net_admin、cap_dac_read_search)を付与し、dockerグループの任意のユーザーがsudoなしで実行できるようにすることを推奨します。あるいは、標準のsudo昇格で実行することもできます。このツールには、インメモリ単体テストと、ライブDockerコンテナに対して実行される自動化されたエンドツーエンド統合テストスイートの両方が含まれています。
このプロジェクトはGNU General Public License v3.0の下でライセンスされており、Infomaniacによってメンテナンスされています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.