.NETを使用して、PCがVPNに接続されていて、VPNをインターネットゲートウェイとして使用している場合に、PCの外部IPを取得する方法はありますか?私の最終的な目標は、クライアントPCが本当にネットワーク上にあるのか、それともリモートロケーションにあるのかを検出することです。
編集:これらの答えのいくつかを読んだ後、私はもう少し具体的にする必要があります。私が探しているのは、VPNをバイパスしてラップトップの真の外部IPをチェックするプログラム的な方法だと思います。これは可能ですか?
.NETを使用して、PCがVPNに接続されていて、VPNをインターネットゲートウェイとして使用している場合に、PCの外部IPを取得する方法はありますか?私の最終的な目標は、クライアントPCが本当にネットワーク上にあるのか、それともリモートロケーションにあるのかを検出することです。
編集:これらの答えのいくつかを読んだ後、私はもう少し具体的にする必要があります。私が探しているのは、VPNをバイパスしてラップトップの真の外部IPをチェックするプログラム的な方法だと思います。これは可能ですか?
私はそうは思わない。ただし、取得したIPが頻繁に使用されているかどうか、またはVPNサーバーをホストしていることがわかっているかどうかを確認することで、クライアントがVPNからのものであるかどうかを検出できます(リストを作成できます)。
また、クライアントにいる場合は、ウィンドウでROUTE PRINTを実行し、出力を解析してVPN固有のエントリを検索できます。VPNに接続しているときと直接接続しているときにコマンドを実行して、違いを見つけてください。物理アダプターに加えて、VPNアダプターとそれを通過するすべての外部ルートが表示されます。VPNをバイパスして外部IPを取得する場合は、外部サーバーにアクセスして外部サーバーにアクセスすることで行う可能性がありますが、ethenetアダプターを介してそのサーバーへのルートを追加する必要があります。しかし、私はそれをブロックするVPNクライアントを使用しました。つまり、すべてのトラフィックがVPNを通過する必要があるため、これは機能しない可能性があります。
「実際の」IPを直接検出することはできませんが、ネットワークトポロジに固有の要因を調べることで、それらがネットワーク上にあるかどうかを推測できる場合があります。
たとえば、ローカルネットワーク上のコンピューターのping時間は、外部のコンピューターのping時間とは大幅に異なります。これは100%完璧ではありませんが、非常に確実な指標になるはずです。
ルートも異なる場合があります(tracerouteは、ローカルネットワーク上のデバイスとリモートデバイスの異なるルートを表示しますか?)
VPNの主な目的の1つは匿名性を提供することであるため、サーバー、たとえばHTTPサーバーの場合はできません。マシンはVPN経由でインターネットに接続するため、クライアントがvpnをバイパスして実際のIPアドレスを送信しない限り、送信することはできません。
最も簡単な方法は、VPNに固有のIPの範囲を割り当ててから、内部IPがその範囲内にあるかどうかをテストすることです。
通常、VPNに接続している場合、物理的に接続している場合のサブネットとは異なるサブネットのIPがありますが、そうでない場合は、tracertを実行して、応答を取得することができます。 VPNを管理するファイアウォールは、ネットワークへの接続を提供するルーターと同じではありません。応答を解析するだけです。
これを行う別の方法は、IPを使用してアダプターの名前を取得することです(取得したVPNアダプターの場合)。