このプロジェクトについて

TurkeyBiteは、クライアントのネットワークトラフィックを分析し、クライアントが要求したドメインを分類するために設計されたオープンソースのドメイン・ホストコンテキスト分析パイプラインであり、アダルトコンンツ、ギャンブル、ショッピングなどのカテゴリを対象としています。これはクライアントの要求をブロックしない非侵入型の分析ツールとして明示的に構築されているため、必要に応じてPi-holeのようなブロッキングツールと併用して実行でき、エンドユーザーのネットワーク体験に影響を与えません。 このパイプラインは、Python 3、Valkey(Redis互換のインメモリデータストア)、Bind9 DNSサーバー、トラフィック収集用のPacketbeatおよび/またはBrowserbeat、データのインデックス作成と保存用のOpenSearch、可視化用のOpenSearch Dashboardsを含むDockerベースの技術スタックに依存しています。複数の公開ソースからドメインおよびホストの分類リストを集約し、分析結果を充実させます。 運用時、PacketbeatはサポートされているDNSサーバーからDNSトラフィックをキャプチャし(Bind9およびMicrosoft DNSサーバーで本番環境でテスト済み、Packetbeatを実行できる任意のDNSサーバーと互換性あり)、データをValkeyに送信します。Browserbeatは、サポートされているブラウザからブラウザ履歴データを収集するために使用できます。TurkeyBiteのコアプロセスとワーカープロセスが取り込まれたデータを処理し、ドメインカテゴリのコンテキストでデータを強化し、結果をOpenSearchにインデックス化して、OpenSearch Dashboards経由でクエリと可視化を行えるようにします。 デプロイはDocker Composeで管理され、セットアップスクリプトが、さまざまなデプロイ規模(開発、小規模、フルスケール)に応じた構成をユーザーに案内します。これには、クライアントIPのDNSルックアップ設定、出力オプション(OpenSearchおよび/またはSyslog)、サービス認証情報が含まれます。セットアップスクリプトは、必要な構成ファイル(.env、config.yaml、docker-compose.yml)とサービス認証用のシークレットファイルを自動生成します。複数ノードにまたがる分散デプロイでは、各ノードで適切な構成を指定してセットアップスクリプトを実行でき、Valkeyが別の専用サーバーで実行される場合は、Valkey認証シークレットをコアノードとワーカーノードにコピーする必要があります。 データ収集構成では、Packetbeatをポート53のDNSトラフィックをキャプチャし、Valkeyに出力するように設定する必要があり、datatypeとkeyの設定を選択したTurkeyBiteパイプラインモードに注意深く一致させる必要があります。「consume」モードでは、Valkeyリストを使用して、永続的なバックログ追跡を伴うat-least-once配信を行います。一方、「rq」モードでは、Valkey pub/subを使用しますが、これは設計上損失が発生します。Browserbeatは、独自のインストール手順に従って個別に構成され、ブラウザ履歴データを収集します。 日常的なメンナンスには、vols/logsディレクトリに保存されているログの確認が含まれ、vols/listsに保存されているドメインリストは、ユーザーが設定した更新間隔に従って自動的に更新されます。一般的なトラブルシューィング手順には、docker compose logsによるコンテナログの確認、個別サービスの再起動、Dockerネットワーク内のコンテナ間接続の検証が含まれます。