#转发 #代理 #网络 #tcp端口

应用 portproxy

简单的端口转发工具

7 个版本

0.3.2 2024年4月4日
0.3.2-alpha.22023年11月16日
0.3.1 2023年4月6日
0.2.0 2022年10月11日
0.1.0 2022年9月13日

#1076网络编程

Download history 1/week @ 2024-05-14 8/week @ 2024-05-21

每月下载量 399

MIT 许可证

25KB
281

portproxy

简单的端口转发工具,使用 tokio-rs 🦀 构建

github Crates.io

它做什么?

基本上与 Windows 的 netsh interface portproxy 或 Linux 的 iptables 转发相同 - 它将来自 listen 本地地址和端口的传入连接映射到远程 connect 地址和端口。

目前仅支持 TCP 端口转发。

此工具目前没有提供比原生操作系统工具更多功能,可能除了统一和简化映射定义之外。另一个值得注意的用例是那些原生端口转发工具无法使用的罕见情况(例如,Windows 的 netsh portproxy 需要系统启用 IPv6)。

安装

Cargo

cargo install portproxy

从源代码

克隆仓库并编译

git clone https://github.com/spitfire05/portproxy.git
cd portproxy
cargo install

预编译的二进制文件

此仓库的发布部分提供 Windows 二进制文件。

配置

配置以 TOML 语言指定。

portproxy 将尝试以下顺序读取配置路径

  1. --config CLI 参数,如果设置
  2. 环境变量 PORTPROXY_CONFIG 的值,如果设置
  3. ~/.config/portproxy.toml

配置应包含一个或多个 [[proxy]] 元素,这些元素定义端口映射

[[proxy]]
listen = "localhost:8080"        # local address to listen on
connect = "some-server.lan:8485" # remote (or local) address to connect to

运行

运行很简单 - 只需调用 portproxy 二进制文件。还有一些可选的标志/参数

Usage: portproxy [OPTIONS]

Options:
  -c, --config-path <CONFIG_PATH>  Path to read the config from. If not set, will fall back to value of $PORTPROXY_CONFIG, and "~/.config/portproxy.toml", in that order
  -l, --log-level <LOG_LEVEL>      [default: info] [possible values: error, warn, info, debug, trace]
  -d, --log-dir <LOG_DIR>          Directory to write the log files to. Logging to file will be disabled if this is not set
  -h, --help                       Print help
  -V, --version                    Print version

作为服务/守护进程

Windows

使用 Shawl 创建 portproxy 的 Windows 服务。

shawl add --no-restart --no-log --name portproxy -- C:\full\path\to\portproxy.exe --log-level debug --log-dir C:\full\path\to\logs\directory <optional args>

依赖关系

~143MB
~2.5M SLoC