标签

Ngrok的搭建---Raspbian客户端&Centos服务端

By 小鸟游·飒


  • Centos环境安装

  • go

#下载
wget https://storage.googleapis.com/golang/go1.9.1.linux-amd64.tar.gz
# 解压  
tar -zxvf go1.9.1.linux-amd64.tar.gz /usr/local/
#删除刚才下载的git包

#进入/usr/bin
cd /usr/bin
ln -s /usr/local/go/bin/go ./
ln -s /usr/local/go/bin/godoc ./
ln -s /usr/local/go/bin/gofmt ./
#测试
go env

GOARCH="amd64"
GOBIN=""
GOEXE=""
.
.
.
  • git

# 安装git所需要的依赖包  
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++

# 下载新版本git (版本列表 https://www.kernel.org/pub/software/scm/git/)  
cd /usr/local  
wget https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz  

# 解压  
tar zxvf git-2.16.2.tar.gz  

# 编译git  
cd git-2.16.2  
./configure --prefix=/usr/local/git  
make  
make install  

#删除刚才下载的git包
cd /usr/local
rm git-2.16.2.tar.gz -y
  • ngrok

#下载
cd /usr/local/  
git clone https://github.com/inconshreveable/ngrok.git
#环境变量
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="xxx.xxx.com"
#生成证书
cd /usr/local/ngrok
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
#拷贝生成的证书覆盖默认内容
#此过程需y确认并回车,请逐一复制
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
#生成服务端
cd /usr/local/ngrok/  
GOOS=linux GOARCH=amd64 make release-server
#生成客户端
GOOS=linux GOARCH=arm make release-client
(linux分amd64与386[分别是64位和32位]raspbian为上面实例arm)
(windows: GOOS=windows GOARCH=amd64 make release-client)
#启动服务端
cd /usr/local/ngrok/bin
ngrokd -domain="xxx.xxx.com" -httpAddr=":9265" -httpsAddr=":19265" -tunnelAddr=":4443"

#-domain后面你上面写的域名  -httpAddr http端口  -httpsAddr https 端口   -tunnerlAddr 客户端端口,连接端口
*****网上报错解决方式收录*****
#tunnerlAddr填写的端口一定要保证是开放的!

#生成服务端时
go get -tags 'release' -d -v ngrok/...  go install -tags 'release' ngrok/main/ngrokd  
go install: cannot install cross-compiled binaries when GOBIN is set  
make: *** [server] Error 1
#处理方式
cd /usr/local/ngrok
mkdir bin  
cp $GOBIN/go-bindata bin/  
unset GOBIN
  • nginx反向代理,省略端口号

#在nginx的配置文件中添加下面这段
server 
	{ 
		listen 80; 
		server_name ***.***.com; 
		location / { 
			proxy_set_header X-Real-IP $remote_addr; 
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
			proxy_set_header Host $http_host:110; #端口自行更改
			proxy_set_header X-Nginx-Proxy true; 
			proxy_set_header Connection ""; 
			proxy_pass http://127.0.0.1:110;
		} 
	}


  • Raspbian客户端使用

  • go

各系统版本包参考,红框是树莓派用的

#需翻墙
wget https://storage.googleapis.com/golang/go1.9.1.linux-armv6l.tar.gz
#解压至/usr/local
tar -C /usr/local -xzf go1.9.2.linux-armv6l.tar.gz
#删除刚才下载的git包

#修改环境变量
nano ~/.profile
#末尾添加
export PATH=$PATH:/usr/local/go/bin
#使环境变量生效
source ~/.profile

#检测是否生效
go version
  • 随系统自启(如做此操作,则无需下一步多窗口运行)

cd /etc/systemd/system/
#新建一份ngrok.service文件
#导入下方代码
[Unit]
Description=ngrok
After=network.target
[Service]
Type=simple
ExecStart=/你的路径/ngrok -config /你的路径/ngrok.cfg start-all
[Install]
WantedBy=multi-user.target
#运行ngrok
systemctl start ngrok
#查询运行状态
systemctl status ngrok
#设置开机自启
systemctl enable ngrok
#重启服务
systemctl restart ngrok
#查看运行日志
journalctl | grep -i ngrok
  • screen

apt-get install screen
  • 客户端部分

#将服务器上/usr/local/ngrok文件夹下载下来
#找到在服务器上编译好的树莓派客户端路径文件夹ngrok/bin/linux_arm
#在此文件夹下新建ngrok.cfg配置文件
server_addr: "***.com:4443"
trust_host_root_certs: false
tunnels:
    #因为证书的原因,只有再生成一份才允许跑2个...(我猜的)
    #因此千万不要随便关闭ngrok的进程,否则只有进该客户端的局域网范围内才可以再次连上了!
    ssh:
        remote_port: 9214
        proto:
            tcp: 19266
    http:
        remote_port: 9265
        subdomain:
            space
        #auth:
            #"user:password"
        proto:
            http: 9265
    #以下为第二种写法
    #vnc:
        #remote_port: 55901
        #proto:
            #tcp: "内网ip:5901
#保存后执行
./ngrok -config ngrok.cfg start-all


  • windows客户端使用

#从服务器上下载编译完的ngrok.exe文件
#将下载完的文件保存至新建ngrok文件夹(最好使用同名文件夹,方便寻找)
#新建配置文件ngrok.cfg
server_addr: "***.com:4443"   #你上面自己写的域名
trust_host_root_certs: false
#新建启动脚本startup.bat
@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=ngrok 9265
#其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。9265为端口号。

#开机自启视情况自行设定


2019-10-18 00:10
暂时关闭评论
暂无相关评论