Closed Cwek closed 6 years ago
从log看的确是收到了一个tcp::53的请求。你能确定一下传入数据是UDP的吗?一个简单的方法是关闭shadowsocks的udp(udp:false
),然后看一下能不能产生类似的log。
裸连的情况,确认网络检测工具的DNS请求是UDP的。
我的想法,如果使用了ss的VPN模式,网络检测工具发出UDP的DNS请求,被ss的VPN服务收下,并负载在ss的链接上送出。ss应该是TCP连接,而且改造自socks5,socks5是可以在TCP上承载UDP报文的。
不太清楚,是ss承载这个UDP请求改了TCP,还是v2的ss收到这个请求后错误处理为TCP?
使用以下配置做了相关测试:
{
"log": {
"access" : "./access.log",
"error" : "./error.log",
"loglevel": "debug"
},
"inbound": {
"tag": "dns-in",
"port": 53,
"listen": "0.0.0.0",
"protocol": "dokodemo-door",
"allocate": {
"strategy": "always"
},
"settings": {
"address": "<上游DNS地址>",
"port": 53,
"network": "udp,tcp",
"timeout": 500,
"userLevel": 0,
"followRedirect": false
}
},
"inboundDetour": [
{
"tag": "shadowsocks-in",
"port": 8010,
"listen": "0.0.0.0",
"protocol": "shadowsocks",
"allocate": {
"strategy": "always"
},
"settings": {
"email": "*",
"method": "chacha20-ietf",
"password": "*",
"udp": false,
"level": 0
}
}
],
"outbound":
{
"tag": "direct3",
"protocol": "freedom",
"settings": {"domainStrategy": "UseIP"}
},
/*{
"tag": "blackhole",
"protocol": "blackhole",
"settings": {
}
},*/
"outboundDetour": [
{
"tag": "direct",
"protocol": "freedom",
"settings": {
}
},
{
"tag": "direct2",
"protocol": "freedom",
"settings": {
"domainStrategy": "UseIP"
,
"redirect": "<上游DNS地址>:53"
}
}
],
"routing": {
"strategy" : "rules",
"settings" : {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type" : "field",
//"outboundTag" : "direct"
"outboundTag" : "direct2"
//,"ip":["8.8.8.8"]
,"port": "53"
,"network": "tcp,udp"
,"inboundTag" :["shadowsocks-in"]
},
{
"type": "field",
"outboundTag": "direct",
"ip":[
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
]
}
]
}
}
}
ss-Android 客户端是4.5.0 证实了以下问题:
后话,用pdnsd代替dnsmasq接受ss的DNS请求,可能dnsmasq处理TCP的dnsmasq请求吃不消。
Please skip to the English section below if you don't write Chinese.
中文: 提交 Issue 之前请先阅读 Issue 指引,然后回答下面的问题,谢谢。 除非特殊情况,请完整填写所有问题。不按模板发的 issue 将直接被关闭。
1) 你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明) v3.11-arm 2) 你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。 使用Max Lv 的ss Android 4.4.6连接v2ray的ss时,将其DNS请求通过路由和freedom转发到同在ss一个服务器的dnsmasq上来做域名解释。 3) 你看到的不正常的现象是什么?(请描述具体现象,比如访问超时,TLS 证书错误等) ss连接后测试是表示可用的,但是访问域名站点时,v2是有日志记录,但dnsmasq日志没收到请求记录。使用一个网络检测工具直接做DNS请求,的确没收到。v2日志是提示TCP的请求。直接访问IP站点是没问题的。(后者已通过部分网站和telegram验证过) 4) 你期待看到的正确表现是怎样的? 正常通过freedom转发UDP流量。 5) 请附上你的配置(提交 Issue 前请隐藏服务器端IP地址)。
6) 请附上出错时软件输出的错误日志。在 Linux 中,日志通常在
/var/log/v2ray/error.log
文件中。7) 请附上访问日志。在 Linux 中,日志通常在
/var/log/v2ray/access.log
文件中。8) 其它相关的配置文件(如 Nginx)和相关日志。