【问题标题】:How is STUN able to bypass a proxy?STUN 如何绕过代理?
【发布时间】:2019-02-27 08:09:26
【问题描述】:

我编写了一个基本的代理服务器,它交换传入和传出流量的标头,以便代理客户端请求看起来好像来自服务器的公共 IP。至少在访问诸如whatismyip.com 之类的站点时是这种情况。但是,当我转到webRTC leak tests 时,会显示客户端机器的真实 IP。

我知道 WebRTC 使用的 STUN 协议旨在能够穿越防火墙、NAT 甚至代理;但是对于我已阅读的有关该主题的所有解释和文档,我似乎无法找到允许它绕过代理的协议的内容,我知道该代理不会泄露原始标头信息。

那么如何 STUN 能够获得它获得的信息?我听到的最好的猜测是它正在与浏览器通信以返回下一个最近的跃点。但这仍然只是一个猜测;有人能具体解释一下幕后到底发生了什么吗?

【问题讨论】:

    标签: proxy webrtc stun


    【解决方案1】:

    STUN 是通过 UDP 而不是 HTTP 运行的,如果您使用的“代理/vpn”无法阻止这种使用,则会泄露 IP。

    Chrome 有用于扩展的 API 来防止这种情况,但它表明大多数都没有。看 https://webrtchacks.com/so-your-vpn-is-leaking-because-of-webrtc/https://voidsec.com/vpn-leak/ 了解背景信息。

    【讨论】:

    • 为什么通过 UDP 而不是 HTTP 运行很重要?
    • Chrome 不会(默认)尝试通过 tcp 代理传递 UDP 流量。
    • 我不知道您所说的“幼稚”代理是什么意思。我使用 ServerSocket 在 Java 中编写了代理来侦听来自客户端的 SOCKS5 消息。然后它创建一个到服务器的全新 Socket 连接,将 SOCKS5 消息的主体复制到两个单独的连接中。它不转发 TCP/IP 或 UDP/IP 标头。从服务器的 POV 中,它只能看到来自代理的连接,其中 IP 标头的发件人地址是代理。 STUN 如何: 1. 能否绕过代理的发件人地址? - 和 - 2.不绕过路由器的地址?
    • @fernfern - STUN 只需忽略浏览器设置即可绕过代理地址。 Stun 客户端代码实际上只是创建一个套接字并像没有代理设置时那样发送。如果网络和防火墙环境限制流量显式通过代理,STUN 调用将失败。
    • @selbie - 谢谢,这是我需要的答案。如果您想将其作为实际答案而不是评论,那么我会将其标记为问题的已接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多