任意のネットワーク接続を分析およびデバッグする開発者ツールを設計していますが、ローカルにインストールするソフトウェアではなく、サービスとして提供したいと考えています。
理想的には、すべてのインバウンドパケットとアウトバウンドパケットをユーザーごとにデータベースに保存したいと思います。
例えば:
3番目のステップに対処する方法を理解するのに苦労しています。
マニュアルを読み、Webを検索し、Server Faultを検索しましたが、どこかにパズルのピースが欠けているのではないかと思います。仮想インターフェイスをスニッフィングするための追加のツールが必要ですか、それともOpenVPNがこれを何らかの方法で処理できますか?
OpenVPN自体は何もスニッフィングしませんが、標準のスニッフィングツールを使用できます。
トンネルモードで動作するようにOpenVPNを構成すると、アプリケーションホストとサーバー間の接続は、独自のIPアドレスを持つ仮想インターフェイス(unixライクなホストではtunなどの名前)に表示されます。それぞれの側に。アプリケーションの観点からは、サーバーはアプリケーションホストの同じネットワーク上に物理的に存在し、ルーターとして機能しているように見えます。したがって、通常のネットワークインターフェイスで動作するスニッフィングツールは、必要なデータを取得します。しましょう。
私は多かれ少なかれ次のように何かをします
一方、VPN仮想デバイス上でスニッフィングプログラムを実行して、インターフェイスから継続的にパケットを取得し、リモートアドレスを調べて、現在のユーザーリストと照合し、データベースに保存します。これはおそらく、ネットワークインターフェイスからパケットを抽出するための標準のスニッフィングツールと、パケットを解析し、必要な情報を抽出してどこかに保存するカスタムツールの組み合わせになります。
VPNエンドポイントとして機能しているコンピューター上のOpenVPNTUNまたはTAPインターフェイスを離れるときに、トラフィックをスニッフィングする必要があります。ここには魔法はありません(または少なくとも私が考えることができる以上のものはありません)。インターフェースは、インターフェースであり、インターフェースです。
OpenVPNはパケットスニッフィングのネイティブ機能を提供しませんが、tcpdumpやtshark/wiresharkなどのその任務を実行するための専用ツールがたくさんあります。
実際、OpenVPNはどのように全体像に適合していますか?
Linuxが「TUN」と「TAP」(それぞれIPトンネルスタイルとイーサネットスタイルのインターフェース)と呼ばれる「仮想」ネットワークインターフェースをサポートしていることをどこかで読んだことが漠然と感じているので、グーグルで検索しました。たまたまそのインターフェイスのタイプに同じ方法で名前を付けるOpenVPNを見つけました(Linuxで同じカーネル機構を使用していると私は信じているため)。
実際、あなたは これらの仮想インターフェイスの直接操作 の世話をしていると思います。これにより、独自のネットワークインターフェイスを作成でき、ユーザースペースアプリケーションを介してそれらを通過するすべてのトラフィックを効果的に渡すことができます。