Closed f0def closed 1 year ago
I don't think this would work, because on the inbound side you have configured to use socks5 protocol, which means the Wireguard client needs to open connection to your socks5 inbound(xray-core client) and perform handshake first, before asking it to forward Wireguard traffic to your remote server. Based on your config, it looks like the Wireguard client was simply treating your socks5 inbound as its peer server, which it is not. The error message here is expected, because the Wireguard client wasn't talking to socks5 inbound in socks protocol, and xray-core failed to parse the request header.
You need to use dokodemo-door
https://computerscot.github.io/wireguard-over-xray.html
Thank you for responses. I've tried https://computerscot.github.io/wireguard-over-xray.html but faced with the fact that there is no traffic (I'm using port 51620
for wireguard). Maybe I missed something important?
./xray -c xray.json
Xray 1.8.4 (Xray, Penetrates Everything.) Custom (go1.21.0 darwin/arm64)
A unified platform for anti-censorship.
2023/09/01 09:50:50 [Info] infra/conf/serial: Reading config: xray.json
2023/09/01 09:50:50 [Debug] app/log: Logger started
2023/09/01 09:50:50 [Info] transport/internet/udp: listening UDP on 0.0.0.0:51620
2023/09/01 09:50:50 [Warning] core: Xray 1.8.4 started
2023/09/01 09:50:54 [Debug] [3852324921] proxy/dokodemo: processing connection from: 127.0.0.1:57265
2023/09/01 09:50:54 [Info] [3852324921] proxy/dokodemo: received request for 127.0.0.1:57265
2023/09/01 09:50:54 [Info] [3852324921] app/dispatcher: default route for udp:127.0.0.1:51620
2023/09/01 09:50:54 127.0.0.1:57265 accepted udp:127.0.0.1:51620 [wireguard >> vless]
2023/09/01 09:50:54 [Info] [3852324921] transport/internet/tcp: dialing TCP to tcp:134.5.36.176:443
2023/09/01 09:50:54 [Debug] transport/internet: dialing to tcp:134.5.36.176:443
Xray server
and wireguard server
configurations remained the same. But I changed xray client
configuration to
{
"log": {
"loglevel": "debug"
},
"inbounds": [
{
"tag": "wireguard",
"port": 51620,
"protocol": "dokodemo-door",
"settings":{
"address": "127.0.0.1",
"port": 51620,
"network": "udp"
}
}
],
"outbounds": [
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "example.com",
"port": 443,
"users": [
{
"id": "581b2235-6d63-4612-ae3c-d42d8bb043c4",
"encryption": "none",
"level": 0
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"fingerprint": "chrome",
"serverName": "discordapp.com",
"publicKey": "UOKkySZpUGZDErP0Ov4BH9nNISrfHh6MsL-DcYYjIzw",
"shortId": ""
}
},
"tag": "vless"
},
{
"protocol": "freedom",
"tag": "direct"
}
]
}
and wireguard client
to
[Interface]
PrivateKey = ********
Address = 10.49.0.2/32
DNS = 171.12.110.32
[Peer]
PublicKey = ********
PresharedKey = ********
Endpoint = 127.0.0.1:51620
AllowedIPs = 0.0.0.0/1, 128.0.0.0/6, 132.0.0.0/7, 134.0.0.0/14, 134.4.0.0/16, 134.5.0.0/19, 134.5.32.0/22, 134.5.36.0/25, 134.5.36.128/27, 134.5.36.160/28, 134.5.36.177/32, 134.5.36.178/31, 134.5.36.180/30, 134.5.36.184/29, 134.5.36.192/26, 134.5.37.0/24, 134.5.38.0/23, 134.5.40.0/21, 134.5.48.0/20, 134.5.64.0/18, 134.5.128.0/17, 134.6.0.0/15, 134.8.0.0/13, 134.16.0.0/12, 134.32.0.0/11, 134.64.0.0/10, 134.128.0.0/9, 135.0.0.0/8, 136.0.0.0/5, 144.0.0.0/4, 160.0.0.0/3, 192.0.0.0/2, ::/0
I use ClashMeta to support it
https://github.com/MetaCubeX/Clash.Meta/blob/Meta/docs/config.yaml
# wireguard
- name: "wg"
type: wireguard
server: 162.159.192.1
port: 2480
ip: 172.16.0.2
ipv6: fd01:5ca1:ab1e:80fa:ab85:6eea:213f:f4a5
public-key: Cr8hWlKvtDt7nrvf+f0brNQQzabAqrjfBvas9pmowjo=
# pre-shared-key: 31aIhAPwktDGpH4JDhA8GNvjFXEf/a6+UaQRyOAiyfM=
private-key: eCtXsJZ27+4PbhDkHnB923tkUn2Gj59wZw5wFA75MnU=
udp: true
reserved: "U4An"
# 数组格式也是合法的
# reserved: [209,98,59]
# 一个出站代理的标识。当值不为空时,将使用指定的 proxy 发出连接
# dialer-proxy: "ss1"
The dialer-proxy
can be the vless proxy
Thank you for all your replies.
I figured out the reason. My problem was in AllowedIPs
, it contains ::/0
at the end (https://github.com/XTLS/Xray-core/issues/2507#issuecomment-1702161379):
AllowedIPs = 0.0.0.0/1, 128.0.0.0/6, 132.0.0.0/7, 134.0.0.0/14, 134.4.0.0/16, 134.5.0.0/19, 134.5.32.0/22, 134.5.36.0/25, 134.5.36.128/27, 134.5.36.160/28, 134.5.36.177/32, 134.5.36.178/31, 134.5.36.180/30, 134.5.36.184/29, 134.5.36.192/26, 134.5.37.0/24, 134.5.38.0/23, 134.5.40.0/21, 134.5.48.0/20, 134.5.64.0/18, 134.5.128.0/17, 134.6.0.0/15, 134.8.0.0/13, 134.16.0.0/12, 134.32.0.0/11, 134.64.0.0/10, 134.128.0.0/9, 135.0.0.0/8, 136.0.0.0/5, 144.0.0.0/4, 160.0.0.0/3, 192.0.0.0/2, ::/0
I had to remove ::/0
and everything worked for me. I'm assuming that the problem was caused by the fact that I did not exclude the ipv6 address of my Server2
(it has both IPv4 and IPv6).
https://computerscot.github.io/wireguard-over-xray.html was very helpfull.
I will close the issue.
Hi all, thank you for the great product!
I want to run wireguard through vless tunnel (wireguard protocol is blocked, I want to hide it). Something like this:
When I run xray at
Server1
and trying to connect to it from wireguard's client I see error in logproxy/socks: failed to parse UDP request > proxy/socks: failed to read UDP header > common/protocol: unknown address type: 0
. What does it mean and what can be done to fix it?Here my
xray.conf
And wireguard's
client.conf