0

正しい IP を取得しようとしていますが、取得できません

私はこのコードを使用しています:

{
    IPHostEntry host;
    string localIP = "?";
    host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (IPAddress ip in host.AddressList)
    {
        if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
        {
            localIP = ip.ToString();
        }
    }
    return localIP;
}

しかし、それは私にはうまくいきません!

たとえば、私の実際の IP はです151.246.147.86 が、このコードでは192.168.1.2.

注: 私は 4 つのネットワーク アダプターを持っており、 IPConfigを使用した DOC には次のように表示されます。

Network adapter: Local Area Connection 6
Media state : Media disconnected

Network adapter: Local Area Connection 4
Media state : Media disconnected

Network adapter: Local Area Connection 3
IP Address: 10.10.255.222

Network adapter: Local Area Connection
IP Address: 192.168.1.2

今、私はネットに接続し、「ローカルエリア接続」で使用しています。WAN 接続のパブリック IP は です151.246.147.86。このパブリック IP ( ) を取得したいのですが151.246.147.86、どうすればよいですか?

注 : サードパーティの Web サイトを使用して IP を取得したくありません (VPN を使用しているため、できません)。

助けてください!

- - - -編集 : - - - - - - -

注:私は VPN から使用しており、私の VPN IP (たとえば) は次のとおり176.227.197.111です。しかし、私の WAN の IP は次のとおり151.246.147.86です。このアドレスを取得したいと考えています。

4

4 に答える 4

1

ルーター/モデム/最も外部のエンドポイントに WAN アドレスを照会する方法がない限り、あなたが求めることは不可能です。コンピューターが認識する唯一の IP アドレスは、それ自体 (内部 IP) です。

技術的な注意: IP アドレス 192.168.1.2 について「本物」でないものは何もありません - これあなたのコンピュータのアドレスです。これは、指定された内部ネットワークに対して単純にローカルであり、外部に対してはほとんど役に立ちません。


ルーターが uPnP をサポートしている場合は、クエリを実行する必要がありますGetExternalIPAddress(出発点.NET (C# または VB.NET) 用の UPnP ライブラリはありますか? )。ただし、uPnP は危険であると考えられており、多くのセキュリティ意識の高いユーザーがオフにしているため、有効にすることは期待できません。

外部サービスにクエリを実行することは、外部 IP を取得するための最も信頼できる方法です。これは、それが自分で書いたものであろうと、サード パーティのサービスであろうと ( https://superuser.com/questions/420969/services-that-just-returnも参照)。 -your-public-ip-as-text )。

于 2013-03-11T08:19:52.617 に答える
1

(おそらく) ルーター/モデムを使用しているため、192.168.1.2 が「実際の IP」です。モデム/ルーターは同じ (プライベート) ネットワーク上にあり、そのパブリック インターフェイス (WAN) にはパブリック IP があります。そのため、モデム/ルーターのパブリック インターフェイスで IP を取得する必要があります。

モデムの WAN IP を取得する方法は、マークとモデルによって異なります。UPnP をサポートしている場合は、おそらくそれを実行できます。または、エンタープライズ クラスのルーターである場合は、SNMP もサポートしている可能性があります... メーカーとモデルを指定する必要があります。

外部サイトを使用しない別の方法: 既知のサイト (google?) への tracert を実行すると、最初のホップがルートになります。また、VPN を使用している場合は、同じ手法を使用できる場合があります。たとえば、VPN 上の別のホスト (おそらくサーバー?) を知っている場合は、それを ping/トレースして、そこからルーターを検出できます。この場合、あなたが「本当の IP」と呼ぶものを取得できるかどうかはわかりません (ちなみに、そもそもこの IP をどのようにして知ることができますか? 同様に、プログラムによって取得できる可能性があります)。 .

VPN ベースのシナリオの別のソリューションとして、Windows を使用できます。Windows には、役に立つかもしれないある種の VPN 管理 (RAS) があります。基本を理解するためにここから始めてから、ライブラリ/SDK を探すことをお勧めします (Google ですばやく検索するとhttp://dotras.codeplex.com/が返されます)。

于 2013-03-11T08:23:23.480 に答える
0

IPアドレスを見つける方法を教える多くの方法とチュートリアルがあります.私はこのツールhttp://www.ipgp.net/を使用して任意のIPアドレスに関する情報を表示します.ボックスに任意のIPアドレスを入力するだけで取得できます.国、都市、地域、ISP、住所、およびすべてのクエリの衛星位置マップ。

于 2013-04-02T12:17:45.470 に答える
-1

コンピューターまたはサーバーから IP アドレスを取得しようとしていますか? それは多くの違いを生むでしょう。コンピューター/ラップトップから IP アドレスを取得しようとしている場合は、http://www.howtochangeipaddress.comを使用してください。サイトに入るとすぐに、あなたの IP が目の前に表示されます。

于 2014-04-15T05:07:13.050 に答える