# 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**: 835 - **Forks**: 182 - **Created**: 2024-06-18 - **Last Updated**: 2026-01-03 ## Categories & Tags **Categories**: networklib **Tags**: 异地组网, NAT穿透, 内网穿透, 直连, 穿透 ## README
外出办公, 对比市面上的远程工具, 无论画质、软件适配, 都不如 windows 自带的远程桌面, 但外出如何使用 windows远程桌面? 是否可以无需远程桌面, 直接访问公司的内网 WEB, GIT, SSH 等? **注: 仅用于学习研究, 无商业合作,更无恶意行为。如有广告之类盈利行为,会告知大家。** **郑重声明:严禁用于违法行为!!!**
# 特点
1. 两台主机之间直连!直连!直连!不经过第三方服务器, 不用担心数据泄露
2. 一条命令搞定, 无需安装、无需注册, 无需公网 IP, 无需配置文件

# 一定要看
1. **建议直连光猫拨号,成功率最高。否则请关闭路由器防火墙,开启UPNP,并建议设置路由器DMZ为本机**
2. **如超过3分钟无法直连,找客服(电信10000,移动10086,联通10010)改NAT类型,优先NAT1>NAT2>NAT3**
3. 两端主机运行同一个程序 / Docker, 一端使用--remote 选项(以下称 remote 端), 另一端使用--local 选项(以下称 local 端)
4. 可以在 local 端访问 remote 端, 但是反过来不可以
5. 可以无限个 local 端连接同一个 remote 端, 但一个 local 端不能同时连接多个 remote 端。通过相同的密钥(--key)确认连接关系
6. 由于Local端需要创建虚拟网卡,因此一个PC端只能运行一个 local 端,确定右下角任务栏只能一个GoodLink图标
7. windows 自带杀毒软件, 会将所有 go 语言写的程序都默认为病毒。本程序已开源, 放心食用
8. 以下举例中的密钥(--key), 请不要使用, 否则会连上别人的 remote 端, 或者被别人的 local 端连上。自己随机 24 字符长度的密钥
9. 如有安全疑问,请看: [使用GoodLink 是否足够安全?](https://gitee.com/konyshe/goodlink/issues/IBFKC2)
10. 连接remote端的windows远程桌面,可在ip后面加上 :13389,尝试连接。3389端口貌似有特殊路由处理,和GoodLink创建的虚拟网卡冲突
#### 💻 部署选项
| 平台 | 支持方式 | 推荐程度 | 说明 |
|------|----------|----------|------|
| Windows | 命令行 / UI界面 | ⭐⭐⭐⭐⭐ | 支持 |
| Linux | 命令行 / Docker | ⭐⭐⭐⭐⭐ | 支持 |
| macOS | 命令行 | ⭐⭐⭐⭐ | 暂不支持 |
### 📡 NAT兼容性
| Remote端NAT | Local端NAT | P2P连接 | 说明 |
|-------------|------------|---------|------|
| NAT1-3 | NAT1-4 | ✅ 支持 | 推荐配置 |
| NAT1-4 | NAT1-3 | ✅ 支持 | 推荐配置 |
| NAT4 | NAT4 | ⚠️ 不保证 | 运营商限制 |
| 移动网络 | 移动网络 | ❌ 不支持 | 运营商限制 |
# 快速使用
### **启动 remote端**
#### windows, 命令行
```
.\goodlink-windows-amd64.exe --key=AIabJpEIYHMDIA6NBgOBboYJ --remote
```
#### windows, UI

#### linux, Docker
```
docker run -d --name=goodlink --net=host --restart=always registry.cn-shanghai.aliyuncs.com/kony/goodlink --key=AIabJpEIYHMDIA6NBgOBboYJ --remote
```
#### linux, 命令行
```
./goodlink-linux-amd64 --key=AIabJpEIYHMDIA6NBgOBboYJ --remote
```
### **启动 local端**
#### windows, 命令行
```
.\goodlink-windows-amd64.exe --fork --key=AIabJpEIYHMDIA6NBgOBboYJ --local
```
#### windows, UI

#### linux, Docker
```
由于Local端需要创建虚拟网卡,Docker中并不支持
```
#### linux, 命令行
```
./goodlink-linux-amd64 --key=AIabJpEIYHMDIA6NBgOBboYJ --local
```
### 🛠️ 常用参数说明
| 参数 | 说明 | 示例 |
|------|------|------|
| `--key` | 连接密钥(必须) | `--key=AIabJpEIYHMDIA6NBgOBboYJ` |
| `--remote` | 运行为Remote端(必须) | `--remote` |
| `--local` | 运行为Local端(必须) | `--local` |
| `-v` | 查看版本信息(命令行版本) | `-v` |
# 工作模式
注:以下两个模式同时存在, 无需选择
### TUN模式
Local端会创建一个虚拟网卡, 因此需要管理员权限运行。连接成功后,界面会显示: Remote端IP
举例: 在Local端打开 windows 远程桌面, 填写Remote端IP, 即可访问Remote端的远程桌面。如果无法连接,可在IP后面加上:13389
### 代理模式
socket5代理地址端口: socket5://Remote端IP:1080
http代理地址端口: http://Remote端IP:1080
举例: 在Local端配置socket5代理: socks5://Remote端IP:1080, 即可利用Remote端做跳板, 访问所有的网络资源
**Linux平台代理配置示例**
```bash
# 代理地址配置
export all_proxy="http://127.0.0.1:1080"
export http_proxy="http://127.0.0.1:1080"
export https_proxy="http://127.0.0.1:1080"
# Git代理配置
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
# SSH代理配置(通过ProxyCommand)
ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:1080 %h %p' user@target_host
```
**浏览器代理配置**
- Chrome/Edge:推荐使用 [SwitchyOmega](https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif) 插件
- Firefox:内置代理设置支持
### 🙏 致谢
- 所有点了⭐ Star的同学
- 所有帮助测试和推广的同学
- 所有提交Issue和建议的同学
### 💬 交流方式
- **GitHub Issues**:[提交问题和建议](https://github.com/konyshe/GoodLink/issues)
- **Gitee Issues**:[国内用户交流](https://gitee.com/konyshe/goodlink/issues)
### 🎯 贡献指南
- 🐛 发现Bug?请提交Issue
- 💡 有新想法?欢迎在Issues中讨论
- 🔧 想要贡献代码?请先fork项目并提交PR
- 📖 完善文档?欢迎提交文档改进建议
### 📄 许可证
本项目采用 MIT 许可证开源,详情请查看 [LICENSE](./LICENSE) 文件。
---
让内网访问变得简单安全!
Made with ❤️ by GoodLink Team