#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程

2017-08-11 15:00:23 73点赞 717收藏 69评论

小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。详细活动规则,请猛戳此链接!


前言:黑群晖的内网穿透方案


黑群晖而且身处大内网,没有公网IP、没有QuickConnect ID,想用群晖做个私有云,随时随地连接,管理文件、备份照片,甚至观看群晖本地视频,实现内网穿透可以选用以下方案:

1、花生壳内网穿透免费版——太慢限流限带宽,pass,连上去都要等半天 #原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程 

2、服务商提供的ngrok服务——国内和国外(推荐国内速度快)

https://www.ngrok.cc/(免费):速度尚可,比花生壳快,但是没达到我的理想值   

https://natapp.cn/(付费):速度快且稳定,10软妹1个月,年付打折,选择高带宽需额外流量(图方便的可以使用这个,推荐,因为我已经有搬瓦工的VPS,所以考虑自搭建)#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程 

3、利用VPS自搭建frp服务器(用搬瓦工测试过,速度不理想,可能是个人原因)

4、利用VPS自搭建ngrok服务器(测试速度强差人意,码率小的视频已经可以流畅播放,速度可达到300kb/s-600kb/s,自家长城宽带上行峰值就是600kb/s)#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程,下图看速度~    

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程


所以,这教程讲的就是如何搭建ngrok服务器,实现黑群晖内网穿透~

需要满足以下条件:

1、会简单使用WinSCP和putty工具,以及稍微了解Linux命令行操作

2、拥有一个VPS服务器(推荐搬瓦工,便宜,速度也不慢)

3、申请一个域名(推荐阿里云)

4、文末的附件(百度网盘链接)


一、VPS选择


使用国内的,速度快且稳定,但是贵#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程 

因为早就买过搬瓦工的vps,所以就顺手拿来搭建ngrok

ps:选购搬瓦工注意要洛杉矶机房(听闻洛杉矶机房都是与大陆直连的)

    另外选择KVM架构,自带BBR加速,

    也可以自己装锐速(实测BBR和锐速差不多,都可以流畅播放YouTube视频1080P,1440P有压力)

    可以支付宝支付,一年19.99刀


二、域名开通


1、在阿里云申请域名,几块钱都有,开通成功后进行域名解析(最好先做实名认证,不然不给你解析)

2、点击解析

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程

3、此处填写你的IP地址,其他一样填写就ok了

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程

4、等待运营商更新后(一般几分钟后),使用ping命令测试是否解析成功

使用ping 域名的命令进行,下方显示你进行解析的IP地址就代表成功啦~

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程


三、服务端的搭建


这里使用sunny的一键搭建脚本:https://github.com/sunnyos/ngrok(此脚本只适用于centos)

ps:由于脚本内的go1.4版本链接已经过期,所以在我附件附带go1.4(分go1.4.2.linux-386.tar.gz位32位和go1.4.2.linux-amd64.tar.gz为64位版,注意匹配你的系统版本),放在与脚本同目录即可

ps:如果事先已经在vps搭建好ss的话,接下来安装ngrok会端口冲突,造成ngrok无法运行,便捷的办法就是在搬瓦工的控制面板中把ss的端口改一改

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程

1、使用WinSCP上传go1.4和sh脚本(两个文件需在同目录),WinSCP不会用的话,百度一下。。。#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程 

2、使用putty运行脚本安装

提升sh脚本权限:chmod +x ngrok.sh

运行脚本:sh ./ngrok.sh

运行后提示你输入域名,填你已经进行解析的域名就ok了,再选择1全新安装

3、漫长的等待ing。。。如无意外,安装成功后,服务端开始启动,并打印日志(就是规律地隔一会就显示一些内容带时间的。。。没截图,懒不想重装。。)

4、ctrl+c终止服务端运行,再次运行脚本:sh ./ngrok.sh,再次输入域名后,选着生成客户端,群晖6.1是linux64位,按照系统版本选择。成功后,客户端存放的路径:/usr/local/ngrok/bin,把客户端用winscp拉回本地待用

5、/usr/local/ngrok/bin/ngrokd -domain="你的域名" -tlsCrt="/usr/local/ngrok/server.crt" -tlsKey="/usr/local/ngrok/server.key" -tunnelAddr=":4443"

测试下服务端是否正常运行

6、以上服务端和客户端都编译好可以正常运行了,需要服务端开机启动的

vi /etc/rc

末尾exit前新建一行添加

/usr/local/ngrok/bin/ngrokd -domain="你的域名" -tlsCrt="/usr/local/ngrok/server.crt" -tlsKey="/usr/local/ngrok/server.key" -tunnelAddr=":4443"

reboot后查看进程是否启动成功


四、客户端调试


客户端需要两个文件,一个是刚刚在vps编译并下载到本地的客户端程序,另一个是ngrok.cfg配置文件(附件带),配置文件的作用是指定穿透什么端口

1、使用root用户登录群晖6.1(不会的自行百度。。我懒#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程 )

2、新建一个ngrok的文件夹mkdir ngrok

3、使用winscp把本地的ngrok和ngrok.cfg拉到刚刚新建的文件夹中

4、ngrok.cfg文件的配置说明,自行根据需求修改

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程

涂抹处需要填你解析的域名,端口号为默认的4443

我这里穿透了两个端口“nas”和“rtnas”分别是群晖的5000和中继路由(192.168.7.2)的80端口

remote_port为远程端口,即服务器端口

tcp:5000为使用tcp协议,不填IP即为本地nas端口50000

远程访问时,输入你的域名:端口号即可

当然可以用http协议,但是我的域名没有备案,打不开。。。#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程 

ps:编写这个cfg文件不可用tab键!不可用tab键!不可用tab键!只能用空格!!!

5、提升ngrok文件夹的权限:chmod 777 -R ngrok

6、开始测试运行

/root/ngrok/ngrok -config /root/ngrok/ngrok.cfg start nas rtnas

ps:这里命令行最后的nas和rtnas和配置文件相同,代表你启动哪些端口

如无意外,显示online即成功

测试下“域名:7777”,顺便测试速度,成功!

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程

7、最后需要客户端开机启动

vi /etc/rc

末尾exit前新建一行添加

/root/ngrok/ngrok -config /root/ngrok/ngrok.cfg start nas rtnas


终~

以上,感谢 sunny大神 的一键脚本

所有附件链接

密码: sffp


篇外:关于远程启动NAS和关机


1、手头上有个小米智能插座WIFI版可以实现开机启动(比较方便,主板设置通电开机即可)

2、由于主板是工控版,只有4pin的电源插座,开机关机无法控制atx电源,懒人可以在atx电源的24pin插头直接接通pwon和gnd,这样智能插座开关都能控制电源了

3、由于nas远程关机时不关闭电源,硬盘就一直待机,还需要关闭插座,所以我又做了个arduino的单片机控制电源,关机后检测到主板低电平后自动关闭电源,这样即使我关机不关智能插座,硬盘也会断电

贴上arduino的代码,需要的童鞋可以参考下:

#include

int LED = 13;//工作灯

int NASOP  = 10;//NAS工作输出引脚

int POWER = 11;//控制电源开关

int NASTATE = 0;//NAS工作引脚状态

int i;

void setup() {

  pinMode(LED,OUTPUT);

  pinMode(NASOP,INPUT);

  pinMode(POWER,OUTPUT);

  digitalWrite(LED, HIGH);

  digitalWrite(POWER, LOW);

  delay(7000); 

  //arduino主板开机立即拉低开关电平,并延时7s

}

void loop() {

  NASTATE = digitalRead(NASOP);

   //nas关机后,for循环闪烁工作灯10s后,拉高开关电平以关闭电源

  if(NASTATE==LOW){

    for(i=1;i<=10;i++)< p="">

    {

      digitalWrite(LED, LOW);

      delay(500);

      digitalWrite(LED, HIGH);

      delay(500);    

    }

    digitalWrite(POWER, HIGH);

  }

  //nas开机状态下工作灯常亮

  else{

      digitalWrite(LED, HIGH);

  }

}

展开 收起
70评论

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
717
扫一下,分享更方便,购买更轻松