【进阶•UDP穿透篇】搭建游戏节点必看的UDP代理知识!原生UDP和UoT的区别,P2P联机UDP打洞,实现游戏最佳的fullcone,解决WebRTC泄漏,为什么QUIC会导致youtube降速? 您所在的位置:网站首页 n2n内网穿透安卓版 【进阶•UDP穿透篇】搭建游戏节点必看的UDP代理知识!原生UDP和UoT的区别,P2P联机UDP打洞,实现游戏最佳的fullcone,解决WebRTC泄漏,为什么QUIC会导致youtube降速?

【进阶•UDP穿透篇】搭建游戏节点必看的UDP代理知识!原生UDP和UoT的区别,P2P联机UDP打洞,实现游戏最佳的fullcone,解决WebRTC泄漏,为什么QUIC会导致youtube降速?

#【进阶•UDP穿透篇】搭建游戏节点必看的UDP代理知识!原生UDP和UoT的区别,P2P联机UDP打洞,实现游戏最佳的fullcone,解决WebRTC泄漏,为什么QUIC会导致youtube降速?| 来源: 网络整理| 查看: 265

WebRTC泄露测试:https://browserleaks.com/webrtcNAT类型测试工具:https://github.com/HMBSbige/NatTypeTester=====游戏必备稳定高速精品VPS线路=====美国GIA:http://us.bulianglin.com香港GIA:http://hk.bulianglin.com日本GIA:http://jp.bulianglin.com

视频教程

视频地址:https://youtu.be/GQg5JIQIjgk

在DNS泄露那期视频的最后我们简单的了解了一下WebRTC会泄露你的真实IP通过浏览器插件禁用WebRTC来阻止泄露上次没有跟大家说明为什么会有WebRTC泄露是因为和今天要讲的UDP有关如果是无法安装插件的手机端该如何阻止WebRTC泄漏什么是原生UDP什么又是UoT代理UDP的一个最主要的应用场景就是玩国际服的游戏那么对于玩游戏而言使用原生UDP好还是使用UoT好P2P联机的fullcone是个啥QUIC又是个啥本期就来给大家解答UDP在代理中的各种疑惑UDP和TCP同属传输层可以说是两个特性完全相反的传输协议由于我们并不是讲网络课程所以没必要细究我们只需要知道TCP是可靠传输也就是你发出去的数据对方一定能收到如果丢失了也会想办法补发并且发送数据前要先进行3次握手建立连接最常见的就是我们上网使用的HTTP协议而UDP是不可靠的传输对方不一定能收到数据包丢了就丢了也不用握手建立连接直接就能开始发送数据最常见的应用就是要求响应速度快的DNS以及对丢包不敏感的音视频通话还有对延迟敏感的即时对战网络游戏接下来就来详细探讨一下UDP在代理中的行为先来回顾上节内容创建一个最常见的家庭网络环境你在运营商拉了一条宽带他会给你分配一个光猫一般来讲你会单独再买一个路由器连接光猫路由器通过PPPOE拨号获取运营商分配的公网IP同时路由器作为局域网的网关会有自己的内网IP家里的所有网络设备都会连接到这台路由器路由器通过DHCP为每一台网络设备分配一个内网IP以及默认网关DNS等信息一般情况下默认网关和DNS服务器都是路由器这是最常见的家庭网络拓扑以之前讲过的系统代理为例你在电脑上运行了V2rayN或者clash for windows此时浏览器访问检测IP的网站由于设置了系统代理请求数据会交给clashclash将数据使用你的SS或者Vmess配置进行加密然后发给节点服务器处理详细流程前面已经都讲过了这里就不再啰嗦了最终clash会收到节点服务器返回的数据经过解密后将数据返回给浏览器通过浏览器的渲染将网页呈现在我们的面前由于是节点服务器帮我们访问的所以查询到的ip地址是香港的IP这个流程相信大家都已经很清楚了接下来访问检测WebRTC泄露的网站流程和刚才查询IP是一样的但是和预期的结果不一样网页中返回了真实的国内IP而不是节点的香港IP并且我已经将Clash设置为全局模式了却还是暴露了国内IP这到底是怎么回事其实我们在打开一个网页的时候并不是只发起一个HTTP请求通过F12我们可以调出浏览器的开发者面板可以看到打开一个普通的网页会发起几十甚至上百个HTTP请求以加载不同的资源比如js代码 网页图片等信息而这个网页比较特殊他要检测WebRTC泄漏所以会发起一条stun请求以建立WebRTC连接而stun协议一般情况下使用UDP传输所以浏览器发起了一条UDP的请求但是系统代理一般是HTTP代理HTTP代理是不支持代理UDP数据的所以这条UDP的请求没有交给clash也就是说即使clash开启了全局模式但是这条请求压根就没有交给clash而是通过直连发起的在开发者面板中看不到WebRTC的请求可以通过抓包工具wireshark查看开启抓包后刷新网页试试可以看到这是一条UDP请求的stun数据stun主要用于协助P2P打洞它会把你的公网IP返回给你因为走的是直连所以得到了你国内的公网ip地址这就是导致WebRTC泄露真实IP的原因UDP的流量根本就没有走代理有些朋友可能知道socks5协议支持代理UDP如果我通过浏览器插件switchOmega将浏览器的代理配置为clash监听的socks5能防止WebRTC泄露吗答案是并不可以虽然socks5支持代理UDP插件中配置的也确实是socks5代理但是浏览器不支持将UDP流量交给socks5代理Chrome FirefoxEdge Safari这些主流的浏览器都不支持所以即使你给浏览器配置的是支持代理UDP数据的socks5代理但UDP的请求还是走直连则还是存在泄露所以如果是使用系统代理的方式不管是HTTP代理还是socks5代理都无法解决这个问题只能通过之前讲的使用插件禁用浏览器的WebRTC功能而如果你使用的是透明代理比如使用软路由或者Tun模式接管系统全局流量又是另一种情况了浏览器没有设置系统代理不过即使有设置系统代理根据刚才讲的UDP的请求也不会走系统代理而是直接发出由于开启了Tun模式stun的数据会被路由到clash的虚拟网卡这里不理解的话可以回看代理篇clash根据分流规则选择代理这条UDP请求于是使用你配置的节点信息将数据加密假设使用SS节点数据加密后由clash通过UDP协议将数据发送给节点服务器节点服务器收到数据后进行解密再帮我们访问stun服务器stun服务器收到的数据将是节点服务器的公网IP这样就解决了WebRTC泄露的问题其实就是让UDP流量走代理而已所以这个页面也可以用来判断你的节点是否启用了UDP代理假设我现在关闭clash的系统代理启用Tun模式接管系统全局流量此时我再重新访问测试网站页面正常情况下列表里会显示节点服务器的IP但是我这里是不正常的情况还是显示了我国内的IP说明我的UDP数据没有走代理此时需要在log面板中查看日志来排查这个问题过滤UDP的请求可以看到访问stun服务器提示没有匹配任何规则于是走了直连这个提示有迷惑性其实并不是没有匹配规则而是节点没有开启UDP代理功能可以看到当前选中的香港1节点和其他节点的区别在于没有UDP的标识意思是没有开启UDP代理可以通过编辑订阅文件来启用将UDP的false改成true保存后就能看到节点的UDP标识了回到log面板此时刷新页面可以看到列表中已经变成香港的IP了并且日志中也可以看到stun服务器的请求交给了香港1的节点处理这样就解决了WebRTC泄漏的问题了这里要再补充一点如果你在没有禁用WebRTC的情况下检测结果为n/a没有返回公网IP大概率是节点服务器关闭了UDP代理比如我用这个香港2的socks5节点我在本地开启了UDP代理可以看到这个UDP标识也就是说clash会把UDP的数据交给这个节点此时再来访问测试网址可以看到直接返回了n/a没有检测到公网IP因为这个节点关闭了UDP代理收到UDP数据后并不会帮你访问而是直接丢弃可以在日志中看到我的UDP数据确实是交给了香港2的节点而我这个香港2的socks5节点其实是用V2rayN开启的可以看到V2rayN收到clash的UDP请求后提示UDP没有启用直接reject丢弃可以在参数设置中将开启UDP选项勾选此时clash发过来的UDP数据就能被正常代理了可以看到测试网站也正常的返回了节点IP所以要成功代理UDP数据除了本地的代理工具要开启UDP代理节点服务器也要支持代理UDP才行大家可以通过这个测试页面来判断你的UDP数据是否能被正常代理有些代理工具默认不代理UDP数据需要手动开启比如iOS的小火箭需要开启UDP转发才能正常代理UDP数据否则UDP数据会走直连另外可以看到小火箭的SS节点有个UDP over TCP的功能选项这个是干嘛的我们刚才演示的是SS节点和socks5节点代理UDP数据的情况clash加密UDP数据后会直接通过UDP将数据发送给节点服务器这种叫原生UDP而我们平时使用的vmess vless trojan默认都是UDP over TCP简称UoT顾名思义就是在TCP中传输UDP以Vmess为例浏览器的UDP请求通过虚拟网卡交给了clashclash拿到数据后使用Vmess协议进行加密Vmess会标识里面的是UDP的数据然后将Vmess的数据使用TCP进行封装再发给节点服务器节点服务器收到TCP的数据后进行解密得到了浏览器的UDP请求于是帮我们使用UDP协议访问目标服务器这种行为就是UoT另外我们之前在节点搭建系列讲过Vmess可以交给不同的底层传输协议进行传输比如基于UDP的KCP协议或者QUIC协议虽然最后是通过UDP将Vmess交给节点服务器但这种行为并不是原生UDP数据被封装在KCP或者QUIC里他们并没有原生UDP的那些特性比如不可靠传输所以目前代理UDP的方式主要分为两种一种是socks5和SS的原生UDP另一种是vmess vless trojan等协议使用的UoT而小火箭给SS协议的节点提供了UoT的功能也就是不用原生UDP了改成UoTxray和sing-box也有这样的功能这个功能是开发sing-box的大佬写的为什么要这么做原生UDP不好吗在某些情况下确实不好比如你的节点线路很烂使用原生UDP的话会被运营商疯狂的QoS因为UDP不像TCP那样有拥塞控制机制TCP在链路拥堵的情况下会主动降低发送速率UDP可不管这些你想发多快都可以比如我们熟知的歇斯底里可以通过参数调整发送速率所以运营商一般都不待见会针对UDP做QoS线路好的话还没问题线路差的话一拥堵就优先把UDP干掉导致疯狂丢包所以原生UDP不适合线路差的VPS另一方面是出于安全考虑假设SS加了tls的plugin插件UDP的数据并没有被特殊处理还是按原生UDP的方式发送出于以上原因给SS节点加上了UoT的功能如果要开启这个功能的话服务端的节点搭建需要使用指定的内核不过UoT的缺点也很明显相当于UDP完全变成了TCP的行为传输数据前需要先经过3次握手建立连接中途出现了丢包需要重新补发不适合对延迟敏感的使用场景比如即时对战类的游戏如果你的线路好不会频繁丢包的话UoT和原生UDP的差距也就没那么大总结就是如果你对延迟和丢包很敏感那就要买好的线路这样的话用原生UDP或者UoT都可以如果线路差觉得UDP能用就行那最好是用UoT还能套CDN如果说线路很差又对UDP有要求底层传输可以使用KCP或者udpspeeder这种有加速效果的协议其本质是通过调整发包速率配合冗余发包来降低延迟和丢包很容易被运营商QoS可以配合fakeTCP将UDP伪装成TCP的流量欺骗运营商但是国道再怎么加塞还是解决不了拥堵的事实真正要有良好的游戏体验还是直接上高速公路吧对游戏党而言直接购买游戏加速器是一个不错的选择如果你有自己搭建的需求选择一条好的线路很关键比如CN2 GIA这是个人用户能买到的最好线路了价格也很贵不过自己搭建的话没有使用人数上限更适合与朋友合租一起分摊我会将搬瓦工的美国 日本 香港CN2 GIA线路的VPS购买链接放在视频下方的说明栏有需要的朋友可以进去看看这是参考价格他家支持购买后30天内不满意可以申请全额退款另外再补充一点直接使用socks5代理并不一定会被封只有当你访问黑名单网站才会被阻断所以如果你真的需要使用节点打游戏直接使用x-ui搭建一个socks5代理专门用来打游戏并且一定要确保不会用这个节点访问黑名单网站相当于和防火墙玩明牌每个数据包中都充满了善意我这有个朋友用站群服务器搭建了200多个socks5节点他就只用来代理游戏至于你搭建会不会被封我不敢给大家保证请自行测试也欢迎大家在评论区反馈而对于游戏而言又不得不提到P2P联机本来这个也要很大篇幅才能讲明白本期由于时间关系没有办法详细探讨UDP的各种穿透行为只能简单的给大家讲一下以后有机会再细说目前游戏的通讯种类主要分为中心服务器和P2P联机通过UDP传输我们平时玩的网游基本都是中心服务器玩家直接连接中心服务器进行通信只要UDP能通就能玩没什么好说的而P2P连接是peer to peer的点对点通信不经过中心服务器也就是玩家之间直接相互传输数据PS switch Xbox等平台的主机游戏用这种方式比较多还有BT下载也是用这种方式要想实现P2P通信玩家之间需要先知道对方的公网IP这里就需要使用我们一开始提到的stun服务器它是协助玩家之间进行UDP穿透的也叫UDP打洞更宽泛的叫法是NAT穿透不过NAT穿透也包括了TCP穿透所以还是叫UDP穿透更严谨一点WebRTC也是点对点通信所以用到了stun服务器这个系列我每次开头都说创建一个最常见的家庭网络环境但其实并不是最常见的因为大部分用户通过PPPoE拨号获取到的并不是公网IP而是运营商分配的内网IP俗称大内网而访问互联网肯定不能通过内网IP访问所以需要通过NAT转换为公网IP关于NAT转换我在节点搭建系列第一节详细介绍过了负责拨号的路由器会进行一次NAT转换如果拨号获取到的是公网IP就可以通过修改路由器NAT的映射行为和过滤行为实现fullcone也叫全锥(完全锥形)在游戏中叫做NAT开放 或者NAT1 或者NAT A这种对于P2P而言是最容易实现UDP打洞的从而匹配到更多的游戏玩家遗憾的是由于IPV4地址的枯竭很多人家里都没有公网IP拨号获取到的是运营商分配的内网IP运营商收到你的数据后还要给你做一次NAT将其转换为公网IP你无法修改运营商路由器的NAT行为而运营商的NAT行为一般是最严格的对称NAT很难打洞成功一般是通过UDP中继来解决而对于我们而言天然的就有了一台UDP中继服务器也就是我们的节点服务器由于节点服务器拥有公网IP要实现fullcone很容易我们只需要把UDP数据交给节点代理即可通过客户端和服务端的配合实现fullcone目前fullcone支持最好的是xray内核所有支持UDP入站的协议都能实现fullcone其实sing-box内核支持的更全但是周边的配套设施还没有跟上上手的话比较困难感兴趣的朋友可以自行研究服务端可以使用基于xray内核的x-ui搭建 就按正常的流程搭建即可由于fullcone的特性其他玩家需要能直接访问到你的端口xray在中继UDP的时候会随机选择一个高位端口进行对外访问所以VPS需要开放1024-65535的UDP端口你也可以直接把防火墙关了估计也没啥重要的东西这些基本的操作就不演示了以前都讲过网上也有很多教程客户端也建议使用xray因为vmess和vless的fullcone在xray中是通过XUDP实现的如果客户端不是使用xrayvmess和vless可能无法实现fullcone可以通过NATtypetester这个工具来检测你当前的NAT类型下载地址我会放在视频下方的说明栏切换到rfc3489的标准先来测试没有任何代理我本地网络的NAT行为可以看到类型为symmetric也就是对称NAT这是最严格的NAT类型P2P基本通不了这里显示了我对外访问的公网IP你可以在路由器的PPPOE拨号界面查看运营商给你分配的IP如果和这里检测出来的IP不同说明你家没有公网IP我这里也没有所以需要通过UDP中继来解决开启Clash的Tun模式让其接管系统的全局流量先过滤UDP的日志此时再来进行测试日志显示走直连了并且NAT类型变成了UDPblocked说明UDP没通不过直连的话应该和刚才测试的结果一样是对称NAT有时网络不稳定需要多试几次可以看到香港1的节点没有UDP的标识说明没有开启UDP代理所以走了直连切换到台湾节点再来测试一下可以看到还是显示直连的公网IP说明没有走代理因为刚才的UDP连接还没有断开进入connections面板点击close all关闭所有连接回到UDP日志再来测试可以看到返回了fullcone数据交给了台湾节点公网IP也变成了节点的IP再来测试一下vmess节点记得要先断开UDP连接可以看到发给了美国的vmess节点和刚才一样显示UDPblocked可以多测试几次如果你测试很多次都不行的话可能是节点服务器没有开启UDP代理经过多次测试可以看到这个节点不支持fullcone也可能是客户端的问题换成v2rayN试试v2rayN当前选中的是同一个美国节点由于我这个版本的v2rayN没有Tun功能可以给测试软件添加一个socks5代理端口填写V2rayN监听的10808再来测试一下记得要把clash的Tun模式关掉不然就成了链式代理了重新测试可以看到和clash一样提示不支持因为现在我们并没有使用xray内核而是v2ray的内核双击编辑节点把这个节点的内核改成xray之后这个节点就会使用xray内核了此时再来测试可以看到实现了fullcone切换到trojan再试试节点如果不稳定的话需要多测试几次才有正确的结果如果将这个trojan节点改成v2ray内核再来测试就会变成对称NAT我当前使用的v2ray版本是4.44v2ray5.0以下的版本是不支持fullcone的xray的话使用1.3以上的版本即可这就是关于P2P联机实现fullcone的方法最后还有一个比较隐蔽的问题单独拎出来再说说目前主流的浏览器都支持HTTP 3很多网站也开启了HTTP3访问比如YouTube BilibiliHTTP3基于QUIC协议而QUIC是基于UDP的在没有配置代理的情况下我们第一次访问Bilibili的时候会使用基于TCP的HTTP2发起访问Bilibili返回网页的同时告诉浏览器网站支持HTTP3可以使用HTTP3访问于是第二次访问浏览器就会发起HTTP3的请求也就是基于UDP的QUIC协议如果浏览器配置了系统代理此时再访问Bilibili刚开始我们也讲过浏览器不会代理UDP的请求当浏览器配置了系统代理会直接关闭QUIC功能转而使用基于TCP的HTTP2访问网站但是开启透明代理后就不一样了浏览器没有配置系统代理clash使用Tun模式接管系统全局流量访问YouTube会使用基于UDP的QUIC协议数据被路由到clash在DNS分流篇中我们讲过clash目前处理UDP域名的行为是redir-host的模式会发起DNS请求获取真实的ip地址如果使用了明文DNS请求则不仅存在DNS泄露还会存在DNS污染如果节点服务器没有开启上期v2ray中讲的流量嗅探功能由于IP被污染了会出现无法访问的情况即使开起来流量嗅探可以正常访问但是QUIC使用的是UDP如果你的线路不好使用SS的原生UDP会卡到怀疑人生而使用vmess这种UoT传输quic也会对性能有极大的影响掉速严重目前普遍的做法是在DNS分流篇中讲的直接禁用浏览器的QUIC功能或者屏蔽掉443端口的UDP数据等同于屏蔽了QUIC协议会回退到HTTP2访问不过屏蔽端口的方式还是会先发起DNS请求导致DNS泄露所以还是建议直接通过禁用浏览器的QUIC功能解决也可以不用透明代理模式直接使用系统代理



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有