Closed heygo1345678 closed 1 year ago
你的注释中存在很多错误,别让 ChatGPT 学去了然后胡说八道
发下nginx 完整配置,猜是
log_format main 里面的 $remote_addr或写成$proxy_protocol_addr
另外排版弄好点吧
客户端用 Client Hello 中 key_share
对应的私钥和配置中的 publicKey
算出一个共享密钥,再 HKDF 生成“临时认证密钥”,用它对版本号、时间戳、Short ID 进行 AEAD 认证加密,附加数据为整个握手,结果填充至 session ID,以供服务端验证请求。
服务端用配置中的 privateKey
和 Client Hello 中的 key_share
算出一个相同的共享密钥,再 HKDF 生成相同的“临时认证密钥”,用它解密、验证客户端的请求,然后生成一个 Ed25519 “临时可信证书”,签名为“临时认证密钥”对其中的公钥的 HMAC。
以上就是配置中 publicKey
和 privateKey
的作用。
客户端用 Client Hello 中
key_share
对应的私钥和配置中的publicKey
算出一个共享密钥,再 HKDF 生成“临时认证密钥”,用它对版本号、时间戳、Short ID 进行 AEAD 认证加密,附加数据为整个握手,结果填充至 session ID,以供服务端验证请求。服务端用配置中的
privateKey
和 Client Hello 中的key_share
算出一个相同的共享密钥,再 HKDF 生成相同的“临时认证密钥”,用它解密、验证客户端的请求,然后生成一个 Ed25519 “临时可信证书”,签名为“临时认证密钥”对其中的公钥的 HMAC。以上就是配置中
publicKey
和privateKey
的作用。
好的,多谢大佬指点,我不是搞开发的,对publicKey 的理解只剩下验证阻止中间人攻击了,这个配置是没有出官方模板前群里套用的,可能有的地方理解有误
学到了,Short ID 我还是要填下了
发下nginx 完整配置,猜是
log_format main 里面的 $remote_addr或写成$proxy_protocol_addr
另外排版弄好点吧
nginx.conf配置文件,不过我上面有提及,相同配置老的xtls是可以获取访客IP的:
user nginx; worker_processes auto;
error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;
events { worker_connections 1024; }
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
stream {
log_format proxy '$proxy_protocol_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/tcp-access.log proxy ;
open_log_file_cache off;
include /etc/nginx/conf.d/*.stream;
map $ssl_preread_server_name $stream_map {
xtls.test vless; www.microsoft.com real;
}
upstream vless { server 127.0.0.1:8443; }
upstream real { server 127.0.0.1:44443 ;
}
server { listen 443 reuseport ; listen [::]:443 reuseport ; proxy_pass $stream_map; ssl_preread on; proxy_protocol on; # 开启Proxy protocol
}
}
你的问题是nginx日志还是xray日志,哪个不能得到访问者的ip?
"tcpSettings": { "acceptProxyProtocol": true }, 不确定这个它生效没有
如果是xray日志报访问者127.0.0.1 盲猜你试试改配置
"sockopt": {
"acceptProxyProtocol": true,
}
你去文档搜下加上面的参数
xray reality服务器端日志访客IP是127.0.0.1,用老的xtls搭建服务器有访客真实IP; 不过我的nginx的两个日志只有http块的/var/log/nginx/access.log 是正常的,cf反代ws,grpc,网站都有访客日志,因为有设置set real ip from /var/log/nginx/tcp-access.log这个日志里面全是127.0.0.1,老的xtls节点和reality节点在里面日志分别为:
"tcpSettings": { "acceptProxyProtocol": true }, 不确定这个它生效没有
如果是xray日志报访问者127.0.0.1 盲猜你试试改配置
"sockopt": {
"acceptProxyProtocol": true,
}
你去文档搜下加上面的参数
测试了你说的: "streamSettings": {
"sockopt": {
"tcpcongestion": "bbr", "acceptProxyProtocol": true }} 不过日志还是127.0.0.1:
2023/02/23 05:20:09 127.0.0.1:47288 accepted tcp:update.googleapis.com:443 [VLESS-TCP-Reality -> block] 2023/02/23 05:20:07 127.0.0.1:40106 accepted tcp:8.8.4.4:53 [VLESS-TCP-Reality >> direct] 2023/02/23 05:24:51 127.0.0.1:51940 accepted tcp:github.com:443 [VLESS-TCP-Reality >> direct] 2023/02/23 05:24:06 127.0.0.1:36702 accepted tcp:alive.github.com:443 [VLESS-TCP-Reality >> direct] 2023/02/23 05:23:59 [Warning] transport/internet/tcp: accepting PROXY protocol Xray 1.7.5 (Xray, Penetrates Everything.) 4d5c319 (go1.20.1 linux/amd64) A unified platform for anti-censorship. 2023/02/23 05:23:59 [Info] infra/conf/serial: Reading config: /etc/xray/config.json 2023/02/23 05:23:59 [Warning] core: Xray 1.7.5 started 2023/02/23 05:24:00 127.0.0.1:36530 accepted tcp:xxxx:80 [VLESS-TCP-Reality >> direct] 2023/02/23 05:24:00 127.0.0.1:36546 accepted tcp:xxxx:443 [VLESS-TCP-Reality >> direct] 2023/02/23 05:24:00 127.0.0.1:36522 accepted tcp:xxxx:443 [VLESS-TCP-Reality >> direct]
你说清楚 xray日志 的 127.0.0.1 ,那你等开发者试试。我不用SNI分流,没测试过。
建议你把 nginx 和 xray 的配置 完整的,整理好,发上来,方便开发者定位复现别人测试,注意下排版
还有,REALITY 的原理不是“偷证书”,TLSv1.3 把 Server Hello 后的消息全加密了,中间人看不到证书,想象力需要再丰富些
REALITY 服务端只偷了目标网站的 Server Hello,和后续握手消息的长度特征,还有超时特征等是 TODO
仔细看了一下这个 issue,有可能是 REALITY 服务端代码的问题,你开一下服务端的 show 看看有没有真实 IP
仔细看了一下这个 issue,~有可能是 REALITY 服务端代码的问题~,你开一下服务端的 show 看看有没有真实 IP 测试了,确实可以看到访客IP了,我xxxx脱敏了
Xray 1.7.5 (Xray, Penetrates Everything.) 4d5c319 (go1.20.1 linux/amd64) A unified platform for anti-censorship. 2023/02/23 06:19:32 [Info] infra/conf/serial: Reading config: /etc/xray/config.json 2023/02/23 06:19:33 [Warning] transport/internet/tcp: accepting PROXY protocol 2023/02/23 06:19:33 [Warning] core: Xray 1.7.5 started REALITY remoteAddr: xxxxx:40380 REALITY remoteAddr: xxxx:40383 REALITY remoteAddr: xxxxx:40380 hs.clientHello.sessionId: [207 10 49 87 145 57 61]
有没有格式化的配置文件,准备抄个作业,谢谢
On Thu, Feb 23, 2023 at 2:26 PM heygo @.***> wrote:
仔细看了一下这个 issue,有可能是 REALITY 服务端代码的问题,你开一下服务端的 show 看看有没有真实 IP 测试了,确实可以看到访客IP了,我xxxx脱敏了
Xray 1.7.5 (Xray, Penetrates Everything.) 4d5c319 https://github.com/XTLS/Xray-core/commit/4d5c3195d2a6efd6fe33fd13ad79e0b54d213937 (go1.20.1 linux/amd64) A unified platform for anti-censorship. 2023/02/23 06:19:32 [Info] infra/conf/serial: Reading config: /etc/xray/config.json 2023/02/23 06:19:33 [Warning] transport/internet/tcp: accepting PROXY protocol 2023/02/23 06:19:33 [Warning] core: Xray 1.7.5 started REALITY remoteAddr: xxxxx:40380 REALITY remoteAddr: xxxx:40383 REALITY remoteAddr: xxxxx:40380 hs.clientHello.sessionId: [207 10 49 87 145 57 61]
— Reply to this email directly, view it on GitHub https://github.com/XTLS/Xray-core/issues/1697#issuecomment-1441266789, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACJN3ALX4GW4B6V5F46TPZ3WY37JRANCNFSM6AAAAAAVFBTTMU . You are receiving this because you are subscribed to this thread.Message ID: @.***>
@heygo1345678 OK,那我猜对了,v1.8.0 前会修复
已修复,请测试 bdbca33
大佬,SNI分流问题没有完美解决。使用此版本后反而不能使用SNI分流+Proxy Protocol了,必须去除Proxy Protocol才能正常使用。
已修复,请测试 bdbca33
大佬,SNI分流问题没有解决,使用此版本后反而不能使用SNI分流+Proxy Protocol了,必须去除Proxy Protocol才能正常使用。
https://github.com/XTLS/Xray-core/issues/1712#issuecomment-1445336506
已修复,请测试 bdbca33
大佬,SNI分流问题没有解决,使用此版本后反而不能使用SNI分流+Proxy Protocol了,必须去除Proxy Protocol才能正常使用。
感谢大佬,新更新完美修复了。
有完整配置参考下吗 谢谢
On Sun, Feb 26, 2023 at 19:54 lxhao61 @.***> wrote:
已修复,请测试 bdbca33 https://github.com/XTLS/Xray-core/commit/bdbca3380b0fc51e7c41766c419ff19d4a8c1f78
大佬,SNI分流问题没有解决,使用此版本后反而不能使用SNI分流+Proxy Protocol了,必须去除Proxy Protocol才能正常使用。
1712 (comment)
https://github.com/XTLS/Xray-core/issues/1712#issuecomment-1445336506
感谢大佬,新更新完美修复了。
— Reply to this email directly, view it on GitHub https://github.com/XTLS/Xray-core/issues/1697#issuecomment-1445341687, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACJN3AMFW632CX52XHE6EVLWZNAA5ANCNFSM6AAAAAAVFBTTMU . You are receiving this because you commented.Message ID: @.***>
已修复,请测试 bdbca33
大佬,SNI分流问题没有解决,使用此版本后反而不能使用SNI分流+Proxy Protocol了,必须去除Proxy Protocol才能正常使用。
感谢大佬,新更新完美修复了。
等你更新配置大全
虽然这是一个已经关闭的issue,但我刚好看到了,我实在是看不过去这种提问格式,因为我已经看到过n次这种直接粘配置上来不整理格式的情况了。
我真的难以想象一个能搭建出“ xray VLESS-TCP-Reality + xtls-rprx-vision +nginx stream 443 sni 分流端口复用”的人,竟然连三个反引号引住代码区块都不会(又或者是懒?),粘出来的配置文件格式💩一样的难看,我要是rprx,看到这种回复我都不想回答,整理一下格式很难吗?
不敢说让你们去折叠代码了,就连基本的用一对```
括住配置文件都不会吗:创建和突显代码块。
所以我写了这个教程,如果有人再遇到这样直接把配置文件粘上来不整理格式的,先把我这个教程给他看,让他重新编辑好格式再来问。
1、如果你的配置文件写的时候就格式不整齐,首先要格式化一下,可以在网上找格式化工具:json格式化网站; 2、但网上的格式化网站几乎都是有以下两个缺点:
//
(添加了注释的话,一格式化就会报错,或者会被去除)基于以上两个原因,所以我推荐用编辑器来格式化,我推荐用Visual Studio Code(平时简称vscode)编辑器 3、vscode编辑器格式化json代码示例
control+N
,macOS按command+N
)2、然后在gihub issue区域先敲一对三反引号(```
),如下所示,最后把你格式化后的配置粘贴到里面去
// 在这里放置你的配置文件
3、写完后,点击左上角的“Preview”预览一下再发,预览格式没问题再发,有问题继续修改
我们来看看格式化后的配置文件,多清晰
{
"log": {
"loglevel": "warning"
},
"inbounds": [{
"tag": "VLESS-TCP-Reality",
"listen": "0.0.0.0",
"port": 44443, //服务器监听端口号,可以不是443,防火墙打开或者vps面板操作:iptables -I INPUT -p tcp --dport 8443 -j ACCEPT
"protocol": "vless",
"settings": {
"clients": [{
"id": "",
"flow": "xtls-rprx-vision" //解决tls in tls流量特征
}],
"decryption": "none"
},
"streamSettings": {
"tcpSettings": {
"acceptProxyProtocol": true
},
"network": "tcp",
"security": "reality", //魔改的tls协议 reality
"realitySettings": {
"show": false,
"privateKey": "", //使用上面生成的私钥
"shortIds": [""],
"Dest": "61.147.219.124:443", //这个是sni白名单网站www.microsoft.com的cdn IP和 https网站端口号
"type": "tcp",
"serverNames": ["www.microsoft.com"]
}
}
}],
"outbounds": [{
"protocol": "freedom",
"tag": "direct"
}]
}
再看看原来没有格式化的截图,看看像什么样?
当配置文件或粘贴上来的日志过长时,如果不折叠,看起来比较麻烦,此时你可以使用github markdown独有的折叠功能。
折叠的语法如下,你只需要把这个粘贴到你的issue中,然后把你要折叠的内容放在下面的内容区域,内容本身如果是配置文件,还是要加```
来括住
<details>
<summary>这是自定义按钮</summary>
这是要被折叠的内容第1行
这是要被折叠的内容第2行
这是要被折叠的内容第3行
</details>
我们来试试,把以下内容粘贴到issue中,然后点击“Preview”按钮预览一下
<details>
<summary>server端配置</summary>
```json
{
"log": {
"loglevel": "warning"
},
"inbounds": [{
"tag": "VLESS-TCP-Reality",
"listen": "0.0.0.0",
"port": 44443, //服务器监听端口号,可以不是443,防火墙打开或者vps面板操作:iptables -I INPUT -p tcp --dport 8443 -j ACCEPT
"protocol": "vless",
"settings": {
"clients": [{
"id": "",
"flow": "xtls-rprx-vision" //解决tls in tls流量特征
}],
"decryption": "none"
},
"streamSettings": {
"tcpSettings": {
"acceptProxyProtocol": true
},
"network": "tcp",
"security": "reality", //魔改的tls协议 reality
"realitySettings": {
"show": false,
"privateKey": "", //使用上面生成的私钥
"shortIds": [""],
"Dest": "61.147.219.124:443", //这个是sni白名单网站www.microsoft.com的cdn IP和 https网站端口号
"type": "tcp",
"serverNames": ["www.microsoft.com"]
}
}
}],
"outbounds": [{
"protocol": "freedom",
"tag": "direct"
}]
}
如下所示,可以看到虽然我们的配置文件内容挺长,但实际显示时就显示成一个按钮了,我们可以点击它来展开查看,看完又可以收起,这样可以让我们看issue时结构分明,等要看具体配置的时候才展开来看
<details>
<summary>server端配置</summary>
```json
{
"log": {
"loglevel": "warning"
},
"inbounds": [{
"tag": "VLESS-TCP-Reality",
"listen": "0.0.0.0",
"port": 44443, //服务器监听端口号,可以不是443,防火墙打开或者vps面板操作:iptables -I INPUT -p tcp --dport 8443 -j ACCEPT
"protocol": "vless",
"settings": {
"clients": [{
"id": "",
"flow": "xtls-rprx-vision" //解决tls in tls流量特征
}],
"decryption": "none"
},
"streamSettings": {
"tcpSettings": {
"acceptProxyProtocol": true
},
"network": "tcp",
"security": "reality", //魔改的tls协议 reality
"realitySettings": {
"show": false,
"privateKey": "", //使用上面生成的私钥
"shortIds": [""],
"Dest": "61.147.219.124:443", //这个是sni白名单网站www.microsoft.com的cdn IP和 https网站端口号
"type": "tcp",
"serverNames": ["www.microsoft.com"]
}
}
}],
"outbounds": [{
"protocol": "freedom",
"tag": "direct"
}]
}
希望大家提issue都能这么提,不求全部用折叠,但至少用一对```
括住配置文件,开发者本来就很辛苦了,不要增加他们的工作难度,提的issue格式良好才能让人有更好的心情去回复大家的问题。
日志:2023/02/23 01:52:46 127.0.0.1:52556 accepted tcp:github.githubassets.com:443 [VLESS-TCP-Reality >> direct] nginx stream 配置:
map $ssl_preread_server_name $stream_map {
xtls.test vless; www.microsoft.com real;
}
upstream vless { server 127.0.0.1:8443; }
upstream real { server 127.0.0.1:44443 ;
}
stream模块监听443端口,并进行端口复用
server { listen 443 reuseport ; listen [::]:443 reuseport ; proxy_pass $stream_map; ssl_preread on; proxy_protocol on; # 开启Proxy protocol
}
}
reality版本:
xray version
Xray 1.7.5 (Xray, Penetrates Everything.) 4d5c319 (go1.20.1 linux/amd64) A unified platform for anti-censorship.
reality服务器配置文件: { "log": { "loglevel": "warning" },
"tag": "VLESS-TCP-Reality", "listen": "0.0.0.0",
"port": 44443, //服务器监听端口号,可以不是443,防火墙打开或者vps面板操作:iptables -I INPUT -p tcp --dport 8443 -j ACCEPT "protocol": "vless", "settings": { "clients": [ { "id": "", "flow": "xtls-rprx-vision" //解决tls in tls流量特征 } ], "decryption": "none" }, "streamSettings": {
} } ], "outbounds": [ { "protocol": "freedom", "tag": "direct" } ] }
客户端配置: { "log": { "loglevel": "warning" },
} ]
} 相同的action build版本,用老的xtls是可以获取访客IP的: 2023/02/23 01:51:52 [Warning] infra/conf: You are using an old version of XTLS, which is deprecated now and will be removed soon. Please use flow "xtls-rprx-vision" with "tls & tlsSettings" instead. 2023/02/23 01:51:52 [Warning] transport/internet/websocket: accepting PROXY protocol 2023/02/23 01:51:52 [Warning] core: Xray 1.7.5 started 2023/02/23 01:51:53 234.12.31.12:38640 accepted tcp:149.12.1.100:80 nginx stream配置同上; xray配置文件: { "log": {
}, "inbounds": [ { "port": 8443, "protocol": "vless", "settings": { "clients": [ { "id": "", "flow": "xtls-rprx-direct" } ], "decryption": "none", "fallbacks": [ { "dest": 60000, "alpn": "", "xver": 1 }, { "dest": 60001, "alpn": "h2", "xver": 1 }, { "dest": 60002, "path": "/9d/", "xver": 1 }, { "name": "", "dest": 5003, "xver": 1 }, { "name": "", "alpn": "h2", "dest": 5004, "xver": 1 }, { "alpn": "http/1.1", "dest": 800 }, { "alpn": "h2", "dest": 801 }
], "outbounds": [ { "protocol": "freedom" } ] }