Replies: 13 comments 2 replies
-
感谢大佬这些经验分享,本人目前处在从 |
Beta Was this translation helpful? Give feedback.
-
说得挺详细的,不错。 |
Beta Was this translation helpful? Give feedback.
-
大佬可否远程帮我设置一下,我的一直报错,按照你的截图设置了,也不行,电脑小白一个,很多实在不懂啊 |
Beta Was this translation helpful? Give feedback.
-
-----【自动回复】邮件已收到,将尽快阅读
|
Beta Was this translation helpful? Give feedback.
-
我也是小白,看了很有收获,但按照这番操作一遍后,还是会出现如下报错,不知道什么原因: |
Beta Was this translation helpful? Give feedback.
-
牛的 |
Beta Was this translation helpful? Give feedback.
-
-----【自动回复】邮件已收到,将尽快阅读
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
-----【自动回复】邮件已收到,将尽快阅读
|
Beta Was this translation helpful? Give feedback.
-
How to solve the problem that v2rayN shows unsupported regions when entering the website |
Beta Was this translation helpful? Give feedback.
-
-----【自动回复】邮件已收到,将尽快阅读
|
Beta Was this translation helpful? Give feedback.
-
大佬,能一起帮忙看看吗? |
Beta Was this translation helpful? Give feedback.
-
大佬,想请教一下,路由配置里面的network默认为空白,然后可以选择 空白 和 tcp 和 udp 以及 tcp,udp ,如果选择空白,有什么作用? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
一直以来,我在Windows电脑上浏览自由世界使用的就是v2rayN,感谢@2dust等一众大佬的无私奉献让我们得以开阔视野!
起初作为一个小白(现在也是,只是稍微对网路知识有点了解),都是拿来就用或者看别人教程使用,但也不求甚解,基本能用,但时不时有些问题,特别是tun模式(这也是我最看重的功能)有时会启动不成功,需要反复重启几次,或者成功后网络连接质量不稳定,特别是singbox内核更新到1.9.0以上后更突出,前几天我v2rayN6.45版更新singbox1.9.3内核后网络连接质量非常不稳定,yt开始能达到2万,但过一会就降为几百kps,即使重启有时也没有改善,排除节点质量问题后,我判定应该是软件设置问题,然后去singbox官网去恶补了一下相关知识,通过调整设置后网络稳定流畅了,然后v2rayN又更新了新的预发行版,优化了tun模式,我试用了一下,感觉比原来的模式更好,各个core更相容,xray的协议使用不受singbox的影响,比如gRPC传输模式使用注入singbox时只支持gun,改用现在的方式xray可以使用完整的协议。有鉴于与我有相同问题的朋友不少,在此将我的使用经验和设置方法共享与大家,供参考。
再次声明,本人非专业人士不懂代码,理解错误或不到位在所难免,请大佬们指正。
我的使用环境:
操作系统:Windows11专业工作站版(系统更新到最新,chrome和edge浏览器,系统自带杀毒无第三方杀毒或安全软件)
节点:自建节点,xray的vless协议,通过cdn
v2rayN的使用方式:开启tun,由singbox前置dns解析和路由,代理流量通过xray发出,设置方法基于这种模式进行
首先简单介绍一下v2rayN的流量处理流程(tun功能优化6.47版以上,实际使用建议更新到6.49及以上)
dns解析阶段:本地dns查询流量==>tun==>singbox,嗅探出dns协议,走“dns_out”,由相关进程处理dns查询,经过路由匹配判断,如果走直连则由进程向dns配置里tag为“local”的服务器如223.5.5.5发起查询,由于它的出站类型为“direct”,因此查询直接发出,得到结果后返回给客户端,如果路由匹配判断此域名需要走代理解析,向tag为“remote”的服务器如8.8.8.8发出查询请求,由于它的出站类型为“proxy”,因此流量进入tag为“proxy”的outbound,它采用socks协议,10808端口,本机的xray进程同样采用socks协议监听10808端口,因此查询流量进入xray,xray则根据配置的代理协议向远程服务器发起连接,得到结果后返回客户端。
普通连接阶段:客户端得到目标地址后发起连接请求,请求流量==>tun==>singbox,嗅探出连接协议,根据策略的设置不同,路由判断走直连还是代理,如果是直连则由进程直接发起连接,如果是代理,则通过socks向tag为“proxy”的outbound流出进入到xray,xray通过嗅探,根据策略设置的不同,路由判断直连还是代理(基本上是代理,singbox已经先分流了),如果是代理则直接向远程服务器发起连接,如果是直连则建立目标IP地址与客户端的连接,完成整个连接。
v2rayN的设置要点
v2rayN设置的地方其实并不多,实现上述流程,有几个地方需要注意:
singbox和xray对dns和路由的策略有些不同,所以重点在这些方面进行调整
1、v2rayN设置
在core基础设置里将开启流量探测打开并勾选前三项,RouteOnly建议勾选,由于singbox和xray采用的是转发模式,因此服务器应保持实际core类型,比如采用vless就要选xray,建议在服务器的设置里留空,在参数设置选与协议对应的core类型,一定要与服务器实际使用的保持一致。
更新:经讨论发现tun模式的开启依赖于srs文件,由于各种原因此srs一次下载成功率不高,当前解决办法是开启规则集的缓存,然后只要srs文件成功下载一次被缓存后以后就能正常开启tun(但应该不绝对,可能还有其它因素),还有这个设置有可能会更改,因为规则集缓存不是开启tun的必要条件,以后自己留意一下变化
另外注意:singbox的mux和xray的mux不兼容,除非你清楚怎么使用,否则不要启用,建议按图中设置
2、dns配置

v2rayN在每种类型的dns配置里都有相应的默认设置,要注意的是采用这种工作模式的话目前只有tun模式和v2ray的dns配置有效,singbox的http/socks的dns配置似乎没用上,默认配置基本上就可以了,要注意的是如果你想减少dns泄露,可将final改为remote,在rules里将remote提在local的前面,同时你想明确某些域名解析走local,比如自己的域名,将它列在这里,因为singbox的dns路由是在这里进行的,默认的dns设置只能满足基本需求,如果你有特殊要求,应在这里修改,而v2ray的dns解析会根据策略匹配路由规则,所以可以在路由规则部分进行设置,总之明白这一点后你可以自己折腾。
3、路由策略配置
首先是策略的选择,由于singbox和xray的路由策略和规则有些不同,在v2rayN的路由配置界面里有相应的选项,在这里要注意:singbox的策略选择留空或者根据需要进行IP解析,区别在于如果留空则singbox的入站将不进行解析IP进行路由,只根据域名进行路由,速度更快,但没那么精确,需要路由规则里补充,如果你不太清楚,建议选择解析,xray的路由策略建议选AsIs,重点!这里尽量不要选其它两项,这是因为流量首先进入singbox就会进行路由选择,它决定了流量的走向,xray就没必要再次判断路由了,选AsIs就让xray只根据域名路由,而且singbox发过来的IP连接也会根据IP策略进行路由匹配,不但速度更快而且与singbox更相适应,如果你选了另两个,特别是IPOndemand,不但多出额外的解析时间,而且如果xray的规则判断需要走直连,则它会向本地的dns服务器发出查询请求,这样又回到singbox了,如果路由规则配置不当,可能实际流向不符预期,浪费时间还存在潜在的隐患。
从这里可以看出来,要更好的相容性就尽量采用singbox的规则集,xray可以使用简单的路由即可,但因为不使用tun则系统退回到xray,这时xray的路由规则起作用了,所以自己明白是怎么回事就知道怎样设置了。
4、路由规则配置
默认的路由规则基本上就可以了,不过如果你有特殊需求,要注意规则的顺序,自定义的规则比如自己的域名或者已知的包括VPS域名等必须直连的,就把它提到最前,因为不用tun模式xray需要在这里根据域名进行路由和解析,至于其它的根据需要设置即可。
5、操作系统相关
首先一定要保证系统的干净和完整,干净就是尽量用原生系统,隔一段时间利用sfc等检查系统文件是否有损坏,驱动程序也保持更新,尽量用原生的杀毒软件,不建议用3xx等国内的系统,包括浏览器等都不要用,操作系统不要用魔改版或者精简版。
目前我的v2rayN经过一趟梳理后运行很不错,tun模式建立很顺利,网络连接质量也稳定流畅,另外由于各个软件都在更新,保持对应协议版本一致性也很重要,新老协议不匹配也是问题产生的重要因素。
希望以上的使用经验对你有用,错误之处请指正。
=========================以下更新v2rayN工作时通过debug日志了解系统工作流程,自查自纠===================
想了一下 ,上面描述的第5点我觉得反而是影响v2rayN正常工作的最大因素,因为v2rayN工作在单台电脑上,而Windows操作系统本身作为通用平台,兼容的软件实在是太多,因此稳定性也是比较欠缺的,每一个人电脑装的软件也是形形色色,其中也包括恶意软件等,还有系统工作久了本身已经不稳了等等,另外还有一个重要因素:单台电脑往往也是属于局域网设备,局域网的网络环境也至关重要。
有鉴于此,我觉得出现问题自查自纠非常重要,但像我等这样不懂代码没法通过分析代码来发现bug和完善代码,我们能做的就是先尽量自己查找原因,实在找不到原因,也能够比较清晰的反映问题给@2dust大佬们分析排查,这也可以节省大佬们的宝贵时间。
v2rayN的debug日志非常详细,只要花时间很多问题可以自己找到,至少可以发现大概问题卡在哪里,在这里,我结合我上述配置运行时的debug日志自己进行了分析整理,添加了一些自己的理解,如有不对,请大佬们指出!
特别说明,以下log顺序是我整理了的,去除了一些重复和不相干的内容,实际可能是乱的,你可以通过时间和【】里的ID号串起来
1、xray和singbox的启动
在双core模式下xray和singbox是各自启动的,而且log文件也是分别存储的,singbox的日志以sbox开头加上日期,xray的日志以Verror开头加上日期,我以下贴出来的log是合并了的,但也能区别出来
xray启动log:
2024/06/28 17:17:18 [Debug] app/log: Logger started
2024/06/28 17:17:18 [Info] app/dns: DNS: created UDP client initialized for 223.5.5.5:53 //初始化dns服务器,就是dns配置的内容,这里我只列一个出来//
2024/06/28 17:17:18 [Debug] app/router: MphDomainMatcher is enabled for 5 domain rule(s) //加载域名规则,就是路由配置里面的内容,也只列一个,后面相似的条目都只列一个,以节约版面//
//前面第3点dns配置里也提到xray路由规则问题,这里也可以看得出来//
2024/06/28 17:17:18 [Debug] app/proxyman/inbound: creating stream worker on 127.0.0.1:10888 //xray的入站端口//
2024/06/28 17:17:18 [Info] transport/internet/tcp: listening TCP on 127.0.0.1:10888 // 监听端口//
2024/06/28 17:17:18 [Info] transport/internet/tcp: listening TCP on 127.0.0.1:10893 //xray的自由门监听端口,singbox启动完成前它会接收请求数据,所以它如果接到请求,就会解析自身节点域名IP地址,下面的log可以看见//
2024/06/28 17:17:18 [Warning] core: Xray 1.8.16 started //xray启动完成//
singbox启动log:
+0800 2024-06-28 17:17:19 INFO router: updated default interface WLAN, index 24
+0800 2024-06-28 17:17:19 INFO clash-api: restful api listening at 127.0.0.1:10894
+0800 2024-06-28 17:17:20 INFO inbound/tun[tun-in]: started at singbox_tun
+0800 2024-06-28 17:17:20 INFO [75018264 0ms] inbound/tun[tun-in]: inbound packet connection from 172.19.0.1:55093 //这就是xray发过来的dns域名解析请求包//
+0800 2024-06-28 17:17:20 INFO [75018264 0ms] inbound/tun[tun-in]: inbound packet connection to 172.19.0.2:53 //向53端口查询//
+0800 2024-06-28 17:17:20 DEBUG [75018264 0ms] router: sniffed packet protocol: dns //嗅探出dns协议//
+0800 2024-06-28 17:17:20 DEBUG [75018264 0ms] router: match[0] protocol=dns => dns_out //应用dns路由规则//
+0800 2024-06-28 17:17:20 DEBUG dns: exchange VPS域名. IN A //查询VPS域名//
+0800 2024-06-28 17:17:20 DEBUG dns: match[0] domain=VPS域名 => local_local //匹配查询规则,这里可以看见查询VPS域名使用的服务器,这个服务器必须直连而且能够连通,否则VPS域名解析就会失败,如果你的xraylog里出现找不到主机之类的错误,就是因为这里没有解析到VPS地址//
//
+0800 2024-06-26 17:00:56 ERROR dns: exchange failed for VPS域名. IN A: context deadline exceeded //出现这个错误你后面的工作都没意义,必须先解决这个问题,而且后面会出现大量的其它dns解析失败的信息//
//
+0800 2024-06-28 17:17:20 INFO outbound/direct[direct]: outbound packet connection to 223.5.5.5:53 //向dns服务器发起连接//
+0800 2024-06-28 17:17:20 DEBUG dns: exchanged VPS域名 NOERROR 15
+0800 2024-06-28 17:17:20 INFO dns: exchanged VPS域名 A VPS域名. 15 IN A VPS的IP地址
+0800 2024-06-28 17:17:20 INFO dns: exchanged VPS域名 A VPS域名. 15 IN A VPS的IP地址 //最终解析出VPS地址//
//上面几段log信息非常重要,如果你的网络不通,可搜索类似信息,最终必须找到上面的信息,否则后面工作没法进行//
+0800 2024-06-28 17:17:20 INFO [101960756 0ms] inbound/tun[tun-in]: inbound packet connection from 172.19.0.1:54083 //另一个连接请求//
+0800 2024-06-28 17:17:20 INFO [101960756 0ms] inbound/tun[tun-in]: inbound packet connection to 172.19.0.2:53 //是dns查询包,所以向53端口连接 //
+0800 2024-06-28 17:17:20 DEBUG [101960756 0ms] router: sniffed packet protocol: dns //以下流程一样,最终判断是走代理//
+0800 2024-06-28 17:17:20 DEBUG [101960756 0ms] router: match[0] protocol=dns => dns_out
+0800 2024-06-28 17:17:20 DEBUG dns: exchange lh3.googleusercontent.com. IN A
+0800 2024-06-28 17:17:20 DEBUG dns: match[2] rule_set=geosite-geolocation-!cn => remote
+0800 2024-06-28 17:17:20 INFO outbound/socks[proxy]: outbound packet connection to 8.8.8.8:53
+0800 2024-06-28 17:17:20 INFO sing-box started (1.466s) //singbox启动完成,这里可以看见它比xray慢得多,估计因为tun的关系,如果没有这一个提示,应该tun模式会启动不成功,猜测可能跟前面VPS域名解析有关系,VPS域名解析成功后整个网络才会通畅,如果不通畅可能会关闭tun,这是猜测,可以自己验证一下//
+0800 2024-06-28 17:17:21 DEBUG dns: exchange lh3.googleusercontent.com. IN A
+0800 2024-06-28 17:17:21 DEBUG dns: match[2] rule_set=geosite-geolocation-!cn => remote //singbox将包发向远程,就是发给xray//
2024/06/28 17:17:20 [Info] [3157167029] proxy/socks: client UDP connection from udp:127.0.0.1:54084 //xray接收到上面的包//
2024/06/28 17:17:20 [Debug] [3157167029] proxy/socks: send packet to udp:8.8.8.8:53 with 43 bytes
2024/06/28 17:17:20 [Debug] [3157167029] transport/internet/udp: dispatch request to: udp:8.8.8.8:53
2024/06/28 17:17:20 [Info] transport/internet/udp: establishing new connection for udp:8.8.8.8:53
2024/06/28 17:17:20 [Info] [3157167029] app/dispatcher: taking detour [proxy] for [udp:8.8.8.8:53] //路由选择为代理//
2024/06/28 17:17:20 [Info] [3157167029] transport/internet/grpc: creating connection to tcp:VPS域名:443 //向远程服务器建立连接//
2024/06/28 17:17:20 [Debug] transport/internet/grpc: using gRPC multi mode service name:
VPS域名
stream name:TunMulti
2024/06/28 17:17:21 [Debug] [3157167029] proxy/socks: writing back UDP response with 88 bytes //得到解析结果//
以上为代理的dns查询过程,可以看见如果之前VPS域名没有解析出IP,这里是无法向外连接成功的,后面的所有连接都会失败
以上为v2rayN启动各组件的工作大致流程,篇幅所限不再叙述其它的,工作流程我在开篇时大概讲过,这里更直观清晰,通过理解整个流程对于我们排查故障很有帮助。
再次强调一点,电脑本身干净稳定至关重要,你安装的一些比较特别的软件,特别是网络密切相关的,记得将它的进程在路由规则里加入直连,否则后果未知,自行排查。
忘了提醒,如果tun模式启动不了,可以改一下监听端口试试,我的截图里就是改过的,因为默认监听端口在我家里的网络环境下启动tun有问题,改端口就解决了
Beta Was this translation helpful? Give feedback.
All reactions