nonikon/trp

GitHub: nonikon/trp

基于libuv的轻量级反向代理工具,支持SOCKS4/5代理和TCP/UDP端口映射,可通过多级链式架构穿透NAT访问隔离网络。

Stars: 16 | Forks: 3

# TRP - Tiny Reverse Proxy ## 功能 - SOCKS5 TCP/UDP 代理和 SOCKS4/SOCKS4a TCP 代理。 - Linux iptable 重定向 (TCP)。 - TCP/UDP 端口映射。 ## 构建 如果您的系统上已经安装了 libuv,请使用以下命令: ``` mkdir build cd build cmake .. -DLIBUV_EMBEDDED=OFF cmake --build . ``` 否则,您需要先下载 libuv 源代码并解压,例如: ``` wget https://dist.libuv.org/dist/v1.46.0/libuv-v1.46.0.tar.gz tar xf libuv-v1.46.0.tar.gz mkdir build cd build cmake .. -DLIBUV_SRC_PATH=../libuv-v1.46.0 cmake --build . ``` 您也可以选择直接从 [release](https://github.com/nonikon/trp/releases) 页面下载 x86_64 windows 和 linux 二进制文件。 ## 架构 ``` +--------------+ +--------------+ APPLICATION ---> | proxy-client | ---> | proxy-server | ---> REMOTE +--------------+ | | | socks.c/tunnel.c | v | +--------+ | server - | ---> | client | ---> REMOTE +--------------+ +--------+ server.c client.c ``` ## 使用示例 首先,在拥有公网 IP 地址的主机上启动 `server`: ``` ./trp-server -s 0.0.0.0:1111 -x 0.0.0.0:2222 -k KEY_OF_SERVER ``` 其次,在可以访问 `server` 的主机上启动 `client`:(假设上述 `server` 的 IP 地址是 1.2.3.4) ``` ./trp-client -s 1.2.3.4:1111 -k KEY_OF_SERVER -d DEVID_OF_CLIENT -K KEY_OF_CLIENT ``` 最后,根据需要在本地启动 `proxy-client`(应能访问 `server`)(参见下面的示例)。 ### 通过 SOCKS4/SOCKS5 协议经由 `server` 访问网络 - 在本地启动一个 socks 服务器(监听 127.0.0.1:8080): ./trp-socks -b :8080 -x 1.2.3.4:2222 -k KEY_OF_SERVER - 然后你可以使用支持 SOCKS 协议的应用程序通过 `server` (1.2.3.4) 访问网络,例如 `curl`: curl -x socks5://127.0.0.1:8080 https://www.google.com - 示意图: +--------------+ +--------+ curl ---> | proxy-client | ---> | server | ---> www.google.com:443 +--------------+ +--------+ ### 通过 SOCKS4/SOCKS5 协议经由 `client` 访问网络 - 在本地启动一个 socks 服务器(监听 127.0.0.1:8080): ./trp-socks -b :8080 -x 1.2.3.4:2222 -k KEY_OF_SERVER -d DEVID_OF_CLIENT -K KEY_OF_CLIENT - 然后你可以使用支持 SOCKS 协议的应用程序通过 `client` (DEVID_OF_CLIENT) 访问网络,例如 `curl`: curl -x socks5://127.0.0.1:8080 https://www.google.com - 示意图: +--------------+ +--------+ +--------+ curl ---> | proxy-client | ---> | server | ---> | client | ---> www.google.com:443 +--------------+ +--------+ +--------+ ### 通过端口映射经由 `server` 访问网络 - 在本地启动一个隧道服务器(监听 127.0.0.1:8000): ./trp-tunnel -b :8000 -t 192.168.0.1:22 -x 1.2.3.4:2222 -k KEY_OF_SERVER - 然后你可以通过 `server` (1.2.3.4) 访问 192.168.0.1 的 SSH 服务,例如: ssh -p 8000 user@127.0.0.1 - 示意图: +--------------+ +--------+ ssh ---> | proxy-client | ---> | server | ---> 192.168.0.1:22 +--------------+ +--------+ ### 通过端口映射经由 `client` 访问网络 - 在本地启动一个隧道服务器(监听 127.0.0.1:8000): ./trp-tunnel -b :8000 -t :22 -x 1.2.3.4:2222 -k KEY_OF_SERVER -d DEVID_OF_CLIENT -K KEY_OF_CLIENT - 然后你可以访问 `client` (DEVID_OF_CLIENT) 的 SSH 服务,例如: ssh -p 8000 user@127.0.0.1 - 示意图: +--------------+ +--------+ +--------+ ssh ---> | proxy-client | ---> | server | ---> | client | ---> 127.0.0.1:22 +--------------+ +--------+ +--------+ ### 通过端口映射 (UDP) 经由 `server` 访问网络 - 在本地启动一个隧道服务器(UDP 监听 127.0.0.1:5353): ./trp-tunnel -b :5353 -t 8.8.8.8:53 -U 1 -x 1.2.3.4:2222 -k KEY_OF_SERVER - 然后你可以通过 `server` (1.2.3.4) 使用 `8.8.8.8` 进行 DNS 解析,例如: dig -p 5353 @127.0.0.1 www.google.com ### 通过端口映射 (UDP) 经由 `client` 访问网络 - 在本地启动一个隧道服务器(UDP 监听 127.0.0.1:5353): ./trp-tunnel -b :5353 -t 8.8.8.8:53 -U 1 -x 1.2.3.4:2222 -k KEY_OF_SERVER -d DEVID_OF_CLIENT -K KEY_OF_CLIENT - 然后你可以通过 `client` (DEVID_OF_CLIENT) 使用 `8.8.8.8` 进行 DNS 解析,例如: dig -p 5353 @127.0.0.1 www.google.com 注意:支持通过 `-C` 命令选项使用配置文件,参见 [trp.ini](trp.ini)。 ## 许可证 本项目基于 MIT 许可证授权 - 详情请参见 [LICENSE](LICENSE) 文件。
标签:Bash脚本, iptables, LangChain, libuv, SOCKS4, SOCKS5, TCP代理, UDP代理, 内网穿透, 反向代理, 客户端加密, 流量转发, 端口映射, 网络工具, 网络通信, 网络隧道, 轻量级, 远程访问