簡単なp2pvpnアプリを作成する必要があります。多くの検索を行った後、トンネルの作成に使用されるPYTUNと呼ばれるPython用のtun/tapモジュールを見つけました。このモジュールを使用して、2つのリモートピア間にトンネルを作成するにはどうすればよいですか?
添付のすべてのドキュメントには、ローカルコンピューターでトンネルインターフェイスを作成して構成する方法のみが示されていますが、リモートピアに接続する方法については説明されていません。
簡単なp2pvpnアプリを作成する必要があります。多くの検索を行った後、トンネルの作成に使用されるPYTUNと呼ばれるPython用のtun/tapモジュールを見つけました。このモジュールを使用して、2つのリモートピア間にトンネルを作成するにはどうすればよいですか?
添付のすべてのドキュメントには、ローカルコンピューターでトンネルインターフェイスを作成して構成する方法のみが示されていますが、リモートピアに接続する方法については説明されていません。
pytun はこれには十分ではありません。これは、Python アプリケーションをシステム ネットワーク インターフェイスに接続する役割を果たします。実際には、そのシステム ネットワーク インターフェイスの実装を担当することになります。
そのネットワーク インターフェイスを介してルーティングされるトラフィックが実際のネットワークを通過するようにする場合、ホスト A からホスト B にデータを移動する実際のネットワーク操作を実行するのは Python プログラムの仕事です。
これはおそらくうまくやるには大変な作業です。代わりに、既存の VPN ツールを使用することをお勧めします。
誰かが Google でこの古い質問を見つけた場合に備えて: python-pytun (リポジトリはこちら) を見てください。簡単な IP およびイーサネット トンネルを実装する方法を示すサンプル スクリプトがあります。
基本的な考え方は、2 つのサイト間で TCP 接続を確立することです (通常のソケット API を介してアクセスします)。また、両方の通信側が TUN または TAP インターフェースを作成します。
各ホストは、ソケットと TUN/TAP インターフェイスからデータ (パケット) を読み取り、各パケットを他のデバイスに書き込むループを実行します。これは、トンネルに暗号化を追加できる場所です...
警告を追加させてください: 独自の VPN トンネル アプリケーションを作成するのは楽しいかもしれませんが、それ以外の目的でトンネルを使用する場合は、既存のトンネル アプリケーションまたはスタック (OpenVPN、IPSec など) を使用することを強くお勧めします。楽しいプロジェクト: 専門家であっても、暗号とプロトコルを正しく理解することは非常に困難ですが、専門家でない人にとってはほとんど不可能です。