当计算机连接到 *** 时,有没有办法检测计算机的真实外部 IP?

Posted

技术标签:

【中文标题】当计算机连接到 *** 时,有没有办法检测计算机的真实外部 IP?【英文标题】:Is there a way to detect a computer's true external IP when they are connected to a ***? 【发布时间】:2012-08-04 16:03:45 【问题描述】:

使用 .NET,如果 PC 连接到 *** 并使用 *** 作为 Internet 网关,是否有办法检索 PC 的外部 IP?我的最终目标是检测客户端 PC 是真正在网络上还是在远程位置。

编辑:在阅读了其中一些答案后,我应该更具体一点。我想我正在寻找的是一种绕过 *** 以检查笔记本电脑真实外部 IP 的编程方式。这可能吗?

【问题讨论】:

据我所知,测试 IP 只会发现它“绑定”到网络;因为它们是通过 *** 连接的(这就是重点)。在没有实际修改 *** 客户端的情况下,我不知道这是否可能。您可以测试以查看它们是否通过 *** 连接进行连接,但查看 IP 只会看到当前的网络连接。 您是要在客户端还是服务器上检测到这一点? 在客户端。客户端将其相关信息发送到服务器进行处理 为什么需要外部 IP 来确定这一点?我只是枚举客户端“向上”网络接口上的地址,看看是否有一个内部 IP 和外部 IP 在您的网络的内部 IP 范围内。例如,我在笔记本电脑上使用 ***,但我可以通过检查我的 WiFi 适配器是否与 192.168.0.x 的内部 IP 地址连接来确定我是否在我的家庭网络中。 【参考方案1】:

另外,如果您在客户端,您可以在 Windows 上运行 ROUTE PRINT 并解析搜索 *** 特定条目的输出。尝试在连接到 *** 和直接连接时运行该命令并找出差异。除了物理适配器,您还应该看到一个 *** 适配器和所有通过它的外部路由。如果您想绕过 *** 以获取外部 IP,您可能会通过访问外部服务器来实现,您必须通过以太网适配器添加到该服务器的路由。但是我使用了阻止它的 *** 客户端,这意味着所有流量都必须通过 ***,所以这可能不适合你。

【讨论】:

【参考方案2】:

我不这么认为。但是,您可以通过检查您获得的 IP 是否已被大量使用或已知托管 *** 服务器(您可以有一个列表)来检测客户端是否来自 ***。

【讨论】:

【参考方案3】:

最简单的方法是分配一个特定于 *** 的 IP 范围,然后测试内部 IP 是否在该范围内。

【讨论】:

可以使用本地连接“在 *** 上”。例如,笔记本电脑可能总是使用 ***,无论它们是否真的“在建筑物内”。取决于事情是如何设置的。 这取决于问题的目的是什么。如果出于安全原因,笔记本电脑可能在大楼内,但通过公共 wi-fi 连接通过 *** 连接,应被视为“远程”。 @EricJ。始终连接到 *** 的笔记本电脑,无论是否在建筑物中,都是非常糟糕的做法,这一点不言而喻。专门为 *** 分配 IP 范围的想法是这里更好的选择之一;无需修改 *** 客户端本身,并在连接中添加某种令牌。我会假设 *** 无论如何都会使用一组不同的“密钥”,并且该加密连接应该是可发现的。 @plast1K:当然这是不好的做法。但它有时会发生。【参考方案4】:

您无法直接检测到“真实”IP,但您可以通过查看特定于您的网络拓扑的因素来推断它们是否在网络上。

例如,本地网络上的计算机的 ping 时间将与外部计算机的 ping 时间大不相同。这不是 100% 完美的,但应该给你一个非常可靠的指标。

路由也可能不同(traceroute 是否为本地网络上的设备和远程设备显示不同的路由?)

【讨论】:

【参考方案5】:

如果您是服务器,例如 HTTP 服务器,则不能,因为 *** 的主要目的之一是提供匿名性。机器通过***上网,所以除非客户端绕过***并将真实IP地址发送给你,否则你不能。

【讨论】:

我想我正在寻找的是一种绕过 *** 并在未连接到 *** 时使用配置为正常网络使用的网关的技术。这可能吗? 除非您对目标计算机具有物理或完全远程访问权限,否则没有。【参考方案6】:

通常当您连接到 *** 时,您的子网 ip 与物理连接时的子网不同,但如果不是这种情况,您可以尝试运行 tracert 并获取响应,如果管理 *** 的防火墙与提供网络连接的路由器不同,你就知道了,只解析响应。

另一种方法是使用 ip 获取适配器的名称,如果是您获得的 *** 适配器。

【讨论】:

以上是关于当计算机连接到 *** 时,有没有办法检测计算机的真实外部 IP?的主要内容,如果未能解决你的问题,请参考以下文章

当多个用户连接到数据库时,VB6 数据库操作变慢

如何检测特定设备的存在

Win10更改家庭组设置提示此计算机无法连接到家庭组的应对办法

客户端只能在同一台计算机上连接到服务器

将VM客户端连接到我的计算机C#上的服务器

远程计算机无法连接到 Visual Studio Web 服务器