Skip to content

jahen/port-forward

port-forward

A port forwarding tool written in Go. Go语言开发的端口转发工具。

开发语言:GO
控制台框架:beego
数据库:sqlite3

最新编译好的版本下载:

https://github.com/jahen/port-forward/releases

功能介绍

支持Web控制台添加端口映射

支持对每条端口映射进行开启和关闭控制

支持 RestfulAPI 接口,方便被其它系统集成

支持每条端口转发的同时,再分发给多个端口,满足某些测试场景

类似企业交换机的功能,即软交换机,主要是方便企业网络维护人员或开发人员

反馈与支持

使用问题或个性化需求,请直接在 GitHub 仓库的 Issues 中提问:
https://github.com/jahen/port-forward/issues

快速安装说明

  1. 下载编译好的程序包,并解压程序包
  2. 执行 start.sh (Linux)或 start.bat (Win)命令
  3. 打开浏览器,进入控制台,打开 http://127.0.0.1:8080/login
  4. 输入用户 admin 密码 123456 进入控制台

源码编译与跨平台构建

本项目发布的 forward-agent.*.zip / forward-server.*.zip 等二进制包,本质上都是通过设置 GOOS / GOARCH 后运行 go build 得到的可执行文件,然后和配置、静态资源一起打包。

使用 Makefile.cross-compiles 一键构建

在仓库根目录可以使用提供的 Makefile.cross-compiles 进行一键构建,所有产物会输出到 ./release/ 目录:

# 构建 forward-server / forward-agent 全平台二进制 + Android AAR
make -f Makefile.cross-compiles all

# 仅构建 forward-server 多平台二进制
make -f Makefile.cross-compiles server

# 仅构建 forward-agent 多平台二进制
make -f Makefile.cross-compiles agent

# 仅构建 Android AAR(portforward.aar)
make -f Makefile.cross-compiles aar

手工编译 forward-server

在仓库根目录:

# Linux / amd64
GOOS=linux   GOARCH=amd64 go build -o forward-server   ./forward-server

# Windows / amd64
GOOS=windows GOARCH=amd64 go build -o forward-server.exe ./forward-server

# macOS / amd64
GOOS=darwin  GOARCH=amd64 go build -o forward-server   ./forward-server

手工编译 forward-agent

# Linux / amd64
GOOS=linux   GOARCH=amd64 go build -o forward-agent   ./forward-agent

# Windows / amd64(等价于 forward-agent/build_win.bat)
GOOS=windows GOARCH=amd64 go build -o forward-agent.exe ./forward-agent

# Linux / arm / arm64
GOOS=linux   GOARCH=arm   GOARM=7  go build -o forward-agent.arm   ./forward-agent
GOOS=linux   GOARCH=arm64          go build -o forward-agent.arm64 ./forward-agent

你也可以直接使用仓库中自带的脚本(作用等价于上面的命令):

  • forward-server/build_linux.shforward-server/build_linux.batforward-server/build_win.batforward-server/build_mac.bat
  • forward-agent/build_linux.shforward-agent/build_linux.batforward-agent/build_win.batforward-agent/build_mac.bat

Android AAR 打包与使用

本项目支持使用 gomobile bind 打包为 Android .aar,在移动端中直接嵌入端口转发服务。

1. 环境准备

go env -w GO111MODULE=on

go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init

# 如遇到缺少 bind 包的错误,可手动补充:
go get golang.org/x/mobile/bind@latest

2. 在 forward-agent 模块中生成 AAR

在仓库根目录执行:

cd forward-agent
gomobile bind -target=android -o portforward.aar ./mobile

生成的 portforward.aar 同时包含:

  • forward-agent 的 Agent 客户端逻辑;
  • forward-server 的 Web 控制台和端口转发服务逻辑。

3. 在 Android 项目中使用(示意)

  1. portforward.aar 拷贝到 Android 工程的 app/libs/ 目录。
  2. app/build.gradle 中添加依赖:
dependencies {
    implementation files('libs/portforward.aar')
}
  1. Kotlin 代码中调用(类名以实际 gomobile 生成结果为准,下面示意为 Mobile):
// forward-agent/conf/app.conf,从配置读取 magic.server,未设置则使用默认值 "forward.apiclub.top:7000"
Mobile.startAgent()

// 将 Agent 端完整配置内容作为参数传入(等价于一份 app.conf):
Mobile.startAgentFromConfLine("""
magic.server = "forward.apiclub.top:7000"
""".trimIndent())

// 启动 Web 控制台和转发服务(使用 forward-server/conf/app.conf + data.conf)
// 会阻塞当前线程,建议放后台线程
Thread {
    Mobile.startServer()
}.start()

// 同样地,你也可以将 Server 端完整配置内容作为参数传入:
// 不能写 include "data.conf",需要把 data.conf 的内容直接合并进这段配置文本中。
Thread {
    Mobile.startServerFromConfLine("""
app.name = "PortForward"
app.cname = "端口转发系统"
servername = "PortForward-Server"
runmode ="dev"
#runmode ="prod"
viewspath = "views"
#logfile.config = "close"

[dev]
httpaddr = "0.0.0.0"
httpport = 8080
recoverpanic = false
[prod]
httpaddr = "0.0.0.0"
httpport = 8081
recoverpanic = true
graceful = true

magic.service = ":7000"
api.auth = "26CCD056107481F45D1AC805A24A9E59"
agent.auth = "722ED8F8D9900CC1AB17243DC7B51A2D"
onstart.forward = "false"
""".trimIndent())
}.start()

License

  • 项目主许可证:本仓库的修改版整体在 LICENSE 所示的 Apache License 2.0 下分发。
  • 第三方组件:本项目基于原项目 port-forward 进行修改,
    其中来自原项目的部分代码依然遵循 Mulan Permissive Software License v2 (MulanPSL-2.0)
    其完整文本见 LICENSE-MulanPSL2.0

控制台UI

登录

转发列表

端口转发配置

接口文档

About

A port forwarding tool written in Go. Go语言开发的端口转发工具。

Resources

License

Apache-2.0, MulanPSL-2.0 licenses found

Licenses found

Apache-2.0
LICENSE
MulanPSL-2.0
LICENSE-MulanPSL2.0

Stars

Watchers

Forks

Packages

 
 
 

Contributors