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