笔记簿
ᴄᴏᴅɪɴɢ ɪs ᴀʀᴛ
首页
关于
登录
注册
内网穿透工具 - 一个可用于内网穿透的工具,将局域网个人电脑、服务器映射到公网
> 一个可用于内网穿透的工具,将局域网个人电脑、服务器映射到公网。 > 支持任何TCP上层协议,可用于远程桌面、访问内网网站、SSH访问、远程连接打印机、本地支付接口调试、微信小程序调试... > 支持任何UDP上层协议,可用于DNS转发、游戏服务器代理... > 支持HTTP端口复用,可用于内网反向代理,共用服务端80/443端口。支持HTTP请求升级为WebSocket,HTTP2。 > SSL双端验证,数据加密传输。 > 部署简单,提供桌面客户端。 --- ## 快速体验 Quick Start - 启动服务端 `java -jar rpt-server-*.jar -c server.yml` - 启动客户端(Java版) `java -jar rpt-client-*.jar -c client.yml` - 启动客户端(Go版) `./rpt-client-go -config client.yml -cert client.crt -key pkcs8_client.key -ca ca.crt` ## 服务端配置 `server.yml` ```yaml #服务端绑定IP serverIp: 0.0.0.0 #服务端与客户端通讯端口 serverPort: 6167 #服务端暴露的HTTP重定向端口 为0则不开启 默认值0 httpPort: 80 #服务端暴露的HTTPS复用端口 为0则不开启 默认值0 httpsPort: 0 # 域名证书公钥(需替换) httpsPort为0时不生效 默认值server.crt domainCert: server.crt # 域名证书私钥(需替换) httpsPort为0时不生效 默认值pkcs8_server.key domainKey: pkcs8_server.key # 是否限制连接暴露端口的IP必须在当前地区国家 默认值false ipFilter: true #授权给客户端的秘钥 token: - clientKey: b0cc39c7-1b78-4ff6-9486-020399f569e9 # 限制绑定端口范围 左右闭区间 默认值[1,65535] minPort: 4000 maxPort: 8000 - clientKey: 4befea7e-a61c-4979-b012-47659bab6f21 minPort: 9000 maxPort: 9999 ``` ## 客户端配置 `client.yml` ```yaml #服务端IP serverIp: 127.0.0.1 #服务端与客户端通讯端口 serverPort: 6167 #授权给客户端的秘钥 clientKey: b0cc39c7-1b78-4ff6-9486-020399f569e9 # remotePort与localPort映射配置 config: - # 传输协议类型 (TCP或者HTTP或者UDP) proxyType: TCP # 客户端连接目标IP localIp: 127.0.0.1 # 客户端连接目标端口 localPort: 3389 # 服务暴露端口 remotePort: 4389 # 描述 description: rdp-tcp - proxyType: UDP localIp: 127.0.0.1 localPort: 3389 remotePort: 4389 description: rdp-udp - proxyType: TCP localIp: 127.0.0.1 localPort: 6379 remotePort: 7379 description: redis - proxyType: HTTP localIp: 127.0.0.1 localPort: 8080 # 访问域名(*.domain.com 用二级域名指向 eg:test.domain.com) domain: test.domain.com # 访问资源时登录的账号和密码(账号:密码) 非必填 token: admin:admin description: tomcat ``` ## Go客户端 rpt-client-go > 使用Go语言实现的轻量级客户端,功能与Java客户端一致,支持TCP/UDP/HTTP代理,适合不便安装JVM的环境。 ### 编译 ```shell cd rpt-client-go go build -o rpt-client-go ``` ### 使用 ```shell ./rpt-client-go -config client.yml -cert client.crt -key pkcs8_client.key -ca ca.crt ``` | 参数 | 默认值 | 说明 | | --------- | ------------------ | ------------------ | | `-config` | `client.yml` | 客户端配置文件路径 | | `-cert` | `client.crt` | 客户端证书路径 | | `-key` | `pkcs8_client.key` | 客户端私钥路径 | | `-ca` | `ca.crt` | CA证书路径 | 配置文件格式与Java客户端的 `client.yml`完全相同,支持TCP、UDP、HTTP三种代理类型。 ### 交叉编译 Go客户端支持交叉编译到多种平台,无需依赖JVM: ```shell # Linux amd64 GOOS=linux GOARCH=amd64 go build -o rpt-client-go # Linux arm64 (树莓派等) GOOS=linux GOARCH=arm64 go build -o rpt-client-go # Windows GOOS=windows GOARCH=amd64 go build -o rpt-client-go.exe # macOS GOOS=darwin GOARCH=amd64 go build -o rpt-client-go ``` ### 注册Linux系统服务 创建 `/etc/systemd/system/rpt-client-go.service`: ```ini [Unit] Description=RPT Client Go After=network.target [Service] Type=simple WorkingDirectory=/opt/rpt ExecStart=/opt/rpt/rpt-client-go -config client.yml -cert client.crt -key pkcs8_client.key -ca ca.crt Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` ```shell systemctl enable rpt-client-go systemctl start rpt-client-go ``` --- ## 进阶部署 首先在jar包的当前目录,新建conf文件夹,并将相应的配置文件(`client.yml`或者 `server.yml`)放进去 启动脚本 `start.sh` ```shell java -server -d64 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Dnetworkaddress.cache.ttl=600 \ -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Duser.timezone=Asia/Shanghai -Duser.country=CN \ -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Xbootclasspath/a:./conf \ -jar rpt*.jar > /dev/null 2>&1 & echo $! > pid.file & ``` 关闭脚本 `stop.sh` ```shell kill $(cat pid.file) ``` ## Docker 镜像地址 https://hub.docker.com/r/promptness/rpt-client ## 更新IP库 https://dev.maxmind.com/geoip/geolite2-free-geolocation-data https://github.com/Loyalsoldier/geoip/releases https://github.com/Dreamacro/maxmind-geoip/releases 将下载的Country.mmdb放入server端的conf文件夹中 ## 替换证书 如果需要替换证书则: client端需要在conf文件夹里面放置 `client.crt`和 `pkcs8_client.key`和 `ca.crt` server端需要在conf文件夹里面放置 `server.crt`和 `pkcs8_server.key`和 `ca.crt` ## 注册Windows服务 将rpt-client.jar注册Windows服务可开机自启动 下载 [winsw工具](https://github.com/winsw/winsw/releases) ,将WinSW-x64.exe文件重命名为rpt-client.exe, 和rpt-client.jar放在同一个目录中, 在该目录中新建文件rpt-client.xml文件,写入如下内容 ```xml
rpt-client
rpt-client
rpt-client
java
-server -d64 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Dnetworkaddress.cache.ttl=600 -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Duser.timezone=Asia/Shanghai -Duser.country=CN -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Xbootclasspath/a:./conf -jar rpt-client.jar
``` 执行 `rpt-client.exe install`即可完成注册为Windows服务