2

こんにちは、

VPN(RAS)を介してリモートWindowsドメインネットワークに接続されているときにローカルマシンのIPアドレスを取得する方法の例を誰かに教えてもらえますか?つまり、リモートユーザーのローカルネットワークアドレスではなく、VPNアドレスが必要です。

たとえば、サーバー側のWindowsサービスはクライアント側のアプリケーションと通信し、接続されているすべてのユーザーとそのIPアドレスのログを作成する必要があります。

このソリューションは、ローカルネットワーク上のコンピューターを使用する場合は十分に簡単ですが、VPN経由でサーバーに接続しているユーザーのIPアドレスを取得するにはどうすればよいのでしょうか。IPアドレスgetメソッドはクライアント側で実行され、サーバーに送信されることに注意してください。

ドメインネットワークにローカルに接続している場合にのみ機能する現在のコードは次のとおりです。

public static string GetLocalIPv4()
{
    string ipv4Address = String.Empty;

    foreach (IPAddress currrentIPAddress in Dns.GetHostAddresses(Dns.GetHostName()))
    {
        if (currrentIPAddress.AddressFamily.ToString() == System.Net.Sockets.AddressFamily.InterNetwork.ToString())
        {
            ipv4Address = currrentIPAddress.ToString();
            break;
        }
    }

    return ipv4Address;
}

内部ネットワークはWindowsSBSによって制御され、mycompany.localなどのドメインを使用します。

お時間をいただき、誠にありがとうございました。ご回答をお待ちしております。

ロブ

4

1 に答える 1

0

@MarcB のコメントにあるように、その情報が必要な正当な理由が思いつかないので、好奇心からアプリケーションでこれを使用する方法を説明できれば興味深いでしょう。

ただし、Dns.GetHostAddresses を使用してマシンの IP アドレスを列挙することに関して、こことオンラインで多くの間違った回答があります。ほとんどの人は、構成された DNS リゾルバーでマシン名を検索することと、マシン アドレスを列挙することの違いを認識していないようです。これらは非常に異なるものであり、多くの場合正しい結果を返すように見えるかもしれませんが、同じものではないため、これは絶対に間違った方法です。たとえば、元の投稿者が回答として誤った回答にフラグを立てたが、@StephanCleary による正しい回答は以下の記事へのリンクを参照してください。参照: IPv4 アドレスの取得

違いは、マシンの構成を調べて、マシン自身の TCPIP スタックから見つけたい IP アドレスを列挙する必要があることです。上記のコードと誤った応答の多くは、DNS リゾルバーで名前を検索しようとします。その部分が正しければ、ネットワーク アダプタに基づいて (名前またはその他の属性で) VPN 接続を特定できるはずです。

于 2012-11-14T16:40:48.387 に答える