私はLinux Mint 19.3を使用しています。
走りたい2つのインスタンスyoutube-dl
。
すべてのトラフィックがterminal 1
通過する必要がある一般ネットワーク。
すべてのトラフィックがterminal 2
通過する必要があるVPN。
できるコマンドがありますか?terminal 2
将来のすべてのコマンドにVPN接続を使用しますか?つまり、できるコマンドはありますか?terminal 2
将来のすべてのコマンドにVPN接続を使用するように指示しますか?
私が見つけたUnixプログラムを特定のネットワークインタフェースにバインドするしかし、特定のプログラムではなく、今後実行されるすべてのプログラムに特定の端末のVPNをバインドしたいと思います。
私が望むのは、端末を開き、youtube-dl
通常の接続を使用してタスクを実行することです。ただし、コマンドでVPNを有効にして実行すると、VPN接続を介して機能しますyoutube-dl
。youtube-dl
したがって、考えられる最終結果は同じプログラムの2つのインスタンスです。 1つは通常のネットワークを介し、もう1つはVPNを介してネットワーク選択がリアルタイムであり、事前定義されていません(ルーティングテーブルなどを介して)。
ツールが見つかりました。VPNしかし、これが私が探しているものか、より良い解決策があるかどうかはわかりません。
答え1
「将来のすべてのコマンドにVPN接続を使用するように端末2に指示する」ことはできません。
しかし、鳥ネットワークネームスペース、そのネームスペースでVPNを実行するか、VPNネットワークインターフェイスをそのネームスペースに移動し(おそらく適切な方法でプライマリネットワークネームスペースおよび/または物理ネットワークインターフェイスに接続した後)、このネットワークに名前を付けます。スペースを解放し、すべてのコマンドがVPN(およびVPN接続のみ)を使用して接続されるようにします。
Googleにはネットワークネームスペースに関する多くのチュートリアルがあります。必要な主なコマンドは次のとおりですip netns
。また、ネットワークネームスペースに接続するには、ネットワーキングの基本について十分な知識が必要です。
はい、vpnns
非常に同様に動作します。
答え2
あなたが要求した質問はすでにStackExchangeに回答されています。Unixプログラムを特定のネットワークインタフェースにバインドする。 App-Route-Jailを使用するソリューションがこの問題を解決すると思います。私はターミナルウィンドウをVPNに正しくバインドすることはできませんが、プログラムが実行されたときに特定のネットワークインターフェイスを使用するように強制できると思います。
役に立つ場合は、正しいコマンド引数を使用してyoutube-dl用のラッパーシェルスクリプトを生成してVPNを使用し、ターミナル2でそのシェルスクリプトを使用してVPNと連携できます。
これらのシェルスクリプトの例(BashなどのPOSIXシェルが必要です)
#!/bin/bash
MARK=10 LD_PRELOAD=./mark.so /path/to/youtube-dl "$@"
これを行うには、2つの実行可能ファイルに依存する必要があります。 1つは常に通常のネットワークを介して実行され、もう1つは常にVPNを介して実行されます。