【问题标题】:How to get my correct IP address?如何获得正确的 IP 地址?
【发布时间】:2013-03-11 08:06:00
【问题描述】:

我尝试获取正确的 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),怎么办?

注意:我不希望(而且我不能,因为我使用的是 VPN)使用第三方网站来获取我的 IP

请帮忙!

--------编辑:-------------

注意:我从 VPN 使用,我的 VPN IP(例如)是:176.227.197.111。但是我的 WAN 的 IP 是:151.246.147.86,我想得到这个地址。

【问题讨论】:

  • 不能自己获取自己的外部IP。您必须向 Internet 上的服务器询问您的 IP。示例:将此 PHP 脚本添加到您的网络服务器 <?php echo $_SERVER["REMOTE_ADDR"]; ?>,以便您获得类似 this 的内容。现在您可以让您的应用程序获取该 URL 的内容。
  • 我的猜测:您使用的是路由器/调制解调器,因此 192.168.1.2 是您的“真实 IP”。您的调制解调器将位于同一(专用)网络上,其公共接口 (WAN) 将具有公共 IP。因此,您需要在调制解调器/路由器的公共接口上获取 IP。
  • @fnkr 实际上,如果路由器支持 UPnP 之类的东西,它可能是可能的。 Sara,你有哪种调制解调器/路由器?
  • 另外,另一种方法是跟踪路由已知的外部地址(谷歌?)第一跳将是您自己的路由器...
  • @fnkr : 好的,但是如果我从 VPN 使用我怎么能得到真正的 IP !!!!!! :|我不能!!!所以,我想找到我的真实IP,我该怎么做?

标签: c# ip-address


【解决方案1】:

您(可能)正在使用路由器/调制解调器,因此 192.168.1.2 是您的“真实 IP”。您的调制解调器/路由器将位于同一(专用)网络上,其公共接口 (WAN) 将具有公共 IP。因此,您需要在调制解调器/路由器的公共接口上获取 IP。

如何获取调制解调器的 WAN IP 取决于您的标记和型号;如果它支持 UPnP,你可能可以做到,或者如果它是企业级路由器,它也可能支持 SNMP ...... 您应该指定您的品牌和型号。

另一种不使用外部站点的方法:对已知站点(谷歌?)进行跟踪,第一跳将是您的路线。 此外,如果您在 VPN 上,您也许可以使用相同的技术。例如,如果您知道 VPN 上的另一台主机(可能是服务器?),您可以 ping/tracert 它并从那里发现您的路由器。我不知道在这种情况下您是否会获得所谓的“真实 IP”(顺便说一句,您首先是如何知道这个 IP 的?您可能能够以相同的方式以编程方式获得它) .

基于 VPN 方案的另一种解决方案:您可以使用 Windows 来帮助您。 Windows 有某种 VPN 管理 (RAS) 可以帮助您;我建议从here 开始了解基础知识,然后寻找可以帮助您的库/SDK(快速谷歌返回http://dotras.codeplex.com/)。

【讨论】:

  • 就个人而言,我真的很想知道路由器的品牌和型号。一开始是一个更简单的问题,现在似乎更面向“企业”(路由器、VPN ...)如果路由器是“严肃”的路由器(思科?)并支持它,我会选择 SNMP
【解决方案2】:

除非有某种方法可以查询您的路由器/调制解调器/最外部端点的 WAN 地址,否则您的要求是不可能的。您的计算机知道的唯一 IP 地址是它自己的(内部 IP)。

技术说明:IP 地址 192.168.1.2 没有任何非“真实”的信息 - 这您计算机的地址。它只是您给定的内部网络的本地网络,对外部的任何东西几乎没有用处。


如果你的路由器支持uPnP,你需要查询GetExternalIPAddress(起点Is there a UPnP Library for .NET (C# or VB.NET)?)。但是,由于 uPnP 被认为是危险的,并且许多具有安全意识的用户将其关闭,因此我不会指望它会被启用。

查询外部服务将是您获取外部 IP 的最可靠选择,无论是您编写的服务还是第三方服务(另请参阅 https://superuser.com/questions/420969/services-that-just-return-your-public-ip-as-text)。

【讨论】:

    【解决方案3】:

    有很多方法和教程教你如何找到IP地址,我用这个工具http://www.ipgp.net/显示任何IP地址的信息,只要在框中输入任何IP地址,你就会得到国家,城市、地区、ISP、街道地址和每次查询的卫星位置图。

    【讨论】:

      【解决方案4】:

      您想从您的计算机或服务器获取您的 IP 地址?这会带来很大的不同。如果您尝试从计算机/笔记本电脑获取 IP 地址,请使用 http://www.howtochangeipaddress.com。进入网站后,您的 IP 将立即出现在您面前。

      【讨论】:

        猜你喜欢
        • 2019-05-18
        • 2021-03-03
        • 2016-01-21
        • 2022-01-21
        • 2013-06-14
        • 2016-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多