iamlinhui
rpt
Java

内网穿透&反向代理 (支持TCP/UDP上层协议,支持HTTP/HTTPS端口复用)

Last updated May 29, 2026
92
Stars
28
Forks
0
Issues
0
Stars/day
Attention Score
42
Language breakdown
No language data available.
Files click to expand
README

rpt

RPT - Reverse Proxy Tool

一个高性能的内网穿透工具,将局域网个人电脑、服务器代理映射到公网

version license java go netty


📖 目录


🚀 项目简介

RPT (Reverse Proxy Tool) 是一款基于 Netty 的内网穿透工具,通过在公网服务器与内网客户端之间建立安全隧道,将内网服务暴露到公网,实现外部访问。

工作原理

sequenceDiagram
    participant U as 🌐 外部用户
    participant S as 🖥️ rpt-server (公网)
    participant C as 💻 rpt-client (内网)
    participant L as 🏠 内网服务

Note over C,S: 1️⃣ 建立连接阶段 C->>S: SSL 双向认证握手 S->>S: 验证客户端证书 + Token S-->>C: 认证通过,隧道建立 C->>S: 上报端口映射配置 (TCP/UDP/HTTP) S->>S: 绑定公网端口 & 注册域名路由

Note over U,L: 2️⃣ TCP/UDP 代理流程 U->>S: 连接公网 remotePort (如 4389) S->>S: 匹配端口映射规则 & IP地域过滤 S->>C: 通过 SSL 隧道转发请求 C->>L: 连接本地服务 localIp:localPort (如 127.0.0.1:3389) L-->>C: 返回响应数据 C-->>S: 通过 SSL 隧道回传 S-->>U: 返回给外部用户

Note over U,L: 3️⃣ HTTP 代理流程 (端口复用) U->>S: HTTP 请求 test.domain.com:80 S->>S: 解析 Host 域名路由 & Basic Auth 验证 S->>C: 通过 SSL 隧道转发 HTTP 请求 C->>L: 转发到本地 Web 服务 (如 127.0.0.1:8080) L-->>C: 返回 HTTP 响应 C-->>S: 通过 SSL 隧道回传 S-->>U: 返回 HTTP 响应

Note over U,L: 4️⃣ 连接保活 loop 心跳检测 C->>S: 心跳包 S-->>C: 心跳响应 end

graph TB
    subgraph "公网服务器 rpt-server"
        S["rpt-server<br/>Netty 服务端"]
        S --> TCP_BIND["TCP 端口监听<br/>remotePort: 4389, 7379..."]
        S --> UDP_BIND["UDP 端口监听<br/>remotePort: 4389..."]
        S --> HTTP_BIND["HTTP/HTTPS 端口复用<br/>80 / 443"]
        HTTP_BIND --> ROUTE["域名路由<br/>Host → 客户端映射"]
        S --> AUTH["Token 授权<br/>端口范围限制"]
        S --> GEO["IP 地域过滤<br/>MaxMind GeoIP"]
        S --> DASH["Dashboard 管理面板<br/>流量统计 / 流速监控"]
        S --> SSL_S["SSL 双向认证"]
    end

subgraph "SSL 加密隧道" TUNNEL["🔒 加密数据通道<br/>Protostuff 序列化"] end

subgraph "内网环境 rpt-client" C["rpt-client<br/>Netty / Go 客户端"] C --> P1["代理连接池"] P1 --> RDP["远程桌面<br/>127.0.0.1:3389"] P1 --> SSH["SSH 服务<br/>127.0.0.1:22"] P1 --> WEB["Web 应用<br/>127.0.0.1:8080"] P1 --> DB["数据库<br/>127.0.0.1:3306"] P1 --> OTHER["其他服务<br/>FTP/SMTP/打印机..."] end

SSL_S <--> TUNNEL TUNNEL <--> C


✨ 功能特性

| 特性 | 说明 | |------|------| | 🔌 TCP 代理 | 支持任何 TCP 上层协议:RDP远程桌面、SSH、FTP、数据库连接等 | | 📡 UDP 代理 | 支持任何 UDP 上层协议:DNS转发、游戏服务器代理等 | | 🌐 HTTP 端口复用 | 多个客户端共用服务端 80/443 端口,通过域名区分路由 | | 🔒 SSL 双向认证 | 客户端与服务端双向 SSL 验证,数据加密传输 | | 🌍 IP 地域过滤 | 基于 MaxMind GeoIP 数据库限制访问来源国家 | | 🔑 Token 授权 | 每个客户端独立密钥,可限制端口绑定范围 | | ⬆️ 协议升级 | HTTP 请求支持升级为 WebSocket、HTTP/2 | | 📊 Dashboard | 内置 Web 管理面板,实时监控在线客户端、流量统计、流速监控 | | ⚡ 零拷贝传输 | 基于 Netty ByteBuf retainedSlice 全链路零拷贝,堆外内存直接转发 | | 🔄 断线自动重连 | 客户端指数退避自动重连 + 心跳保活,网络波动后自动恢复隧道 | | 🖥️ 桌面客户端 | 提供 GUI 桌面客户端,开箱即用 | | 🐳 Docker 部署 | 提供 Docker 镜像,一键启动 | | 🐹 Go 客户端 | 轻量级 Go 实现,无需 JVM 环境 |


🏗️ 项目架构

rpt/
├── rpt-base/          # 基础模块 - 公共协议、编解码、工具类
├── rpt-server/        # 服务端 (Java) - 部署在公网服务器
├── rpt-client/        # 客户端 (Java) - 部署在内网机器
├── rpt-client-go/     # 客户端 (Go) - 轻量级Go实现
├── rpt-desktop/       # 桌面客户端 (JavaFX)
├── rpt-desktop-go/    # 桌面客户端 (Wails + Go)
└── doc/               # 文档资源

技术栈

| 组件 | 技术 | |------|------| | 服务端 | Java 8+, Netty 4.1, Protostuff | | Java 客户端 | Java 8+, Netty 4.1 | | Go 客户端 | Go 1.20+ | | 桌面客户端 | Wails (Go + Web前端) | | 序列化 | Protostuff | | 配置文件 | YAML (SnakeYAML / Jackson) | | 日志 | Logback | | IP 地域库 | MaxMind GeoIP2 | | 构建工具 | Maven / Go Modules |


🎯 使用场景

  • 远程桌面 — 在外网通过 RDP 远程连接公司/家中电脑
  • Web 开发调试 — 本地支付接口回调调试、微信公众号/小程序本地调试
  • SSH 远程访问 — 远程连接内网 Linux 服务器
  • 数据库连接 — 远程连接内网 MySQL、Redis 等数据库
  • HTTP 反向代理 — 共享 80/443 端口为多个内网 Web 服务提供公网访问
  • DNS 转发 — UDP 代理实现 DNS 请求转发
  • 游戏联机 — 代理游戏服务器实现公网联机
  • 打印机共享 — 远程连接内网打印机

⚡ 快速开始

前置条件

| 组件 | 要求 | |------|------| | 公网服务器 | 一台具有公网 IP 的服务器 | | Java 客户端 | JDK/JRE 8+ | | Go 客户端 | 无需额外运行环境 (独立二进制) | | 服务端 | JDK/JRE 8+ |

第一步:编译构建

# 克隆项目
git clone https://github.com/iamlinhui/rpt.git
cd rpt

构建 Java 服务端和客户端

mvn clean package -Dmaven.test.skip=true

构建 Go 客户端 (可选)

cd rpt-client-go go build -o rpt-client-go

第二步:部署服务端

rpt-server/target/rpt-server-*.jarserver.yml 上传到公网服务器:

java -jar rpt-server-2.6.1.jar -c server.yml

第三步:启动客户端

Java 客户端:

java -jar rpt-client-2.6.1.jar -c client.yml

Go 客户端:

./rpt-client-go -config client.yml

第四步:验证连接

客户端启动后会自动连接服务端并注册端口映射。例如配置了 localPort: 3389 → remotePort: 4389,则可以通过 公网IP:4389 访问内网的 3389 端口服务。


🖥️ GUI 桌面客户端

提供基于 Wails 的图形界面客户端,无需手动编辑配置文件。

| 界面 | 截图 | |------|------| | 主界面 | main | | 系统配置 | config | | TCP 映射配置 | tcp | | HTTP 映射配置 | http | | 删除映射配置 | delete | | 控制台输出 | start |

编译桌面客户端

cd rpt-desktop-go
wails build

编译后的可执行文件在 build/bin/ 目录下。


📝 配置详解

服务端配置 server.yml

# 服务端绑定IP (0.0.0.0表示监听所有网卡)
serverIp: 0.0.0.0

服务端与客户端通讯端口

serverPort: 6167

服务端CA证书路径 (默认ca.crt)

serverCaPath: ca.crt

服务端证书路径 (默认server.crt)

serverCertPath: server.crt

服务端私钥路径 (默认pkcs8_server.key)

serverKeyPath: pkcs8_server.key

HTTP重定向端口 (为0则不开启,默认0)

httpPort: 80

HTTPS复用端口 (为0则不开启,默认0)

httpsPort: 443

域名证书公钥 (httpsPort为0时不生效)

domainCert: domain.crt

域名证书私钥 (httpsPort为0时不生效)

domainKey: pkcs8_domain.key

是否限制连接暴露端口的IP必须在当前地区国家 (默认false)

ipFilter: true

Dashboard管理面板端口 (为0则不开启,默认0)

dashboardPort: 8000

Dashboard登录账号

dashboardUser: admin

Dashboard登录密码

dashboardPassword: admin

客户端授权Token列表

token: - clientKey: b0cc39c7-1b78-4ff6-9486-020399f569e9 minPort: 4000 # 允许绑定的最小端口 (默认1024) maxPort: 8000 # 允许绑定的最大端口 (默认65535) - clientKey: 4befea7e-a61c-4979-b012-47659bab6f21 minPort: 9000 maxPort: 9999

服务端配置参数说明

| 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | serverIp | String | 0.0.0.0 | 服务端绑定的IP地址 | | serverPort | int | 6167 | 服务端与客户端通讯端口 | | serverCaPath | String | ca.crt | 服务端CA证书路径 | | serverCertPath | String | server.crt | 服务端证书路径 | | serverKeyPath | String | pkcs8_server.key | 服务端私钥路径 | | httpPort | int | 0 | HTTP重定向端口,为0不开启 | | httpsPort | int | 0 | HTTPS复用端口,为0不开启 | | domainCert | String | server.crt | 域名证书公钥路径 | | domainKey | String | pkcs8_server.key | 域名证书私钥路径 | | ipFilter | boolean | false | 是否启用IP地域过滤 | | dashboardPort | int | 0 | Dashboard管理面板端口,为0不开启 | | dashboardUser | String | - | Dashboard登录账号 | | dashboardPassword | String | - | Dashboard登录密码 | | token[].clientKey | String | - | 客户端授权密钥 (UUID) | | token[].minPort | int | 1024 | 允许绑定的最小端口号 | | token[].maxPort | int | 65535 | 允许绑定的最大端口号 |

客户端配置 client.yml

# 服务端IP (公网服务器IP或域名)
serverIp: 123.45.67.89

服务端通讯端口 (与server.yml的serverPort一致)

serverPort: 6167

客户端CA证书路径 (默认ca.crt)

clientCaPath: ca.crt

客户端证书路径 (默认client.crt)

clientCertPath: client.crt

客户端私钥路径 (默认pkcs8_client.key)

clientKeyPath: pkcs8_client.key

授权密钥 (与server.yml中token列表对应)

clientKey: b0cc39c7-1b78-4ff6-9486-020399f569e9

端口映射配置列表

config: # TCP代理示例:远程桌面 - proxyType: TCP localIp: 127.0.0.1 localPort: 3389 remotePort: 4389 description: rdp-tcp

# UDP代理示例:远程桌面UDP - proxyType: UDP localIp: 127.0.0.1 localPort: 3389 remotePort: 4389 description: rdp-udp

# TCP代理示例:Redis - proxyType: TCP localIp: 127.0.0.1 localPort: 6379 remotePort: 7379 description: redis

# HTTP代理示例:Web应用 - proxyType: HTTP localIp: 127.0.0.1 localPort: 8080 domain: test.domain.com # 访问域名 token: admin:admin # Basic认证 (可选) description: tomcat

客户端配置参数说明

| 参数 | 类型 | 说明 | |------|------|------| | serverIp | String | 服务端公网IP或域名 | | serverPort | int | 服务端通讯端口 | | clientCaPath | String | 客户端CA证书路径(默认 ca.crt) | | clientCertPath | String | 客户端证书路径(默认 client.crt) | | clientKeyPath | String | 客户端私钥路径(默认 pkcs8_client.key) | | clientKey | String | 客户端授权密钥 | | config[].proxyType | String | 代理类型:TCP / UDP / HTTP | | config[].localIp | String | 内网目标服务IP | | config[].localPort | int | 内网目标服务端口 | | config[].remotePort | int | 服务端暴露端口 (TCP/UDP模式) | | config[].domain | String | 访问域名 (HTTP模式,支持 *.domain.com 通配符) | | config[].token | String | HTTP Basic 认证 用户名:密码 (可选) | | config[].description | String | 映射描述信息 |

三种代理类型对比

| 类型 | 协议 | 端口 | 域名 | 适用场景 | |------|------|------|------|----------| | TCP | TCP | 需要指定 remotePort | 不需要 | RDP、SSH、数据库、FTP 等 | | UDP | UDP | 需要指定 remotePort | 不需要 | DNS转发、游戏服务器 等 | | HTTP | HTTP/HTTPS | 复用服务端 80/443 端口 | 需要配置 domain | Web应用、API接口 等 |


📦 部署指南

方式一:直接运行 (推荐快速体验)

# 服务端
java -jar rpt-server-2.6.1.jar -c server.yml

客户端

java -jar rpt-client-2.6.1.jar -c client.yml

方式二:生产环境部署 (Java)

在 jar 包的当前目录下,新建 conf 文件夹,将配置文件和证书放入其中。

目录结构

/opt/rpt-server/
├── rpt-server-2.6.1.jar
├── conf/
│   ├── server.yml
│   ├── ca.crt
│   ├── server.crt
│   ├── pkcs8_server.key
│   ├── domain.crt          # HTTPS域名证书 (可选)
│   ├── pkcs8_domain.key    # HTTPS域名私钥 (可选)
│   └── Country.mmdb        # GeoIP数据库 (可选)
└── logs/

/opt/rpt-client/ ├── rpt-client-2.6.1.jar ├── conf/ │ ├── client.yml │ ├── ca.crt │ ├── client.crt │ └── pkcs8_client.key └── logs/

启动脚本 start.sh

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

kill $(cat pid.file)

方式三:Docker 部署

rpt-server

# 1. 构建镜像
cd rpt-server
mvn clean package -Dmaven.test.skip=true
docker build -f Dockerfile -t rpt-server .

2. 准备配置文件目录

mkdir -p /opt/rpt/conf

将 server.yml、ca.crt、server.crt、pkcs8_server.key 放入 /opt/rpt/conf/

如需 HTTPS: 放入 domain.crt、pkcs8_domain.key

如需 IP 过滤: 放入 Country.mmdb

3. 启动容器 (host 网络模式,直接暴露所有端口)

docker run -d \ --network host \ -v /opt/rpt/conf:/home/rpt/conf \ --restart=always \ --name rpt-server \ rpt-server

或者指定端口映射

docker run -d \ -p 6167:6167 \ -p 80:80 \ -p 443:443 \ -p 8000:8000 \ -p 4000-9999:4000-9999 \ -v /opt/rpt/conf:/home/rpt/conf \ --restart=always \ --name rpt-server \ rpt-server

rpt-client (Java)

# 1. 构建镜像
cd rpt-client
mvn clean package -Dmaven.test.skip=true
docker build -f Dockerfile -t rpt-client .

2. 准备配置文件目录

mkdir -p /opt/rpt/conf

将 client.yml、ca.crt、client.crt、pkcs8_client.key 放入 /opt/rpt/conf/

3. 启动容器

docker run -d \ --network host \ -v /opt/rpt/conf:/home/rpt/conf \ --restart=always \ --name rpt-client \ rpt-client

rpt-client-go

# 1. 构建镜像
cd rpt-client-go
docker build -f Dockerfile -t rpt-client-go .

2. 准备配置文件目录

mkdir -p /opt/rpt/conf

将 client.yml、ca.crt、client.crt、pkcs8_client.key 放入 /opt/rpt/conf/

3. 启动容器

docker run -d \ --network host \ -v /opt/rpt/conf:/home/rpt/conf \ --restart=always \ --name rpt-client-go \ rpt-client-go
提示:客户端使用 --network host 模式时可直接访问宿主机的本地服务(如 127.0.0.1:3389)。若不使用 host 模式,localIp 需改为宿主机的 Docker 网桥 IP(通常为 172.17.0.1)或使用 host.docker.internal

使用 Docker Hub 镜像(免构建)

# rpt-server
docker run -d --network host -v /opt/rpt/conf:/home/rpt/conf --restart=always --name rpt-server promptness/rpt-server:2.6.1

rpt-client (Java)

docker run -d --network host -v /opt/rpt/conf:/home/rpt/conf --restart=always --name rpt-client promptness/rpt-client:2.6.1

rpt-client-go

docker run -d --network host -v /opt/rpt/conf:/home/rpt/conf --restart=always --name rpt-client-go promptness/rpt-client-go:2.6.1

Docker Hub 镜像地址:

  • https://hub.docker.com/r/promptness/rpt-server
  • https://hub.docker.com/r/promptness/rpt-client
  • https://hub.docker.com/r/promptness/rpt-client-go

方式四:注册 Linux 系统服务

Go 客户端 systemd 服务

创建 /etc/systemd/system/rpt-client-go.service

[Unit]
Description=RPT Client Go
After=network.target

[Service] Type=simple WorkingDirectory=/opt/rpt ExecStart=/opt/rpt/rpt-client-go -config client.yml Restart=always RestartSec=5

[Install] WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable rpt-client-go
sudo systemctl start rpt-client-go
sudo systemctl status rpt-client-go

Java 客户端 systemd 服务

创建 /etc/systemd/system/rpt-client.service

[Unit]
Description=RPT Client Java
After=network.target

[Service] Type=simple WorkingDirectory=/opt/rpt-client ExecStart=/usr/bin/java -server -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Dnetworkaddress.cache.ttl=600 -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Xbootclasspath/a:./conf -jar rpt-client-2.6.1.jar Restart=always RestartSec=5

[Install] WantedBy=multi-user.target

方式五:注册 Windows 服务

  • 下载 WinSW,将 WinSW-x64.exe 重命名为 rpt-client.exe
  • rpt-client.jar 放在同一目录
  • 创建 rpt-client.xml
<service>
    <id>rpt-client</id>
    <name>rpt-client</name>
    <description>RPT Client - Reverse Proxy Tool</description>
    <executable>java</executable>
    <arguments>-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</arguments>
</service>
  • 执行注册:
rpt-client.exe install
rpt-client.exe start

📊 Dashboard 管理面板

服务端内置 Web Dashboard,提供实时监控和管理功能。

开启方式

server.yml 中配置 dashboardPort 为非零端口即可:

dashboardPort: 8000
dashboardUser: admin
dashboardPassword: admin

启动服务端后访问 http://服务器IP:8000,输入账号密码即可进入。

功能

| 功能 | 说明 | |------|------| | 服务状态 | 运行时间、在线客户端数、历史连接数 | | 客户端列表 | 查看所有在线客户端的 ClientKey、远程地址、连接时间、代理端口 | | 流量统计 | 每个客户端的入站/出站总流量 | | 实时流速 | 基于 5 秒滑动窗口的入站/出站实时流速 | | 域名绑定 | 查看 HTTP 代理的域名路由和在线状态 | | 踢出客户端 | 一键断开指定客户端连接 | | 自动刷新 | 页面每 5 秒自动刷新数据 | | 响应式布局 | 支持 PC 和移动端访问 |

REST API

| 方法 | 路径 | 说明 | |------|------|------| | GET | /api/status | 服务状态 | | GET | /api/clients | 在线客户端列表 | | DELETE | /api/clients/{id} | 踢出指定客户端 | | GET | /api/domains | HTTP 域名绑定列表 |


🐹 Go 客户端

使用 Go 语言实现的轻量级客户端,功能与 Java 客户端一致,适合不便安装 JVM 的环境。

命令行参数

| 参数 | 默认值 | 说明 | |------|--------|------| | -config | client.yml | 客户端配置文件路径 |

证书路径已移至 client.yml 配置文件中(clientCaPathclientCertPathclientKeyPath),不配置则使用默认值。

编译

cd rpt-client-go
go build -o rpt-client-go

交叉编译

# 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 (Intel)

GOOS=darwin GOARCH=amd64 go build -o rpt-client-go

macOS (Apple Silicon)

GOOS=darwin GOARCH=arm64 go build -o rpt-client-go

🔐 SSL 证书

RPT 使用 SSL 双向认证确保通讯安全。项目自带测试用证书,生产环境请务必替换

证书生成流程

自建CA → 生成服务端/客户端私钥 → 生成CSR → 签发x509证书 → PKCS#8编码

1. 安装 OpenSSL

  • Linux: apt install opensslyum install openssl
  • Windows: 下载 Win32OpenSSL
  • macOS: brew install openssl

2. 建立 CA

openssl req -new -x509 -keyout ca.key -out ca.crt -days 36500

3. 生成私钥

# 服务端
openssl genrsa -des3 -out server.key 1024

客户端

openssl genrsa -des3 -out client.key 1024

4. 生成 CSR

# 服务端
openssl req -new -key server.key -out server.csr

客户端

openssl req -new -key client.key -out client.csr
⚠️ 如果生成 server.csr 后再生成 client.csr 提示错误,请关闭当前终端重新打开执行。

5. 签发证书

# 服务端
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

客户端

openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt

6. PKCS#8 编码

# 服务端
openssl pkcs8 -topk8 -in server.key -out pkcs8_server.key -nocrypt

客户端

openssl pkcs8 -topk8 -in client.key -out pkcs8_client.key -nocrypt

证书分发

| 端 | 所需文件 | |----|----------| | Server | ca.crtserver.crtpkcs8_server.key | | Client | ca.crtclient.crtpkcs8_client.key |

⚠️ Server 和 Client 使用同一个 ca.crt,即由同一 CA 签发。

🔄 更新 IP 地域库

服务端支持基于 MaxMind GeoIP 数据库的 IP 地域过滤功能。

下载地址:

将下载的 Country.mmdb 放入服务端的 conf 文件夹中。


❓ 常见问题

Q: 客户端连接不上服务端?

  • 检查服务端防火墙是否开放 serverPort 端口(默认 6167)
  • 检查 client.ymlserverIpserverPort 是否正确
  • 检查 clientKey 是否与服务端 token 列表匹配
  • 检查 SSL 证书是否由同一 CA 签发

Q: TCP 端口映射后无法访问?

  • 检查服务端防火墙是否开放 remotePort 对应端口
  • 检查 remotePort 是否在服务端 token 配置的 minPort ~ maxPort 范围内
  • 检查内网目标服务是否正常运行
  • 如果启用了 ipFilter,确认访问者 IP 所在国家是否匹配

Q: HTTP 代理如何配置域名?

  • 将域名 DNS 解析到公网服务器 IP(A 记录)
  • 支持通配符域名 *.domain.com,例如 test.domain.com
  • 客户端 client.ymldomain 字段填写完整域名
  • 服务端需开启 httpPorthttpsPort

Q: JavaFX 桌面客户端界面变黑?

JavaFX 硬件渲染在屏幕分辨率变化时可能出现控件变黑问题,添加 JVM 参数启用软件渲染:

-Dprism.order=sw

Q: 如何使用 HTTPS?

  • 申请域名 SSL 证书(如 Let's Encrypt)
  • 将证书公钥和私钥(PKCS#8 格式)放入服务端 conf 目录
  • server.yml 中配置 httpsPortdomainCertdomainKey

📋 支持的 TCP 上层协议

| 协议 | 用途 | |------|------| | HTTP/HTTPS | Web 浏览 | | FTP | 文件传输 | | SSH | 安全远程登录 | | RDP | 远程桌面 | | SMTP/POP3 | 邮件收发 | | Telnet | 远程登录 | | SOCKS | 代理协议 |


📋 TODO

  • [x] Dashboard 管理面板(流量统计、流速监控、客户端管理)
  • [ ] 集群运维版本

⭐ Star History

Star History Chart


📄 License

MIT License

🔗 More in this category

© 2026 GitRepoTrend · iamlinhui/rpt · Updated daily from GitHub