搭建ngrok服务器实现内网穿透及映射[NAS黑群辉的福音]

  • A+
所属分类:Linux

特别提醒:代码中的双引号不是半角下的双引号,请更改再执行,否则会出错!

一、准备条件:

  • 具有一台VPS或者服务器(推荐购买搬瓦工的vps,bwh1.net
  • 域名一个 (例:a.leiuu.com)
  • 服务器系统为Centos 6 x86 minimal,且安装了WDCP服务软件

1. 将您域名解析到VPS的IP地址。

  • a.leiuu.com —> 104.224.1*3.****(顶级域名解析)
  • *.a.leiuu.com   —> 104.224.1*3.**** (泛解析)

2.  在Linux服务器上搭建ngrok服务端。

(1)如果是Ubuntu部署运行环境请执行:

apt-get update
apt-get install build-essential mercurial git

(2)如果是CentOS请执行:

1)安装gcc
yum install gcc
2)安装git
yum install git

(3)下载go以及ngrok源码(如果地址失效请百度盘,注意go1.4.2.linux版本,64位系统请下载对应版本)

cd /usr/local
wget http://www.golangtc.com/static/go/1.4.2/go1.4.2.linux-386.tar.gz
tar -zxvf go1.4.2.linux-386.tar.gz
cp /usr/local/go/bin/* /usr/bin/
cd /usr/local/src/
git clone https://github.com/inconshreveable/ngrok.git ngrok

export GOPATH=/usr/local/src/ngrok/
export NGROK_DOMAIN="a.leiuu.com"

(4)生成证书

cd ngrok;
openssl genrsa -out rootCA.key 2048;
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=a.leiuu.com" -days 5000 -out rootCA.pem;
openssl genrsa -out device.key 2048;
openssl req -new -key device.key -subj "/CN=a.leiuu.com" -out device.csr;
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000;

(5)替换自签名证书到相关目录

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
1)编译服务端(如果是64位系统,请执行)
GOOS=linux GOARCH=amd64
make release-server
2)或者如果你的是32位系统
GOOS=linux GOARCH=386
make release-server

(6)接着直接生成linux客户端:(目前所在目录:cd /usr/local/src/ngrok)

make release-client

  • //试运行(运行之后利用Ctrl+C结束
    ./bin/ngrokd -domain="a.leiuu.com" -httpAddr=":8083" -httpsAddr=":8084"
  • //设置ngrok开机自启动(设置后,VPS重启ngrok也会自动执行)
    cp /usr/local/src/ngrok/bin/ngrokd /usr/bin/ngrokd
    chmod +x /usr/bin/ngrokd
    vi /etc/rc.d/rc.local
    //在rc.local文件最后一行添加以下代码
    nohup /usr/bin/ngrokd -domain="a.leiuu.com" -httpAddr=":8083" -httpsAddr=":8084"
    chmod +x /etc/rc.d/rc.local;
  • 又或者设置后台运行,不过服务器重启后需要再次执行以下代码
    sudo nohup /usr/bin/ngrokd -domain="a.leiuu.com" -httpAddr=":8083" -httpsAddr=":8084"

-------------------------------------------------------------------
重启一下服务器!使用ps -ef 检查ngrok后台是否执行
-------------------------------------------------------------------

  • //生成windows客户端(如果是64位的win系统,请把下面的386改为amd64)
    cd /usr/local/go/src/
    GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash
    cd /usr/local/src/ngrok
    GOOS=windows GOARCH=386 make release-client
  • //或者生成linux客户端(如果是32位系统,请把下面的amd64改为386)
    cd /usr/local/go/src/
    GOOS=linux GOARCH=amd64 CGO_ENABLED=0 ./make.bash
    cd /usr/local/src/ngrok
    GOOS=linux GOARCH=amd64 make release-client
  • //生成树莓派客户端
  • cd /usr/local/go/src/
    GOOS=linux GOARCH=arm CGO_ENABLED=0 ./make.bash
    cd /usr/local/src/ngrok
    GOOS=linux GOARCH=arm make release-client

————————

  • 生成客户端之后,即可在/usr/local/src/ngrok/bin 目录中看到相关文件夹。Windwos客户端根据我们刚才交叉编译之后生成的命令是存在于 /usr/local/src/ngrok/bin/windows_386/ngrok.exe 这个文件的。我们将他下载到本地需要运行的机器上。
  • 注意:防火墙放行这些端口上的TCP协议。请一定重新启动服务器!

————————
在win中使用:
1. ngrok客户端(/usr/local/src/ngrok/bin/windows_386/ngrok.exe 下载到本地)
2.配置文件(在ngrok客户端同级目录下新建ngrok.cfg 文件):
server_addr: "a.leiuu.com:4443"
trust_host_root_certs: false
3.进入MSdos界面进入到ngrok.exe文件所在位置,输入命令:
ngrok -config=./ngrok.cfg -subdomain=www 80
即可将www子域的80端口映射到VPS的8083端口了,如果是用来做ss转发的话后面加上 -proto=tcp。
————————
在linux下面使用
1. ngrok客户端(/usr/local/src/ngrok/bin/ngrok文件下载到本地)
2. 上传到linux的/root目录中,并且加权限:chmod +x /root/ngrok
3. 在/root目录新建一个ngrok.cfg文件,编辑以下内容并保存:
server_addr: "a.leiuu.com:4443"
trust_host_root_certs: false
加权限:
chmod +x /root/ngrok.cfg接着输入:./ngrok -config=./ngrok.cfg -subdomain www 127.0.0.1:80其中www为子域名,后面的127.0.0.1也可以换成局域网其他IP,如:192.168.0.116

  • →在NAS群辉DSM6.0及以上的客户端
    1.在vps上拷贝/usr/local/src/ngrok/bin/linux_arm/ngrok文件下载到本地
    2.上传到群辉的/root目录中,并且加权限:
    chmod +x /root/ngrok
    3.在/root目录新建一个ngrok.cfg文件,编辑以下内容并保存:
    server_addr: "hulei.pw:4443"
    trust_host_root_certs: false
    加权限:
    chmod +x /root/ngrok.cfg
    4.在NAS上加入自启动命令
    在/root目录新建一个ngrok_shell.sh文件,编辑以下内容并保存:
    #!/bin/sh
    /root/ngrok -subdomain www -config=ngrok.cfg 127.0.0.1:80 &
    /root/ngrok -subdomain a -config=ngrok.cfg 127.0.0.1:5000 &
  • 这个文件可以无限延展,但是最后两个字符一定是 &。
    加权限:
    chmod +x /root/ngrok_shell.sh
    登陆NAS后台,在控制面板→任务计划→新增→用户定义的脚本,随便起个任务名称,然后在“用户定义的脚本”文本框中输入以下内容:
    /root/ngrok_shell.sh

 

客户端程序加壳优化

  • 编译好的Windows客户端ngrok.exe大小为10MB,感觉有点大,这样加载到内存中,需要读取硬盘的内容也相对较多,影响速度。所以,我们来给客户端程序加个压缩壳,对程序进行压缩。
    这里采用mpress进行加壳,先从网上下载mpress.exe,之后将ngrok.exe拖放到mpress.exe的图标上,就能完成加壳操作。我们可以看到,加壳后的程序只有1.94MB,压缩率不到20%,大大节省了磁盘空间。同时小文件加载起来,速度会更快。
  •  在linux下面运行时别忘记给ngrok和ngrok.cfg加权限了!
  • chmod -R 777 ngrok
    chmod -R 777 ngrok.cfg
  • ./ngrok -config=./ngrok.cfg -subdomain=www 80
  • 参考地址:
  • http://chuansong.me/n/341281851829
    http://blog.csdn.net/uselym/article/details/49978813

 

 

 

 

 

 

 

 

 

发表评论

您必须登录才能发表评论!