go实现局域网内网穿透支持将内网80端口暴露到公网单文件代码
代码语言:golang
所属分类:其他
代码描述:go实现局域网内网穿透支持将内网80端口暴露到公网单文件代码,简单易用 - 单文件部署,命令行配置 自动重连- 客户端断线自动重连 心跳保活*- 自动心跳维持连接 多隧道支持** - 支持多个并发连接 跨平台- 支持Linux/Windows/macOS 低延迟 - 直接TCP转发,性能好 稳定可靠- 完善的错误处理和日志
代码标签: go 局域网 内网 穿透 支持 内网 80 端口 暴露 公网 单文件 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
// ## 使用说明 // ### 1. 保存代码 // 将代码保存为 `tunnel.go` // ### 2. 编译(可选) // ```bash // # 编译服务端(Linux) // GOOS=linux GOARCH=amd64 go build -o tunnel-server tunnel.go // # 编译客户端(Windows) // GOOS=windows GOARCH=amd64 go build -o tunnel-client.exe tunnel.go // # 编译客户端(macOS) // GOOS=darwin GOARCH=amd64 go build -o tunnel-client tunnel.go // # 本地编译 // go build -o tunnel tunnel.go // ``` // ### 3. 在公网服务器上运行服务端 // ```bash // # 直接运行 // go run tunnel.go -mode=server -control-port=8888 -public-port=8080 // # 或使用编译后的二进制 // ./tunnel -mode=server -control-port=8888 -public-port=8080 // # 后台运行 // nohup ./tunnel -mode=server -control-port=8888 -public-port=8080 > tunnel.log 2>&1 & // ``` // **参数说明:** // - `-control-port=8888`:客户端连接的控制端口 // - `-public-port=8080`:外部访问的公网端口 // ### 4. 在内网机器上运行客户端 // 假设你的内网有一个HTTP服务运行在80端口: // ```bash // # 直接运行 // go run tunnel.go -mode=client -server-host=1.2.3.4 -control-port=8888 -local-port=80 // # 或使用编译后的二进制 // ./tunnel -mode=client -server-host=1.2.3.4 -control-port=8888 -local-port=80 // # 指定本地服务地址 // ./tunnel -mode=client -server-host=1.2.3.4 -local-host=192.168.1.100 -local-port=8000 // ``` // **参数说明:** // - `-server-host=1.2.3.4`:公网服务器的IP地址(必需) // - `-control-port=8888`:服务器的控制端口 // - `-local-host=127.0.0.1`:本地服务地址(默认127.0.0.1) // - `-local-port=80`:本地服务端口 // ### 5. 访问内网服务 // 在浏览器中访问: // ``` // http://<服务器公网IP>:8080 // ``` // 就可以访问到内网的80端口服务了! // ## 完整示例 // ### 示例1:暴露内网Web服务 // **场景:**内网有一个运行在80端口的Web服务 // **步骤:** // 1. 公网服务器(IP: 1.2.3.4): // ```bash // ./tunnel -mode=server -control-port=8888 -public-port=8080 // ``` // 2. 内网机器: // ```bash // ./tunnel -mode=client -server-host=1.2.3.4 -control-port=8888 -local-port=80 // ``` // 3. 访问:`http://1.2.3.4:8080` // ### 示例2:暴露内网SSH服务 // **场景:**暴露内网22端口的SSH服务 // 1. 公网服务器: // ```bash // ./tunnel -mode=server -control-port=8888 -public-port=2222 // ``` // 2. 内网机器: // ```bash // ./tunnel -mode=client -server-host=1.2.3.4 -control-port=8888 -local-port=22 // ``` // 3. 远程SSH连接: // ```bash // ssh -p 2222 user@1.2.3.4 // ``` // ### 示例3:暴露数据库服务 // **场景:**暴露内网MySQL服务(3306端口) // 1. 公网服务器: // ```bash // ./tunnel -mode=server -control-port=8888 -public-port=3306 // ``` // 2. 内网机器: // ```bash // ./tunnel -mode=client -server-host=1.2.3.4 -control-port=8888 -local-port=3306 // ``` // 3. 远程连接: // ```bash // mysql -h 1.2.3.4 -P 3306 -u root -p // ``` // ## 功能特点 // ✅ **简单易用** - 单文件部署,命令行配置 // ✅ **自动重连** - 客户端断线自动重连 // ✅ **心跳保活** - 自动心跳维持连接 // ✅ **多隧道支持** - 支持多个并发连接 // ✅ **跨平台** - 支持Linux/Windows/macOS // ✅ **低延迟** - 直接TCP转发,性能好 // ✅ **稳定可靠** - 完善的错误处理和日志 // ## 进阶配置 // ### 使用systemd管理服务(Linux) // **服务端配置** `/etc/systemd/system/tunnel-server.service`: // ```ini // [Unit] // Description=Tunnel Server // After=network.target // [Service] // Type=simple // User=root // ExecStart=/usr/local/bin/tunnel -mode=server -control-port=8888 -public-port=8080 // Restart=always // RestartSec=5 // [Install] // WantedBy=multi-user.target // ``` // **客户端配置** `/etc/systemd/system/tunnel-client.service`: // ```ini // [Unit] // Description=Tunnel Client // After=network.target // [Service] // Type=simple // User=root // ExecStart=/usr/local/bin/tunnel -mode=client -server-host=1.2.3.4 -control-port=8888 -.........完整代码请登录后点击上方下载按钮下载查看















网友评论0