Closed hr567 closed 1 week ago
xray这边应该是不太可能串的 有点像gvisor的问题 这边可能修不了 而且wg入站本来就是一个没啥维护的部分
感谢排查,确实在网上目前能搜躲到的Wireguard入站的资料比较少。 wireguard入站+freedom出站测了一下似乎没有遇到过这个问题(也可能概率极低没有复现过),但是wireguard入+vless出站连接本地vless入站+freedom出站复现过。 后面我研究一下能不能通过标准Wireguard服务器加tproxy实现相同功能,不过如果xray能直接提供完善的Wireguard入站支持就更方便了。 很遗憾目前不熟悉golang的技术栈所以无法直接做出贡献,感谢各位大佬的维护。
经过一段时间的使用,wireguard入站+freedom出站没有复现类似问题,freedom出站通过socketopt绑定了wireguard interface,实现了和原来相同的网络效果,没有出现TCP流内容不正确的问题
Wireguard入站的问题决要不要先开着,因为缺陷还存在。 TProxy经实验测试可以解决Wireguard入站的问题,Wireguard服务器将iptables添加tproxy即可实现相同功能(感觉可以水一篇文档,wireguard感觉比旁路由配置还简单一些
[Interface]
PrivateKey = xxxx
Address = ipv4, ipv6
ListenPort = 51820
PreUp = ip -4 rule add fwmark 104 table 104; ip -4 route add local 0.0.0.0/0 dev lo table 104
PreUp = ip -6 rule add fwmark 106 table 106; ip -6 route add local ::/0 dev lo table 106
PostUp = iptables -t mangle -A PREROUTING -i %i -p udp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 104
PostUp = iptables -t mangle -A PREROUTING -i %i -p tcp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 104
PostUp = ip6tables -t mangle -A PREROUTING -i %i -p udp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 106
PostUp = ip6tables -t mangle -A PREROUTING -i %i -p tcp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 106
PreDown = iptables -t mangle -D PREROUTING -i %i -p udp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 104
PreDown = iptables -t mangle -D PREROUTING -i %i -p tcp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 104
PreDown = ip6tables -t mangle -D PREROUTING -i %i -p udp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 106
PreDown = ip6tables -t mangle -D PREROUTING -i %i -p tcp -j TPROXY --on-ip localhost --on-port 18000 --tproxy-mark 106
PostDown = ip -4 rule del fwmark 104 table 104; ip -4 route del local 0.0.0.0/0 dev lo table 104
PostDown = ip -6 rule del fwmark 106 table 106; ip -6 route del local ::/0 dev lo table 106
[Peer]
PublicKey = xxx
AllowedIPs = xxx
pending
尝试这个版本 https://github.com/XTLS/Xray-core/actions/runs/11891414911
Still reproduced in fec492f
{
"log": {
"access": null,
"error": null,
"loglevel": "warning",
"dnsLog": false
},
"inbounds": [
{
"port": 51821,
"protocol": "wireguard",
"settings": {
"secretKey": "xxxx",
"peers": [
{ xxxx }
],
"kernelMode": false,
"mtu": 1420
}
}
],
"outbounds": [
{
"tag": "proxy",
"protocol": "vless",
"settings": { xxxx },
"streamSettings": {
"network": "ws",
"security": "tls",
"wsSettings": { xxxx }
},
"mux": {
"enabled": true,
"concurrency": -1,
"xudpConcurrency": 1
}
},
{
"tag": "direct",
"protocol": "freedom"
}
],
"routing": {
"domainStrategy": "IPIfNonMatch",
"domainMatcher": "hybrid",
"rules": [
{
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
},
{
"ip": [
"geoip:cn",
"geoip:private"
],
"outboundTag": "direct"
}
]
}
}
push的时候漏东西了 我在那个分支重新推了一个 https://github.com/XTLS/Xray-core/actions/runs/11910153601
使用 3628ab9 一段时间没有出现问题,看起来目前工作正常了
测试的时候发现功能正常但是Wireguard Inbound的上传性能比较差。rasp pi 5上iperf3测的单连接裸连上下940Mb/s,Wireguard+TProxy上下900Mb/s,Wireguard Inbound下载550Mb/s,上传波动很大,平均150Mb/s吧。(不影响我的使用,有Wireguard已经很好了,要是以后要是有人提性能问题再说吧)
完整性要求
描述
在访问日志access.log中显示两个连接是相邻的访问。 仅在使用Wireguard入站时出现这个问题,使用http和socks5代理入站时所有连接一切正常。 已分析本地Wireshark抓包结果,系统DNS查询结果正确。本地数据包中显示的TCP连接远程地址正确,但是TCP连接建立后握手后证书为另一网站的。TCP和DNS都经过wireguard tun传输,没有发生泄露。 服务器端日志忘保存了,后续补充。服务器端目测一切工作正常,显示正常的vless入站请求。
重现方式
Client配置部署在家庭局域网的一台设备上,Server配置部署在墙外。 计算机使用Wireguard官方客户端连接到Client进行上网,偶尔出现如图所示的证书错误。 想要访问的域名为:
mail.proton.me
(ip:185.70.42.37) 实际连接的域名为:smartscreen.microsoft.com
(ip:13.91.222.61:443)客户端配置
服务端配置
客户端日志
服务端日志