{"repo":"howmp/reality","free":true,"listed":false,"github":"https://github.com/howmp/reality","clone":"git clone https://github.com/howmp/reality.git","description":"grs内网穿透工具通过reality协议隐藏特征","language":"Go","stars":625,"topics":["reality","reverse-proxy","tunnel","socks5","frp","nps"],"license":"MIT","category":"networking-infra","readme_excerpt":"grs 1. grss(Golang Reverse SOCKS5 Server) 服务端，需要有公网IP的机器上 1. grsc(Golang Reverse SOCKS5 Client) 客户端，需要运行于想要穿透的内网中机器上 1. grsu(Golang Reverse SOCKS5 User) 用户端，需要运行于用户机器上，提供socks5服务 grs 是一个反向 SOCKS5 代理，基于 REALITY 协议，grss/grsc/grsu 间所有通信伪装成对真实 HTTPS 站点的 TLS 1.2/1.3 连接，消除网络特征和防止主动探测 关于REALITY协议: README-REALITY.md 相对于frp，nps等内网穿透工具有以下特点 1. 完美消除网络特征 1. 防止服务端被主动探测 1. 客户端和用户端内嵌配置，不需要命令行或额外配置文件 使用步骤 生成配置、客户端、用户端 grss gen www.qq.com:443 127.0.0.1:443 1. www.qq.com:443 是被模拟的目标 1. 127.0.0.1:443 是服务器监听地址，这里要填写公网IP，端口最好和模拟目标一致 若SNIAddr或ServerAddr不指定，则尝试加载已有配置文件 默认生成3个不同id文件名的客户端，可通过 -c 参数指定 启动服务端 grss serv 启动客户端 grscX X表示id 启动用户端 grsu -id 0 这里id参数对应了grsc的id，不同id会连接不同的grsc 常见问题 服务端被探测时使用的“真证书”吗? 是，准确的说被探测时，服务端相当于一个端口转发，证书与被模拟的目标完全一致 这样一点可以通过修改本地Hosts文件后，通过浏览器访问来验证 或通过curl验证: curl -v -I --resolve \"www.qq.com:443:127.0.0.1\" https://www.qq.com 为什么客户端/用户端提示 verify failed ? 1. 服务端时间和客户端时间相差超过 expire second 1. 为了防重放，默认不能相差30秒，可在生成时修改最大超时时间 grss gen -e 60 www.qq.com:443 127.0.0.1:443 1. 也可以NTP同步客户端、用户端、服务端时间 1. 服务端配置重新生成后，也需要使用最新的 grsc 和 grsu ，否则预共享密钥不匹配 1. 客户端的网络可能被劫持 为什么客户端/用户端提示 certificate signed by unknown authority ? 运行环境缺少根证书，可以生成时指定 -s 选项，跳过验证 grss gen -s www.qq.com:443 127.0.0.1:443","default_branch":null,"files":null,"tree":[],"storefront":"/r/howmp","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/howmp/reality/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}