# 中文 | [English](https://github.com/lazy-luo/smarGate/blob/master/README_en.md)
# 快速概览【快速上手手册】
* 平台适配,支持linux、windows、macos、android、(tob,小型机:hp-unix、solaris、AIX)
* cpu架构,支持x86、arm、mips、riscv(tob:alpha、PowerPC、SPRAC)
* 注重安全,“内网”到“内网”的穿透,无需映射任何端口到外网,不更改任何防火墙配置
* 注重带宽,”4G手机+v6宽带“采用P2P方式访问内网服务(基于TCP协议,v4支持NAT1-3穿透)
* 注重节约,无需购买vps、无需公网IP;家中淘汰Android手机可做服务器
* 注重可靠,随用随有,可7*24不间断服务,且不受UDP协议Qos之苦
* 注重可控,客户端一点配置,且随时随地控制服务开启/关闭
* 注重环保,免安装,体量小巧(mini版1MB左右) allinone,高性能且资源占用最少
* 注重便携,无论工作或是度假,不管在任何地方,只要手机有网络,一切尽在掌控
* ......如果这都是你想要的!请耐心继续往下看;如果你还想要...请提issue,【更新历史】也有看头哦
* 免费,测试稳定后考虑开源.
* 包含一个android客户端和需内网安装的服务端.
# APP端配置(必须)--- 无法正常使用典型情况
* 必须配置“允许后台运行”权限,否则切后台即被系统断连
* 必须配置“休眠时始终保持网络连接”,否则一旦休眠则被系统断连
* 可以配置“允许自启动”权限,否则Android服务端模式下无法开机启动(v0.30及后续版本)
* 可以配置“麦克风”权限,否则Android服务端无法提供语音监听功能(v0.30及后续版本)
* 注意:SG官方代理不提供到港澳台及国外IP的数据转发
## smarGate是什么?
#### 官方命名为“移动网关”,通过手机客户端将位于内网的服务端网络进行按需暴露,核心引擎采用c++实现。
#### “移动网关”是用户私有网关,所有共享访问入口都在客户端,不是类似其它穿透工具主推的面向域名的公共访问入口。打个比方:smarGate是将防盗门随身携带,其它穿透产品是将防盗门放到公共场所,额...虽然需要钥匙,但有种职业叫开锁匠
##### 具备如下技术特点:
* 安全性
* 手机客户端作为主要的访问入口,按需开放,及时关闭。
* 支持服务端间端口映射组网(v0.31及以后版本)。
* 电脑可以接入手机热点或wifi环境下通过访问手机开放的端口穿透到内网进行访问(客户端会显示手机ip)。
* 手机网络一般为私有网段别人无法访问。
* 用户间隔离。
* 扩展性
* 基于内网网段代理,可以配合众多工具实现各种网络服务能力(telnet、ssh、http服务、内网摄像头、远程桌面等)
* 面向极客,可访问自定义的内网服务(rpc)
* 便利性
* 手机客户端一点配置
* 服务能力动态增减
* 高性能
* 0.1.1版本开始采用自主网络引擎,性能高,千元手机客户端能支持1千以上的并发共享访问
* 高性能设计:
* 跨平台实现 socket 多路复用,支持:poll、epoll、kqueue、port、select、IOCP 等模型
* 采用 lock-free 算法
* 线程池设计
* socket 连接池
* 多级任务队列
* ...
附:交互示意图

* 支持代理穿透
* 官方提供免费的代理服务器(共享带宽,多人共用时比较慢,最佳实践为启用自有代理服务器)
* 如果自己有云服务器(具备公网ip),用户可自定义自己的代理服务器,且在代理服务器上安装proxy_server。所有数据传输走用户配置的代理服务器(代理服务器需要证书,可自动生成也可配置已有证书)
```
1、“代理服务器”配置如下(代理服务器必须允许任意端口“入站”连接):
```
```
* 使用TCP协议进行p2p穿透,提升安全性
* 不是所有的网络都支持p2p,取决于两端NAT类型
* v0.14以上版本,直接支持ipv6,且能提供防火墙穿透
* P2P测试结论:一端是NAT4,另一端是NAT3或NAT4时无法打通
注:NAT1-〉Full Cone , NAT2-〉Restricted Cone , NAT3-〉Port Restricted Cone , NAT4-〉Symmetric
| 服务端 NAT | 客户端 NAT | P2P成功 |
|---|---|---|
| NAT1-3 | NAT1-3 | YES |
| NAT1-2 | NAT4 | YES |
| NAT4 | NAT1-2 | YES |
| NAT4 | NAT3-4 | NO |
| NAT3-4 | NAT4 | NO |




