1、“代理服务器”配置如下(代理服务器必须允许任意端口“入站”连接):
<?xml version="1.0" encoding="GBK"?>
<app-config code="PROXY" name="proxy-server">
<app-parameter>
<proxy-service-port value="9001"/><!--自定义代理端口 -->
<owner-id value="xxxx" /><!-- xxxx 为注册成功返回的用户ID -->
<access-token value="nnnnn”"/><!--访问token,必须为数字【可选配】 -->
<ssl-create-certfile value="true" /><!-- 如未用如下选项指定证书,则自动生成证书【必须确保安装openssl】,默认为 false 代表无需自动生成 -->
<!-- 如果自己有证书及私钥,则配置如下项,启动安全的SSL通道,其中文件名需要配置正确;没有证书则不需要配置,可启用上面自动生成证书选项
<ssl-cacert-file value="xxx.crt"/>
<ssl-privatekey-file value="xxx.key"/>
-->
</app-parameter>
<moudle-parameter>
<log-level value="LOG_ERROR"/>
<log-write-mode value="CONSOLE_ONLY"/>
</moudle-parameter>
</app-config>
2、"服务端"中增加如下配置:
......
<app-parameter>
<!-- 如果代理服务器启动安全的SSL通道,这里必须配置证书及私钥
<ssl-cacert-file value="xxx.crt"/>
<ssl-privatekey-file value="xxx.key"/>
-->
</app-parameter>
<moudle-parameter>
......
</moudle-parameter>
<!-- 配置上述代理服务器的ip或域名+端口,注意:ip必须为公网IP。ssl选项必须配置正确,如果代理服务器有证书且生效则配置为true否则为false -->
<channel address="xxx.xxx.xxx.xxx:9001" ssl="false" token="nnnnn" /><!--访问token,必须与代理服务器一致,如果没有则不配 -->
支持p2p通道
服务端NAT | 客户端NAT | P2P成功 |
---|---|---|
NAT1-3 | NAT1-3 | YES |
NAT1-2 | NAT4 | YES |
NAT4 | NAT1-2 | YES |
NAT4 | NAT3-4 | NO |
NAT3-4 | NAT4 | NO |
支持外网发布(有违安全设计理念,v0.31版本开放)
支持服务端之间的P2P端口映射(v0.31及以后版本)
1、支持基于tcp的P2P连接隧道
。安全可靠,避免Qos
2、支持所有基于tcp的各类协议”透明代理”
。可代理所有内网tcp服务(ssh、rdp、smb、vnc、摄像头、数据库服务等)
3、支持HTTP、HTTPS to HTTP
。支持http-head rewrite,支持将https服务代理成http
4、支持udp over tcp
。支持udp协议的服务代理
5、透明方式(无需关注ipv6地址)支持ipv6隧道
。自动建立v6隧道,访问时始终使用v4地址
6、支持自定义代理(需外网ip),接管所有数据转发
。无法p2p时,自动连接自定义代理,实现数据转发
7、自定义代理支持token及白名单配置
。支持安全机制
8、支持多级级联代理
。支持链式代理,支持多级无环代理
9、支持手机作为访问唯一入口 —— 安全 + 移动便捷
。手机在手、随用随有
10、端口映射全动态配置,支持映射配置“热拔插”
。代理增、删及时生效,无需重启
11、所有功能app端“一点配置”
。客户端一点配置,服务端运行时免配
12、支持P2P隧道及自定义代理隧道自动探测及连接
。无需干预,app自动连接,自动重试
13、支持动态协商端口,支持指定协商端口
。默认动态端口协商,支持配合防火墙配置协商端口
14、支持隧道连接优先级(P2P—>自定义代理-->官网代理)
。数据传输时,支持优先级隧道
15、支持ssl加密隧道
。支持P2P及代理隧道ssl加密,确保数据传输不泄密
16、支持流量限制
。支持进行网络带宽限制,默认不限流
17、支持网络切换(如:移动<—>wifi)自动识别+自动连接
。app端智能重连,始终确保服务可用性
18、支持不同局域网主机间端口映射 —— 如有一端主机有外网ip则可直接外网访问(version > v0.31)
。支持服务端组网映射,流量无需通过手机app(传统穿透模式)
19、app支持服务端模式,可以将手机配置成服务端
。android手机可作为服务端
20、支持远程文件管理功能:浏览、上传、下载、删除,支持断点续传(version >= v0.31.6)
。在有p2p或自定义代理时,激活文件管理功能,可对手机和服务端电脑文件进行基本操作
21、支持内置socks5、http代理(version >= v0.32.1)
。毕竟有三方专业工具如ss5、squid等,因此socks5及http代理是可选的功能
22、socks5、http代理支持域名和IP白名单(version >= v0.32.1)
。域名白名单支持四种模式匹配(完全匹配、向前匹配、向后匹配、中间匹配),默认配置文件名.white_list
。IP白名单支持CIDR格式ip-range配置,默认配置文件名.ipchecks
。。。待续
<?xml version="1.0" encoding="GBK"?>
<app-config code="PROXY" name="proxy-server">
<app-parameter>
<!-- [ none | first | only ] ,none is default. 为P2P连接启用SSL加密,only代表只接受加密连接 -->
<ssl-tunnel-required value="first" />
<!-- 如未用如下选项指定证书,则自动生成证书【必须确保安装openssl】,默认为 false 代表无需自动生成 -->
<ssl-create-certfile value="true" />
<!-- 以下选项仅适用dynamic下的mini版本,指定ssl库及crypto库实际文件,linux下可由:ldd $(which openssl)|grep -E "libssl|libcrypto"|awk '{print $1}' 获取
<libssl value="libssl.so" />
<libcrypto value="libcrypto.so" />
-->
</app-parameter>
<moudle-parameter>
<log-level value="LOG_ERROR"/>
<log-write-mode value="CONSOLE_ONLY"/>
<app-name value="xxxxx [name of service points]." /><!-- need modify -->
<app-description value="yyyyy [description of service points]" /><!-- need modify -->
<!-- user-audit need modify (N 为注册成功返回的服务ID,index为自定义的服务端实例序号,建议从1开始,不能重复. 例如:[12345:1])-->
<user-audit value="N:index"/>
</moudle-parameter>
</app-config>
1、后台执行权限(如果不允许,则app进入后台会断开连接)
2、网络访问权限(基本权限)
1、设置 -> 无线及网络 -> WLAN -> 系统休眠保持连接 "允许" (否则,系统休眠会被断连)
2、设置 -> 无线及网络 -> 移动网络 -> 高级 ->始终保持数据连接 "允许"
Q:如何下载安装 android app?
1、用android手机浏览器打开 https://gitee.com/lazy-luo/smarGate/raw/master/android client/app-release.apk
2、弹出框中下载安装
网盘链接为最新测试版本,github上版本稍有滞后: https://github.com/lazy-luo/smarGate
附网盘下载地址: https://pan.baidu.com/s/14Iq60kxHW711NVoCVKWySg
如有需要请添加微信:ws_lzy008 注明:smarGate ,视情况组建技术讨论群
Q:需要访问家中局域网多台设备,是否每台都需要安装服务端?
A:不需要,只需选择任意一台设备安装服务端即可。
Q:为何有时连接不上?
A:服务端空闲约2-3分钟,会自动断开,须等待10秒左右重连。
Q:ipv6为何无法P2P?
A:请将客户端及服务端更新到最新版本;确保手机与内网电脑能获取到全局ipv6地址;确保没被防火墙拦截(windows);排查两个ipv6是否能路由出去;查看hosts文件确保hostname能解析到ipv6地址。
Q:IPv4及IPv6的P2P连接为何没有UDP端口?
A:smarGate基于TCP协议进行P2P打通,具备更好的安全性,及连接可靠性。
Q:手机NAS客户端为何无法登录?
A:确保手机NAS客户端ip黑名单中没有localhost(127.0.0.1)。
Q:如何将异地公司内网机器共享给多地团队?
A:手机连接wifi,让团队成员电脑连接手机IP:PORT,直接通过手机代理进行访问。实测,2k以上的手机,可以带上百人团队共享访问。
Q:为何windows服务端没有控制台黑框?
A:为了防止误操作关闭服务端,新版本windows服务端采用后台方式运行。如需关闭,请用“任务管理器”
Q:P2P时流量是否还需要走中间代理?
A:不需要,直接点对点连接,网速取决于你的客户端及服务端所在网络。
Q:smarGate后台运行是否很耗电?
A:经过长时间测试,按偶尔使用的频次,耗电量和任意一个系统进程相近,极低;频繁后台使用情况,长时间“后台”使用,整体耗电量等同于偶尔使用微信的耗电量。电源管理提示“后台频繁刷新。。。”,不用管它,后台传输数据都会有此提示,关键看耗电排名
Q:smarGate连接优先级规则?
A:首选P2P连接,无P2P时使用自定义代理连接,无前两者连接时使用官方代理连接。
Q: 同一个用户能否多处登录 ?
A: 可以多点登录,但同一时刻只能有一个客户端可以进行P2P;服务端单台机器只能启1个实例,服务端各实例配置确保序号不重复,否则将无法正常使用。
如果您觉得 smarGate 对你有帮助,欢迎给予我们一定的捐助来维持项目的长期发展!
ps:捐赠建议附上注册用户名
1、文件管理新增空目录删除功能
2、服务端间连接增加使用时连接功能(20秒内重连1次)
3、增强稳定性,修复异常退出问题
1、新增PROXY协议,单端口同时支持socks5及http代理
2、新增http代理用户/密码认证
<app-parameter>
...
<httpx-user value="user" />
<httpx-passwd value="pwd" />
<socks-user value="user" />
<socks-passwd value="pwd" />
...
</app-parameter>
3、其它优化
1、提升文件传输速度
2、其它优化
1、修复网络出口变化时服务端长时间丢失的BUG
2、改进P2P连接机制,提升P2P连接成功率
1、修复windows下代理连接偶发断开的BUG
2、修复windows下低带宽时高CPU占用的BUG
3、服务端支持动态资源回收,适合内存限制设备
4、新增编译包,支持LoongArch64架构
5、版本更新到v0.40.3
1、修复代理地址错误显示为localhost的BUG
2、修复windows下偶发coredump的BUG
1、启用异步连接,防止慢连接阻塞正常连接
2、修复链式代理、Socks5、http代理在特定情况下无法释放连接的BUG
1、改进P2P的连接成功率
2、修复部分已知BUG
3、版本更新到v0.40.2
1、收藏夹BUG修复
2、新增服务备注功能,便于服务识别及打标
1、VIP支持百度地图定位
2、版本更新到v0.40.1
1、APP易用性更新,后续版本将采用全新界面
2、修复特定情况无法创建ipv6隧道的BUG
3、APP增加收藏夹功能,常用连接一览无余
4、版本更新到v0.32.3
1、老幼安全防护,支持GPS定位,便于掌握关怀对象所在经纬度(自行手动授权)
2、其它优化
1、socks协议支持用户名/密码验证
2、支持保存及播放录音(VIP)
3、版本更新到v0.32.2
1、修复bug
2、完善支持socks协议(仅支持ipv4 tcp)
3、完善支持HTTP proxy协议
4、APP支持VIP功能许可
5、版本更新到v0.32.1
1、修复bug
2、试验性支持socks协议(仅支持ipv4 tcp)
3、新增内置支持HTTP proxy协议
4、内存回收(适用于内存限制设备)
5、全异步方式提升响应速度
6、版本更新到v0.31.12
1、文件管理支持默认按时间排序
2、新增macos M1/M2支持
3、版本更新到v0.31.11
1、网络可靠性优化
2、优化网络传输效率
3、版本更新到v0.31.10
1、APP服务端模式新增“无障碍”服务,用户自行打开,实现自动重启
2、APP端操作优化:新增点击操作自动填充功能,便于新增配置
3、修复mips路由器下安装自定义代理无法提供服务的BUG
4、提供服务端自定义代理域名定时ip刷新功能(动态域名)
5、其它优化
1、APP服务端模式支持配置自定义代理及SSL加密
2、自定义代理服务器支持SSL自签名证书下发
3、其它优化
1、提供一键版本升级功能,无需手动更新
<auto-update value="true" />
1、文件管理增加删除文件功能
2、文件管理增加断点续传功能
3、文件管理增加文件时间
4、文件管理windows下增加切换磁盘操作
1、修复自定义代理短间隔重连情况下连不上的BUG
2、新增了简易文件上传下载功能,可方便同步异地文档
3、版本更新到v0.31.5
1、降低运行时虚拟内存占用
2、常规性优化
3、版本更新到v0.31.4
1、修复mips架构系统无法连接自定义代理的BUG
2、修复HTTP协议加载完成时间长的问题
3、版本更新到v0.31.3
1、修复Windows平台偶发闪退BUG,增强稳定性
2、P2P连接及自定义代理进行keep-alive操作,尽可能避免重连时间窗口,提升可用性
3、其它可用性优化,降低app能耗
4、版本更新到v0.31.2
1、修复特定情况下,服务端重启,组网配置不生效的BUG
2、修复NAT1服务器P2P协商BUG
3、版本更新到v0.31.1
1、提供服务端之间端口映射,服务端如有公网ip则可直接从公网访问(仅需在app上配置)
2、版本升级到v0.31
1、修复32位大端机器运行服务端,无法正常代理的BUG
2、版本暂保持不变
1、服务端支持自动生成自签名证书(默认文件名为server.xxx)
-->a、配置ssl-create-certfile选项
<app-parameter>
<ssl-create-certfile value="true" />
...
</app-parameter>
-->b、确保安装openssl
-->c、不要指定证书文件(不配置 ssl-cacert-file 及 ssl-privatekey-file)
2、支持riscv32/64架构,编译时同mips架构使用musl库进行链接
3、优化网络传输层
4、提供mips64el支持
5、增加app端系统图标显示
1、自定义代理支持ssl验证
2、网络P2P情况下,支持配置成ssl隧道( 要求服务端必须配置证书 )
<app-parameter>
<ssl-tunnel-required value="first" /><!-- 取值有3个:none、first、only -->
...
</app-parameter>
3、其他优化
1、提供了Android服务端开机自启动支持(仅服务端模式,且需要自行手动授权)
2、网络P2P情况下,Android服务端支持实时音频(麦克风权限需要自行手动授权,必须打开SG界面才能录音)
3、其他优化
1、修复Android高版本无法退出问题
2、优化网络:修复了可能带来网络延迟的BUG,进一步提升网络传输速度
3、提供版本号展示,便于客户端及服务端
4、优化app cpu占用,降低能耗
1、修复ipv6与ipv4网络切换存在的服务端core-dump问题
2、客户端新增ipv4-only网络模式选项,用于在ipv6网络环境下由于特殊需求需要使用ipv4进行p2p连接的场景(强制使用ipv4进行网络)
3、其它一些bug修复
注意:特定场景下由于存在core-dump的致命问题,0.29版本需要同时更新客户端及服务端
1、自定义代理增加token支持,防止非法访问。同时支持配置访问许可列表(access-token只能输入数字,access-restricting可输入允许的SID,多个SID用“:”分隔,access-restricting可不配)
A、代理服务器配置:
<app-parameter>
<proxy-service-port value="9001"/>
<access-token value="nnnnn”"/>
<access-restricting value="xxxxx"/>
…
</app-parameter>
B、服务端配置(token必须与代理服务器一致):
<channel address="x.x.x.x:9001" ssl="true" token="nnnnn" />
2、对于隧道超时断开机制做了优化(仅针对P2P隧道及用户代理隧道):只要有连接接入且连接正常情况下客户端会随机时延发送心跳,尽量防止超时断开。
场景:ssh访问时,较长时间不输入会保持心跳,不至于1两分钟空闲就断开了。
1、去掉root权限获取功能,保持最低权限要求。暂不开发支持配置1024以下端口的能力
2、由于自用树莓派被孩子摔坏了,只能压榨淘汰手机剩余价值,Android app端增加“服务端模式”支持,可以放在家中作为服务器
1、修复IP切换时配置的HTTP服务可能不可用的问题
2、对已root手机,尝试获取root权限,支持配置1024以下的保留端口
3、解决绝对路径执行(多为开机启动脚本)且不指定-f参数时无法定位默认配置文件问题
4、服务端增加HTTP基于内容替换选项(影响效率,忽略压缩数据。对于部分js中将ip端口返回到浏览器的不规范内网web应用),默认不过滤内容
……
<moudle-parameter>
<http-content-type-filter value="application/javascript" />
……
<moudle-parameter/>
……
5、服务端增加指定P2P协商端口选项,默认选择随机端口
……
<moudle-parameter>
<negotiation-port value="xxxxx" />
……
<moudle-parameter/>
……
6、增加“官方代理”开关,默认打开。关闭时在任何情况下都不会走官方代理转发数据
1、修复tcp-cork特定条件下丢失writable-event造成网络延迟的BUG
2、提升内存池运行性能
3、增加 -f 命令行参数,可指定配置文件全路径
4、其它优化,版本保持不变
1、修复 http代理失效 BUG
2、app端提供ipv6地址显示
3、版本更新到0.25
1、花生壳支持UDP了?好吧,支持一下UDP端口转发,游戏串流的朋友可以试用一下
2、支持 UDP over TCP 模式
3、其它小的优化
1、修复 memory leak BUG
2、其它小优化,版本保持不变
3、提升P2P重连可靠性
1、修复弱网络环境下windows服务端高CPU占用BUG
2、整体提升网络传输速度
1、提升P2P检测可靠性
2、修复windows下特定情况无法进行P2P连接的BUG
3、客户端提供了手动p2p重连功能(弱网络环境下自动重连可能失败,此时可以手动重连)
1、进一步降低在低速率下服务端cpu占用率
2、常规优化,版本保持不变
1、优化网络性能
2、客户端支持显示实时网速
1、解决客户端修改密码后自动登录失败的BUG
2、提供自动登录超时控制
1、优化连接检查性能(提供并行异步检测)
2、支持将HTTPS代理到HTTP(客户端http访问,服务端为https)
1、性能优化
2、解决特定条件下(自定义路由)无法可靠断开服务端连接的BUG
3、进行静态编译,不再依赖inux系统gcc动态库,可直接在alpine中运行(需要创建软连接)
4、支持编译为mini版本,不再静态编译openssl;对openssl库从0.9.8~1.1.1的全系动态兼容,二进制包缩小为1M左右(已放入dynamic目录,需配置ssl库)
1、性能优化
2、提供ipv6 P2P开关机制: 如需关闭ipv6点对点则设置为“true”,默认值为“false”
3、增加客户端ipv6标志及连接状态提示
1、修复Raspbian jessie下无法检测IPv6的BUG
1、性能优化
2、提供P2P断开重连机制
1、修复服务端在挂载私有路由时当线程数量<4时偶发CPU高占用的BUG,版本保持不变
1、修复服务端在挂载私有路由时偶发core dump的BUG
1、修复IPV4/IPV6网络切换,无法P2P的BUG
1、解决网络切换重连失败问题
2、引擎性能优化
3、新增对IPv6协议支持(移动端支持ipv6,且内网服务端支持ipv6)
【重要提示】v0.14版本将于之前版本不兼容,请务必更新版本!!!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型