# goodlink
**Repository Path**: konyshe/goodlink
## Basic Information
- **Project Name**: goodlink
- **Description**: 排名前面的都不用看了。
全网最简单、零成本的内网穿透,一条命令将互联网任意两台主机直连!无需公网IP中转、无需安装、无需注册。IP直连,不限端口
- **Primary Language**: Go
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://goodlink.kony.vip
- **GVP Project**: No
## Statistics
- **Stars**: 782
- **Forks**: 170
- **Created**: 2024-06-18
- **Last Updated**: 2025-09-04
## Categories & Tags
**Categories**: networklib
**Tags**: 异地组网, NAT穿透, 内网穿透, 直连, 穿透
## README
## 🎯 项目简介
**GoodLink** 是全网最简单、零成本的内网穿透,一条命令将互联网任意两台主机直连!无需公网IP中转、无需安装、无需注册。IP直连,不限端口。
### 💡 解决的问题
- 外出办公时如何使用Windows自带的远程桌面?
- 如何在外网直接访问公司内网的WEB、GIT、SSH等服务?
- 如何避免第三方服务器带来的数据安全风险?
### ⚖️ 免责声明
> **重要提醒**:本项目仅供学习研究使用,严禁用于任何违法行为!
>
> 项目目前为开源免费,如未来有商业化计划将提前告知社区。
### 🏆 项目荣誉
> **特别通知**:本项目已被邀请参与【GitCode百大项目】评选!
>
> 欢迎 [点击这里](https://gitcode.com/konyshe/goodlink/issues) 提出问题或需求,帮助项目发展的同时有机会获得奖品!
## ✨ 核心特点
### 🔒 **点对点直连**
- **真正的P2P连接**:两台主机直接连接,数据不经过任何第三方服务器
- **数据安全保障**:所有通信数据端到端加密,无数据泄露风险
- **低延迟传输**:直连模式确保最佳的网络性能
### 🚀 **开箱即用**
- **零配置部署**:一条命令即可启动,无需复杂配置
- **免安装使用**:绿色软件,下载即用
- **无需公网IP**:利用NAT穿透技术,普通家庭网络即可使用
- **跨平台支持**:支持Windows、Linux、Docker多种部署方式
GoodLink工作原理示意图
### 🏗️ 架构说明
#### 🔗 连接模式
- **Remote端**:作为服务提供方,接受连接
- **Local端**:作为客户端,发起连接
- **连接方向**:Local端 → Remote端(单向访问)
- **连接数量**:多个Local端可连接同一Remote端,但Local端不能同时连接多个Remote端
#### 🔑 安全认证
- 通过共享密钥(`--key`)建立连接
- **安全提醒**:请使用16-24字节的随机密钥,切勿使用示例密钥
#### 💻 部署选项
| 平台 | 支持方式 | 推荐程度 | 说明 |
|------|----------|----------|------|
| Windows | 命令行 / UI界面 | ⭐⭐⭐⭐⭐ | 命令行版本更稳定 |
| Linux | 命令行 / Docker | ⭐⭐⭐⭐⭐ | 支持 |
| macOS | 命令行 | ⭐⭐⭐⭐ | v2暂不支持 |
### 📡 NAT兼容性
| Remote端NAT | Local端NAT | P2P连接 | 说明 |
|-------------|------------|---------|------|
| NAT1-3 | NAT1-4 | ✅ 支持 | 推荐配置 |
| NAT1-4 | NAT1-3 | ✅ 支持 | 推荐配置 |
| NAT4 | NAT4 | ⚠️ 不保证 | 可能需要中继 |
| 移动网络 | 移动网络 | ❌ 不支持 | 运营商限制 |
### 🛡️ 安全提醒
- **Windows Defender**:可能误报病毒,请添加信任
- **开源透明**:所有代码公开,可自行审查
- **数据安全**:点对点加密,无中间人攻击风险
- **详细安全说明**:[查看安全分析](https://gitee.com/konyshe/goodlink/issues/IBFKC2)
### 📝 使用限制
- **Local端限制**:每台设备只能运行一个Local端实例
- **虚拟网卡**:Local端需要管理员权限创建虚拟网卡
- **项目状态**:早期版本,欢迎反馈问题和建议
## ⚠️ 其他重要说明
1. **关闭路由器防火墙**,建议设置DMZ为本机IP
2. **NAT类型优化**:如3分钟内无法建立连接,请联系运营商客服修改NAT类型
- 电信:10000 | 移动:10086 | 联通:10010
- 优先级:NAT1 > NAT2 > NAT3 > NAT4
3. **如超过3分钟无法直连,找客服(电信10000,移动10086,联通10010)改NAT类型,优先NAT1>NAT2>NAT3**
4. 本程序即支持命令行方式, 也支持 docker 方式, windows 还有UI版本(但cmd版本更稳定、性能更高、内存占用非常小), 可随意搭配
5. 两端主机运行同一个程序 / Docker, 一端使用--remote 选项(以下称 remote 端), 另一端使用--local 选项(以下称 local 端)
6. 可以在 local 端访问 remote 端, 但是反过来不可以
7. 可以无限个 local 端连接同一个 remote 端, 但一个 local 端不能同时连接多个 remote 端。通过相同的密钥(--key)确认连接关系
8. 由于Local端需要创建虚拟网卡,因此一个PC端只能运行一个 local 端,确定右下角任务栏只能一个GoodLink图标
9. 以下举例说明中的密钥(--key), 请不要使用, 否则会连上别人的 remote 端, 或者被别人的 local 端连上。自己随机一个 16-24 字节长度的密钥
10. 该项目刚刚起步, 可能不太稳定, 欢迎提出ISSUES, 帮忙测试的同学将保证永久免费使用
## 🔧 工作模式
> **双模式并行**:以下两种模式同时工作,无需选择,提供最大的灵活性
### 🌐 TUN模式(虚拟网卡)
**工作原理**
- Local端创建虚拟网卡,建立透明的网络隧道
- 需要管理员权限运行
- 连接成功后显示Remote端IP地址
**使用场景**
```bash
# 示例:使用Windows远程桌面
# 1. 获取Remote端IP(如:192.168.100.1)
# 2. 在Local端打开"远程桌面连接"
# 3. 输入Remote端IP,即可直接连接
mstsc /v:192.168.100.1
```
**适用于**
- Windows远程桌面(RDP)
- 直接IP访问的应用
- 网络设备管理
- 内网服务访问
### 🔀 SOCKS5代理模式
**工作原理**
- 提供标准SOCKS5代理服务
- 代理地址:`socks5://Remote端IP:1080`
- 支持TCP协议(UDP暂不支持)
**配置示例**
```bash
# 代理地址配置
SOCKS5_PROXY=socks5://192.168.100.1:1080
# Git代理配置
git config --global http.proxy socks5://192.168.100.1:1080
git config --global https.proxy socks5://192.168.100.1:1080
# SSH代理配置(通过ProxyCommand)
ssh -o ProxyCommand='nc -X 5 -x 192.168.100.1:1080 %h %p' user@target_host
```
**浏览器配置**
- Chrome/Edge:推荐使用 [SwitchyOmega](https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif) 插件
- Firefox:内置代理设置支持
**适用于**
- Web浏览器代理
- Git/SVN版本控制
- SSH远程连接
- 各类支持SOCKS5的应用
### 🔄 模式对比
| 特性 | TUN模式 | SOCKS5模式 |
|------|---------|------------|
| 权限要求 | 管理员权限 | 普通权限 |
| 配置复杂度 | 零配置 | 需应用配置 |
| 支持协议 | 全协议 | TCP |
| 透明度 | 完全透明 | 需手动配置 |
| 适用场景 | 系统级访问 | 应用级代理 |
## 🚀 快速开始
### 📋 准备工作
1. **下载程序**:从 [发布页面](https://gitee.com/konyshe/goodlink/releases) 下载对应平台版本
2. **生成密钥**:创建16-24字节的随机密钥(重要:不要使用示例密钥!)
3. **网络配置**:确保路由器NAT类型为NAT1-NAT3
### 🔧 部署Remote端(服务提供方)
> **说明**:Remote端通常部署在公司内网或目标网络环境
#### 🪟 Windows
**UI界面方式**(推荐新手)
**命令行方式**(推荐服务器)
```powershell
# 以管理员身份运行PowerShell
.\goodlink-windows-amd64.exe --fork --key=YOUR_SECRET_KEY_HERE --remote
```
#### 🐧 Linux
**命令行方式**
```bash
# 下载并运行
wget https://gitee.com/konyshe/goodlink/releases/download/latest/goodlink-linux-amd64
chmod +x goodlink-linux-amd64
./goodlink-linux-amd64 --key=YOUR_SECRET_KEY_HERE --remote
```
**Docker方式**(推荐生产环境)
```bash
# 拉取并运行容器
docker run -d \
--name=goodlink-remote \
--net=host \
--restart=always \
registry.cn-shanghai.aliyuncs.com/kony/goodlink \
--key=YOUR_SECRET_KEY_HERE \
--remote
```
**系统服务方式**
```bash
# 创建systemd服务文件
sudo tee /etc/systemd/system/goodlink.service > /dev/null < **说明**:Local端部署在需要访问内网的设备上(如个人电脑、笔记本)
#### 🪟 Windows
**UI界面方式**(推荐)
**命令行方式**
```powershell
# 以管理员身份运行(必须!)
.\goodlink-windows-amd64.exe --fork --key=YOUR_SECRET_KEY_HERE --local
```
#### 🐧 Linux
**命令行方式**
```bash
# 需要root权限
sudo ./goodlink-linux-amd64 --key=YOUR_SECRET_KEY_HERE --local
```
> **⚠️ Docker限制**:由于Local端需要创建虚拟网卡,Docker环境下暂不支持
### 🔍 连接状态检查
**成功连接的标志**
- Local端显示Remote端IP地址
- 可以ping通Remote端IP
- 日志显示"P2P connection established"
**连接测试**
```bash
# 在Local端测试连接
ping
telnet 1080 # 测试SOCKS5代理
```
### 🛠️ 常用参数说明
| 参数 | 说明 | 示例 |
|------|------|------|
| `--key` | 连接密钥(必须) | `--key=MySecretKey123456` |
| `--remote` | 运行为Remote端 | `--remote` |
| `--local` | 运行为Local端 | `--local` |
| `--fork` | 后台运行(Windows) | `--fork` |
| `--log-level` | 日志级别 | `--log-level=debug` |
| `--port` | 自定义端口 | `--port=8080` |
## 📚 更多资源
### 📖 文档链接
- 🔧 [详细使用教程](https://gitee.com/konyshe/goodlink/wikis)
- 🛡️ [安全性分析](https://gitee.com/konyshe/goodlink/issues/IBFKC2)
- 🐛 [问题反馈](https://gitee.com/konyshe/goodlink/issues)
- 💡 [功能建议](https://gitee.com/konyshe/goodlink/issues/new)
### 🤝 社区支持
#### 💬 交流方式
- **GitHub Issues**:[提交问题和建议](https://gitee.com/konyshe/goodlink/issues)
- **Gitee Issues**:[国内用户交流](https://gitee.com/konyshe/goodlink/issues)
- **项目Wiki**:[查看详细文档](https://gitee.com/konyshe/goodlink/wikis)
#### 🎯 贡献指南
- 🐛 发现Bug?请提交Issue并附上详细日志
- 💡 有新想法?欢迎在Issues中讨论
- 🔧 想要贡献代码?请先fork项目并提交PR
- 📖 完善文档?欢迎提交文档改进建议
### 🙏 致谢
**特别感谢以下贡献者:**
- **danshiyuan** - 早期测试和反馈
- 所有提交Issue和建议的用户
- 帮助测试和推广的社区成员
### 📄 许可证
本项目采用 MIT 许可证开源,详情请查看 [LICENSE](./LICENSE) 文件。
### ⭐ 支持项目
如果这个项目对您有帮助,请:
- 给项目点个 ⭐ Star
- 分享给更多需要的朋友
- 提交使用反馈和建议
- 参与社区讨论
---
让内网访问变得简单安全!
Made with ❤️ by GoodLink Team