Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

建议提供禁止ipv6 dns查询的设置 #297

Closed
zjudongze opened this issue Oct 10, 2020 · 9 comments · Fixed by #794
Closed

建议提供禁止ipv6 dns查询的设置 #297

zjudongze opened this issue Oct 10, 2020 · 9 comments · Fixed by #794

Comments

@zjudongze
Copy link

除非特殊情况,请完整填写所有问题。不按模板发的 issue 将直接被关闭。
如果你遇到的问题不是 V2Ray 的 bug,比如你不清楚要如何配置,请使用Discussion进行讨论。

  1. 你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明)
    4.30

  2. 你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。
    chrome访问www.google.com

  3. 你看到的不正常的现象是什么?(请描述具体现象,比如访问超时,TLS 证书错误等)
    偶现:www.google.com打不开;这时候使用手机等其他工具,使用同一个服务器都打不开google;但是同一时刻,可以打开其他任何网站

  4. 你期待看到的正确表现是怎样的?
    能打开google

  5. 请附上你的配置(提交 Issue 前请隐藏服务器端IP地址)。

服务器端配置:

    // 在这里附上服务器端配置文件

客户端配置:

    // 在这里附上客户端配置
  1. 请附上出错时软件输出的错误日志。在 Linux 中,日志通常在 /var/log/v2ray/error.log 文件中。

服务器端错误日志:

2020/10/10 16:28:12 [Debug] v2ray.com/core/app/dns: UDP:8.8.8.8:53 cache HIT www.google.com -> [2404:6800:4004:806::2004]
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/app/dispatcher: default route for tcp:www.google.com:443
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/proxy/freedom: opening connection to tcp:www.google.com:443
2020/10/10 16:28:12 [Debug] v2ray.com/core/app/dns: UDP:8.8.8.8:53 cache HIT www.google.com -> [2404:6800:4004:806::2004]
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/proxy/freedom: dialing to to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:12 [Debug] v2ray.com/core/app/dns: UDP:8.8.8.8:53 cache HIT www.google.com -> [2404:6800:4004:806::2004]
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/proxy/freedom: dialing to to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:12 [Debug] v2ray.com/core/app/dns: UDP:8.8.8.8:53 cache HIT www.google.com -> [2404:6800:4004:806::2004]
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/proxy/freedom: dialing to to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:12 [Debug] v2ray.com/core/app/dns: UDP:8.8.8.8:53 cache HIT www.google.com -> [2404:6800:4004:806::2004]
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/proxy/freedom: dialing to to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:12 [Info] [3509646880] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:13 [Debug] v2ray.com/core/app/dns: UDP:8.8.8.8:53 cache HIT www.google.com -> [2404:6800:4004:806::2004]
2020/10/10 16:28:13 [Info] [3509646880] v2ray.com/core/proxy/freedom: dialing to to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:13 [Info] [3509646880] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:[2404:6800:4004:806::2004]:443
2020/10/10 16:28:13 [Info] [3509646880] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: failed to open connection to tcp:www.google.com:443 > v2ray.com/core/common/retry: [dial tcp [2404:6800:4004:806::2004]:443: connect: cannot assign requested address] > v2ray.com/core/common/retry: all retry attempts failed

客户端错误日志:

    // 在这里附上客户端日志
  1. 请附上访问日志。在 Linux 中,日志通常在 /var/log/v2ray/access.log 文件中。
    // 在这里附上服务器端日志
  1. 其它相关的配置文件(如 Nginx)和相关日志。

  2. 如果 V2Ray 无法启动,请附上 --test 输出。

通常的命令为 /usr/bin/v2ray/v2ray --test --config /etc/v2ray/config.json。请按实际情况修改。

  1. 如果 V2Ray 服务运行不正常,请附上 journal 日志。

通常的命令为 journalctl -u v2ray

请预览一下你填的内容再提交。

ps:

  1. www.google.com dns ipv4和ipv6记录都有;
  2. 服务器只有ipv4地址,没有ipv6网络
  3. 目前v2ray 会同时查询type A和type AAAA的dns记录; 在某些特殊的情况下(不是很确定,猜测dns type A查询结果由于丢包没有到达),导致v2ray内置dns缓存中只有type AAAA的记录,而服务器又只有ipv4网络,导致打不开google

解决方法:在只有ipv4的服务器上,自动配置成只查询type A ipv4地址;
或者提供配置,可以禁止查询ipv6地址;
比如
{
"address": "8.8.8.8",
"type": "A" or "AAAA" or "default = both"

}

@Loyalsoldier
Copy link
Contributor

#169 (comment)

@LearZhou
Copy link

有一个问题,有一些域名只有ipv6地址解析,若dns不返回这个值,将解读为解析失败,可能会有一系列后果(不必要的dns继续解析,路由规则批评问题等)。

建议一个设置,若dns有A,则仅返回ipv4地址,若没有A,但有AAAA,那么返回AAAA地址。

一个应用场景是:v2ray服务器端仅有ipv4支持,那么出口规则可以设置ban掉返回ipv6的域名。

@lucifer9
Copy link
Member

https://github.com/golang/go/blob/c8fdfa756ead0a48b0227f6cec02641797124a92/src/net/dial.go#L61
按说应该只有 300ms 的延迟啊,如果ipv6不可用的话

@k79e
Copy link

k79e commented Oct 24, 2020

地址的连接是系统级的 系统优先用什么类型的地址他就用什么去连接
但是系统自己会不会并行查询没注意过.

v2ray你如果用内置dns 不是暴露任意门 目前他bug很大 是多此一举浪费时间而且无效的查询.
那个记录不会被发起连接的过程给使用上

我回复的好像跑题了 不过服务端可以指定优先使用v4的
https://www.v2fly.org/config/protocols/freedom.html#outboundconfigurationobject

@k79e
Copy link

k79e commented Oct 24, 2020

偶现:www.google.com打不开;这时候使用手机等其他工具,使用同一个服务器都打不开google;但是同一时刻,可以打开其他任何网站

我以前见到好多次这个情况 是其他的服务端.

@Janet-Baker
Copy link

DNS 只负责返回解析结果,具体访问哪个服务器是由你的客户端设备决定的。
想要指定访问哪个服务器应该在客户端上设置,而不是在服务端处理。
真的不想用ipv6的话,可以考虑一下把客户端操作系统的IPv6关掉。

@Lostsite
Copy link

很显然,我认为这是DNS查询时,返回IPv6地址后,你的电脑从中国的IPv6地址进行访问(而不是v2ray服务器中的IPv4地址)进行访问的结果。

解决办法:进入路由器后台关闭IPv6, 或:

Windows控制面板 ---> 网络和Internet ---> 更改适配器选项 ---> 找到目前活动的链接 ---> 右键点击,选择属性 ---> 把internet协议版本6 前面的勾去掉并保存。

@tsanie
Copy link

tsanie commented Jan 26, 2021

“关闭客户端IPv6支持”忽略了一种使用场景,客户端需要开启IPv6来保证公网的可访问性(目前很多地区无法获取公网IPv4地址),但是又不想通过IPv6访问网页、游戏客户端连接等等(例如其IPv4线路比IPv6线路快)。

这种情况下自然希望dns server只返回IPv4地址。

@Loyalsoldier
Copy link
Contributor

Fixed in #794

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants