Centos6.8自建ngrok服务

由于路由器的ddns实在不是很稳定,刚好手里也有闲置的服务器(只搭了酸酸乳)。于是开始折腾。是的,之前的坑又没填,我知道了!。

安装ngrok服务-先配置环境

安装Go 1.5

下载编译好的文件压缩包

cd /tmp
wget https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz

找个目录解压

tar -C /usr/local -xvzf /tmp/go1.5.linux-amd64.tar.gz

修改环境变量 /etc/profile

echo "export PATH=\$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profile

验证安装

go version

安装git(有的话可以不要装了)

安装依赖

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y

下载源码包 git-2.5.0

解压编译安装巴拉巴拉

tar xvzf /tmp/git-2.5.0.tar.gz
cd git-2.5.0
./configure --prefix=/usr/local/git
make
make install

配置环境变量加上验证

echo "export PATH=\$PATH:/usr/local/git/bin" >> /etc/profile

source /etc/profile

git --version

安装ngrok

获取源码

cd /tmp
git clone https://github.com/inconshreveable/ngrok.git

生成自签名ssl证书   ngrok.yunrui.online 域名换成自己的,域名错了会GG。

cd /tmp/ngrok

openssl genrsa -out rootCA.key 2048

openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.yunrui.online" -days 5000 -out rootCA.pem

openssl genrsa -out device.key 2048

openssl req -new -key device.key -subj "/CN=ngrok.yunrui.online" -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key

设置变量并生成ngrok服务端和客户端

GOOS=linux GOARCH=amd64  #如果是32位系统,GOARCH=386
make release-server release-client

编译的文件会出现在ngrok的/bin目录下  ngrokd是服务端文件,待会运行。ngrok是客户端文件,想办法下载到客户端运行,我是先用winscp下载到电脑再传到linux里面去的。自己看着办。

上面GOOS=linux编译出来的ngrok只能在linux里面运行,要是需要在win下运行,需要编译win下的.exe文件

 

cd  /tmp/ngrok/

GOOS=windows GOARCH=amd64 make release-server release-client

编译完成,启动服务端

cd  /tmp/ngrok/bin

./ngrokd -domain="ngrok.yunrui.online" -httpAddr=":7777"

注意域名和端口 7777可以换成80或者443之类的,7777就要用xxx.ngrok.yunrui.online:7777  访问

命令执行,服务就启动了,若是报错说服务已经运行或者端口占用。自行百度linux查询端口使用情况杀进程

ngrok客户端使用

想办法把客户端 ngrok 文件,下载到需要做映射的主机上

新建一个ngrok.cfg文件-写入配置

server_addr: "ngrok.yunrui.online:4443"
trust_host_root_certs: false
tunnels:
  http:         #隧道名称
    proto:
      http: 80   #协议 端口
    subdomain: www  #自定义域名
  ssh:
    remote_port: 10086   #外部端口
    proto:
      tcp: 22           #协议 端口

运行客户端

 ./ngrok -config=./ngrok.yml start web   #启动http服务 使用的前缀域名为www
 ./ngrok -config=./ngrok.yml start tcp     #启动ssh服务 使用远程端口10086

 

显示online 并且出现forwarding 的内容就是连接成功了,访问成功下方会出现 200或者404之类的网站访问日志。   若是online却一直无法访问,请研究下防火墙配置,服务器安全策略等东西。

今天这个环境没办法截图了,下次补。可能这辈子都不会补上了