OpenVPN クライアントは 0.0.0.0 でリッスンしています

OpenVPN クライアントは 0.0.0.0 でリッスンしています

私は最初は無料の VPN を使用して、Linux で OpenVPN をテストおよび調整しています。

私が見たすべての情報源によると、OpenVPN プロキシは localhost:1194 でリッスンしているはずです。実際、プロキシは常にオリジンの 0.0.0.0 でリッスンしており、ブラウザは通常のポートでこのアドレスにプロキシを設定した状態でのみ OpenVPN に接続します。

0.0.0.0 は man openvpn では言及されていません。オンラインでの 1 つの言及では、サーバー実装でこのアドレスを示していますが、0.0.0.0 が示されていない client.ovpn を使用してクライアントを実行しています。オンラインのアドバイスでは、通常、オリジンでリッスンしているアプリケーションについて警告していますが、さらに重要なのは、私が見たすべてのドキュメントでは、OpenVPN が localhost:1194 でリッスンし、ブラウザーはこのプロキシに設定する必要があることを前提としていることです。

OpenVPN が間違ったアドレスをリッスンするのはなぜですか? また、どうすれば修正できますか?

編集:

man openvpn をもう一度見ると、0.0.0.0 が「デフォルト ゲートウェイ」として記載され、localhost が管理 IP として指定されていることがわかります。

私が見た覚えのある、OpenVPN で商用 VPN を使用する方法と、OpenVPN でブラウザーを使用する方法のすべては、localhost:1194 の使用を示唆または暗示しています。ほとんどのプロキシが localhost (Tor、Privoxy など) でリッスンしていることからも、このことが暗示されています。以下のコメントにもかかわらず、OpenVPN と VPN クライアント全般は、プロキシ (アプリケーションがネット アクティビティをポートする、SOCKS や http トンネルなどの利用可能なリッスン サービス) であるかのように、実際に広く議論されています。

私が見たものには、動作プロキシとして 0.0.0.0:1194 を入力する必要があるという記述はありませんでした。実際、アドレス:ポートが明示的に指定されない限り、Firefox は OpenVPN では動作しません。

OpenVPN を使用した iptables に関する唯一のチュートリアルでは、dport の指定のみが提案されており、アドレスの指定は提案されておらず、ポートが localhost 上にあることが示唆されています。

すべての言及は Web から保存されたドキュメントにありますが、その URL がわからず、現時点ではオンラインで検索する時間がありません。

0.0.0.0 IP に関する議論では、ここでリッスンしているサービスがすべてのインターフェースでリッスンしていることが示唆されていますが、これはすぐに問題だと私は思います。リスナーを特定のインターフェース、つまり localhost に制限する方がよいでしょう。たとえば、Superuser の他の場所には次のような記述があります。

サービスが 0.0.0.0 でリッスンしている場合、そのサービスは設定されているすべてのネットワーク インターフェースでリッスンしていることを意味します。127.0.0.1 でリッスンしている場合、サービスはループバック インターフェースにのみバインドされます (ローカル マシンでのみ使用可能)。

IP アドレス 0.0.0.0 は、使用される場所に応じて、非常に異なる意味を持つ場合があります。

これは、0.0.0.0/8 サブネット内の他のアドレス (つまり、0 で始まるアドレス) とともに、実際のネットワーク インターフェイスに指定できる有効なアドレスではありません。コンピュータがまだ自分の IP アドレスを知らず、それを取得しようとしている場合 (典型的な例: DHCP) を除き、IP パケットの送信元アドレスとして使用することはできません。ルーティング テーブルで使用される場合、これはデフォルト ゲートウェイを識別します。0.0.0.0 へのルートがデフォルト ルートであり、つまり、宛先アドレスへのより具体的なルートがない場合に使用されるルートです。最後に、netstat コマンドの出力 (これが要求された内容です) に表示される場合、これは特定のソケットがコンピュータが持つすべての使用可能な IP アドレスをリッスンしていることを意味します。コンピュータに複数の IP アドレスがある場合、ソケットは特定のアドレスとポートのペアのみ、またはポートとすべてのアドレスにバインドできます。そこに IP アドレスが表示されている場合、ソケットはそのポートとその特定のアドレスのみをリッスンしていることを意味します。 0.0.0.0 と表示される場合、ループバック アドレス (127.0.0.1) を含むマシンのすべてのアドレスでそのポートをリッスンしていることを意味します。

Lifewire でも同様のことが不吉な口調で示唆されています。これは、OpenVPN が初期化フェーズ中に root として実行され、その後権限のないユーザーにフォールバックするという事実を考えるとさらに悪いことであり、私の知る限り、Debian にはこれに対する緩和策は存在しません。

https://www.lifewire.com/four-zero-ip-address-818384

補足として、任意のサーバーで OpenVPN を localhost でリッスンするように設定することはできますか?

答え1

IPアドレス0.0.0.0 デフォルトのアドレスを意味します。

OpenVPN は明らかにすべてのトラフィックを VPN 経由でルーティングするように設定されているため、クライアント上のすべてのリクエストをリッスン (および応答) して、それらを VPN 経由でルーティングします。

をリッスンしないように設定すると0.0.0.0、すべてをデフォルトで VPN 経由でルーティングするオプションが失われます。


説明: OpenVPN は、オペレーティング システムにとって物理ネットワーク アダプタと同じ仮想ネットワーク アダプタを作成します。OpenVPN が接続されている間、コンピュータにはこのようなアダプタが 2 つあります。

すべてのインターネット リクエストがアダプタを通過するように、OpenVPN はルーティング アドレスを に設定します0.0.0.0。これは、「すべてを処理する」という意味を持つ特別なメタ アドレスです。

OpenVPN が接続される前は、物理アダプタは自身を としてアドバタイズしていた0.0.0.0ため、それをリッスンしていたのはそのドライバでした。

0.0.0.0OpenVPN が接続された後、物理アダプタから削除され、それ自体が取得されたため、OpenVPN ドライバーはそれをリッスンするようになりました。

OpenVPN のリッスンを停止させる唯一の方法は、0.0.0.0VPN を切断することです。機能するには、OpenVPN がリッスンしている必要があります。

関連情報