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

1.8.6更新后wireguard出站异常,回滚到1.8.4正常 #2736

Closed
toyo2333 opened this issue Nov 18, 2023 · 36 comments
Closed

1.8.6更新后wireguard出站异常,回滚到1.8.4正常 #2736

toyo2333 opened this issue Nov 18, 2023 · 36 comments

Comments

@toyo2333
Copy link

服务的xray配置了openai相关的域名分流到xray的wireguard出站。

路由规则如下:

{
                "type":"field",
                "outboundTag":"warp-IPv6",
                "domain":[
                    "domain:test-ipv6.com",
                    "domain:ai.com",
                    "domain:auth0.com",
                    "domain:challenges.cloudflare.com",
                    "domain:client-api.arkoselabs.com",
                    "domain:events.statsigapi.net",
                    "domain:featuregates.org",
                    "domain:identrust.com",
                    "domain:intercom.io",
                    "domain:intercomcdn.com",
                    "domain:openai.com",
                    "domain:openaiapi-site.azureedge.net",
                    "domain:sentry.io",
                    "domain:stripe.com",
                    "domain:oaistatic.com",
                    "domain:oaiusercontent.com"
                ]
            }

出站配置如下:

        {
            "protocol": "freedom",
            "settings": {
                "domainStrategy": "UseIPv6"
            },
            "proxySettings": {
                "tag": "wireguard"
            },
            "tag": "warp-IPv6"
        },
        {
            "protocol": "wireguard",
            "settings": {
                                xxxxxxx
            },
            "tag": "wireguard"
        }

1.8.4及之前的版本使用一直正常,早说更新了1.8.6之后,发现chatgpt打不开了各种报错。(其他走代理的网站正常),找了半天没找到原因,回滚回1.8.4就正常。 配置文件没改过。

可以确定是xray更新导致的问题。

另外,一个问题就是我的机器是ipv4的,配置wireguard是由双栈ip的(使用通过wireguard出站到https://test-ipv6.com/ 可以确认2个ip都是CF的),但上述配置中 "domainStrategy": "UseIPv6" 似乎不起作用。最终还是以cf的ipv4访问了目标网站,chatgpt我用这个地址也确认了是ipv4(https://chat.openai.com/cdn-cgi/trace) 本来以为1.8.6改好了。结果还没机会验证。wireguard出站都出bug了只好回滚。

烦请确认和修复。

另外。1.8.6更新完成还是出现过好一次短时间断流恢复的情况,之前更新版本都没有这个情况。

@cty123
Copy link
Contributor

cty123 commented Nov 18, 2023

大概率是这个commit: 0ac7da2 ,请问有错误日志吗?

@WordsWorthLess
Copy link

听说xray core的wireguard 出站很吃内存, 我都是用wireguard-tools建立一个warp连接, 然后通过xray把需要走warp的流量打标, 转发到wg建立的连接

@toyo2333
Copy link
Author

大概率是这个commit: 0ac7da2 ,请问有错误日志吗?

没有 不会弄。这个很好复现。你配一个就能看到错误了

@toyo2333
Copy link
Author

大概率是这个commit: 0ac7da2 ,请问有错误日志吗?

日志来了

2023/11/19 09:25:03 [Info] [784227663] proxy/socks: TCP Connect request to tcp:test-ipv6.com:443
2023/11/19 09:25:03 [Info] [784227663] app/dispatcher: taking detour [wireguard] for [tcp:test-ipv6.com:443]
2023/11/19 09:25:03 [Info] switching dialer
2023/11/19 09:25:03 [Info] [784227663] app/proxyman/outbound: failed to process outbound traffic > proxy/wireguard: failed to create virtual tun interface > failed to disable ipv4 rp_filter for all: open /proc/sys/net/ipv4/conf/all/rp_filter: read-only file system
2023/11/19 09:25:03 [Info] [784227663] app/proxyman/inbound: connection ends > proxy/socks: connection ends > proxy/socks: failed to transport all TCP response > io: read/write on closed pipe
2023/11/19 09:25:03 tcp:172.29.0.3:55062 accepted tcp:test-ipv6.com:443 [socks-in -> wireguard]

@cty123
Copy link
Contributor

cty123 commented Nov 19, 2023

2023/11/19 09:25:03 [Info] [784227663] app/proxyman/outbound: failed to process outbound traffic > proxy/wireguard: failed to create virtual tun interface > failed to disable ipv4 rp_filter for all: open /proc/sys/net/ipv4/conf/all/rp_filter: read-only file system

这个是主要问题,你当前的user没有足够的权限去创建tun虚拟网卡,你这个是在虚拟容器里面跑的吗?

@toyo2333
Copy link
Author

2023/11/19 09:25:03 [Info] [784227663] app/proxyman/outbound: failed to process outbound traffic > proxy/wireguard: failed to create virtual tun interface > failed to disable ipv4 rp_filter for all: open /proc/sys/net/ipv4/conf/all/rp_filter: read-only file system

这个是主要问题,你当前的user没有足够的权限去创建tun虚拟网卡,你这个是在虚拟容器里面跑的吗?

嗯,我一直是使用docker运行xray的。使用的是https://hub.docker.com/r/teddysun/xray 1.8.4以及之前的版本都用的是这个都是正常的。

@toyo2333
Copy link
Author

2023/11/19 09:25:03 [Info] [784227663] app/proxyman/outbound: failed to process outbound traffic > proxy/wireguard: failed to create virtual tun interface > failed to disable ipv4 rp_filter for all: open /proc/sys/net/ipv4/conf/all/rp_filter: read-only file system

这个是主要问题,你当前的user没有足够的权限去创建tun虚拟网卡,你这个是在虚拟容器里面跑的吗?

version: '3.9'
services:
    xray:
        image: teddysun/xray
        # image: teddysun/xray:1.8.4
        container_name: xray
        restart: unless-stopped
        logging:
            options:
                max-size: 10m
        ports:
            - "443:443"
        volumes:
            - ./xray:/etc/xray

@cty123
Copy link
Contributor

cty123 commented Nov 19, 2023

这就跟代码没关系了,这是docker权限的问题

@cty123
Copy link
Contributor

cty123 commented Nov 19, 2023

不过我看这个commit里面tun设备的构建方式变了,可能原来不用的权限现在又需要了,导致你这个image 1.8.6的版本用不了

@toyo2333
Copy link
Author

不过我看这个commit里面tun设备的构建方式变了,可能原来不用的权限现在又需要了,导致你这个image 1.8.6的版本用不了

所以,是你这边修改?还是teddysun那边修改?还是我修改配置文件?

@Fangliding
Copy link
Member

@toyo2333 昨天有人反馈过了 要root运行 可能确实得改

@toyo2333
Copy link
Author

@toyo2333 昨天有人反馈过了 要root运行 可能确实得改

所以,是xray这边修改?还是teddysun的docker那边修改?还是我修改自己的配置文件?

@csryt
Copy link

csryt commented Nov 19, 2023

@Fangliding

@cty123
Copy link
Contributor

cty123 commented Nov 19, 2023

你的配置文件没问题,最简单粗暴的解决方式是用docker的privilege 模式 --privileged,但是这个不推荐,我还没想出来有什么更好的解决方法,最主要是要知道为什么之前不需要权限,这个commit之后就需要

@Fangliding
Copy link
Member

@toyo2333 xray得改()
form群友:给容器 privileged: true 特权,就可以,但是有严重的安全风险(可以穿透到宿主机的权限)。

@toyo2333
Copy link
Author

@toyo2333 xray得改() form群友:给容器 privileged: true 特权,就可以,但是有严重的安全风险(可以穿透到宿主机的权限)。

好的,感谢开发者!

@ischub
Copy link

ischub commented Nov 19, 2023

@cty123 在这里,

writeSysctlZero := func(path string) error {

writeSysctlZero := func(path string) error {
_, err := os.Stat(path)
if os.IsNotExist(err) {
return nil
}
if err != nil {
return err
}
return os.WriteFile(path, []byte("0"), 0o644)
}

这个匿名函数,在容器里使用有弊端,本来这个核心配置项可以通过docker运行变量修改,但是这个函数没办法正确判断配置项,而最终用需要特权的方式去写这个配置项,导致1.8.5以上版本在容器中无法正常使用wireguard协议。

@Phoenix-999
Copy link

Phoenix-999 commented Nov 19, 2023

Hi All
I'm currently seeking examples or documentation for WireGuard inbound configurations that we can study and learn from.
If anyone has resources or examples they could share, it would be greatly appreciated.

@us254
Copy link

us254 commented Nov 19, 2023

@Phoenix-999

WireGuard inbound configurations

#2477

@Phoenix-999
Copy link

@toyo2333
Thank you for the instructions on routing.
I know you are very busy, but do you have a step-by-step guide on how to set up WireGuard inbound and outbound correctly?
I appreciate your assistance in advance.

@qist
Copy link

qist commented Nov 22, 2023

你的配置文件没问题,最简单粗暴的解决方式是用docker的privilege 模式 --privileged,但是这个不推荐,我还没想出来有什么更好的解决方法,最主要是要知道为什么之前不需要权限,这个commit之后就需要

--cap-add --cap-drop 给对应权限就可以了

@toyo2333
Copy link
Author

另外,一个问题就是我的机器是ipv4的,配置wireguard是由双栈ip的(使用通过wireguard出站到https://test-ipv6.com/ 可以确认2个ip都是CF的),但上述配置中 "domainStrategy": "UseIPv6" 似乎不起作用。最终还是以cf的ipv4访问了目标网站,chatgpt我用这个地址也确认了是ipv4(https://chat.openai.com/cdn-cgi/trace)

--这个问题,作者是否可以一并看看呢?

@sjtuross
Copy link

teddysun/xray这个自从1.8.6貌似就不正常,我遇到的是回落工作不正常,也没有日志,换本项目里的docker就好了

@qist
Copy link

qist commented Nov 24, 2023

没什么问题。

@toyo2333
Copy link
Author

teddysun/xray这个自从1.8.6貌似就不正常,我遇到的是回落工作不正常,也没有日志,换本项目里的docker就好了

我一直用teddysun的,而且这次也不是docker打包的问题。上面都说是xray自己修改了部分代码触发了容器权限问题

@kunsonx
Copy link
Contributor

kunsonx commented Nov 25, 2023

这个应该是跟之前修改 WireGuard tun 设备转发路由数据有关系. 所以要求 root 权限, 使用 gVisor 模拟网络栈性能会比较低.

@toyo2333
Copy link
Author

另外,一个问题就是我的机器是ipv4的,配置wireguard是由双栈ip的(使用通过wireguard出站到https://test-ipv6.com/ 可以确认2个ip都是CF的),但上述配置中 "domainStrategy": "UseIPv6" 似乎不起作用。最终还是以cf的ipv4访问了目标网站,chatgpt我用这个地址也确认了是ipv4(https://chat.openai.com/cdn-cgi/trace)

--这个问题,作者是否可以一并看看呢?

奇怪,今天在看v6出站又正常了。上述2个测试url都显示走了warp的v6ip出站

@toyo2333
Copy link
Author

请问这个问题有修复计划么? 不然我一直无法更新新版本docker

@Fangliding
Copy link
Member

@toyo2333 开摆()

@toyo2333
Copy link
Author

@toyo2333 开摆()

啊?

@toyo2333
Copy link
Author

toyo2333 commented Jan 8, 2024

我看到1.8.7发布了,请问下这个问题修复了没有?我还是1.8.4没法升级。

@yuhan6665
Copy link
Member

我看到1.8.7发布了,请问下这个问题修复了没有?我还是1.8.4没法升级。

这个问题你需要赋予root权限 或者使用 "kernelMode" = false

@toyo2333
Copy link
Author

toyo2333 commented Jan 8, 2024

我看到1.8.7发布了,请问下这个问题修复了没有?我还是1.8.4没法升级。

这个问题你需要赋予root权限 或者使用 "kernelMode" = false

1、我的vps就是默认使用root登录和执行各种命令的。
2、这和我docker的源有关系么? 我用的是teddysun的,换ghcr.io/xtls/xray-core 可以解决么?

@yuhan6665
Copy link
Member

Docker 的话需要privileged。。要不你还是试下 "kernelMode" = false

@toyo2333
Copy link
Author

toyo2333 commented Jan 8, 2024

"kernelMode" = false

试了,可以了。目前暂时没有发现新的问题,继续观察。

@yuhan6665
Copy link
Member

Ok

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

No branches or pull requests