
支持代理穿透
如果自己有云服务器(具备公网ip),用户可自定义自己的代理服务器,且在代理服务器上安装proxy_server。所有数据传输走用户配置的代理服务器(代理服务器需要证书,可自动生成也可配置已有证书)
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-create-certfile value="true" />
<!-- 如果代理服务器启动安全的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="true" 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及以后版本)
三方视频教学- B站
使用实践-度娘
使用实践-google


解压服务端压缩包,修改配置文件(conf-proxy.xml):
配置样例
<?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>
OpenWrt mips设备安装请见:【MIPS linux下正确使用方式】
在客户端中可以看到上线的服务端(“访问点”),可以在客户端上定义端口映射规则
展开图示

服务端间端口映射配置需要在ip后加上服务端index序号,格式为:ip@idx

以下为推荐使用的最佳实践,供参考:
1、android客户端设置为“自动登录”,免除每次输入用户名/密码的麻烦;
2、android客户端设置好后让其在后台运行,如果始终保持前台会定时刷新,webview控件空耗电,你懂的;
3、服务端始终保持后台运行,安全放心,只有你自己才能访问;
...使用场景...
【家用摄像头P2P直连】
请您仔细阅读以下申明,您在使用smarGate工具软件,表明您对以下内容的接受:
1、严禁使用本软件从事计算机黑客以及其他任何危害计算机信息网络安全的行为;
2、本软件属于正规网络接入软件,请合理,合法的使用;勿用于违反法律,道德及影响他人利益的活动;如果因用于非法用途,由此造成的不良后果,由用户自行负责,本软件开发者不承担任何责任及损失。
如果您觉得 smarGate 对你有帮助,欢迎给予一定的捐助来维持项目的长期发展!
ps:捐赠建议附上注册用户名
微信捐赠