Ubuntu下搭建ngrok服务器及客户端

您所在的位置:网站首页 ngrok下载apk Ubuntu下搭建ngrok服务器及客户端

Ubuntu下搭建ngrok服务器及客户端

2023-11-12 19:15| 来源: 网络整理| 查看: 265

记录一下自己在Ubuntu下搭建ngrok服务的过程 前言

最近想要在校园网内搭建一个VPN服务,但是因为校园网,所以没有公网IP,只好做内网穿透了,之前做了一些n2n以及ssh隧道的尝试,这次使用ngrok反向代理尝试一下:

由于最初没有安装go环境,以及下载go环境的一些不方便,曾打算使用ngrok-c,但是尝试以后,发现貌似仅支持openwrt。。。可能是我学艺不精吧,如果可以请私信我。

搭建环境:

局域网外(公网) - 阿里云的ECS服务器 - Ubuntu 16.04 64位 系统 - 用户:root

局域网内 - 树莓派 - Ubuntu 系统

-公网服务器端

安装go环境

别人的博客:

#wget https://golangtc.com/static/go/1.8.3/go1.8.3.linux-amd64.tar.gz wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar zxvf go1.8.3.linux-amd64.tar.gz mv go /usr/local/

emmmm,反正我是两个都下载失败了的,也是我一开始放弃go的原因. 直到,我使用了以下操作…

apt-get install golang

其他博客里的环境变量配置,我于是也没去弄了,其实是弄崩了一次bash。。

ngrok的配置 1.下载ngrok源码

方法一

git clone https://github.com/inconshreveable/ngrok.git export GOPATH=~/ngrok cd ngrok

方法二

wget htps://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/ngrok.tar.gz tar zxvf ngrok.tar.gz export GOPATH=~/ngrok cd ngrok 2.生成签名证书

使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,我们需要生成自己的证书,并提供携带该证书的ngrok客户端。

证书生成过程需要一个NGROK_BASE_DOMAIN。如果你要提供服务的地址为”temple.com”,那NGROK_BASE_DOMAIN就应该 是”temple.com”。就假设我的服务域名是temple.com。

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

执行完以上命令,在ngrok目录下会生成6个新的文件 device.crt device.csr device.key rootCA.key rootCA.pem rootCA.srl

3.替换证书

ngrok通过bindata将ngrok源码目录下的assets目录(资源文件)打包到可执行文件(ngrokd和ngrok)中 去,assets/client/tls和assets/server/tls下分别存放着用于ngrok和ngrokd的默认证书文件,我们需要将它们替换成我们自己生成的:(因此这一步务必放在编译可执行文件之前)

cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key 4.编译ngrokd(服务端)和ngrok(客户端)

在ngrok目录下执行如下命令,编译ngrokd:

GOOS=linux GOARCH=amd64 make release-server

go支持交叉编译的平台非常多,详见 GO中文文档

#64位linux server make release-server GOOS=linux GOARCH=amd64 #32位linux server make release-server GOOS=linux GOARCH=386

emmm,据说别的博客一般会出现两种错误,但遗憾的是我并没有遇到。

同样,在ngrok目录下编译ngrok: 我的客户端是运行在树莓派上,所以执行

GOOS=linux GOARCH=arm make release-client

编译完成过后~/ngrok/bin/ngrokd即为服务端运行文件 编译完成过后~/ngrok/bin/linux_arm/ngrok即为树莓派客户端运行文件

至此,文件编译已经完成,可以进行调试了。

调试 1.启动ngrokd(服务器) cp ~/ngrok/bin/ngrokd /usr/bin/ ngrokd -domain="temple.com" -httpAddr=":6000"

若弹出The program 'ngrokd' is currently not installed. You can install it by typing: apt install ngrok-server

不要使用它提供的语句,可以使用 find / -name ngrokd 找到在/root/ngrok/bin/ngrokd目录,于是

cd /root/ngrok/bin ./ngrokd -domain="temple.com" -httpAddr=":6000"

然后,正常的服务日志就出来了

[17:28:09 CST 2017/11/06] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified [17:28:09 CST 2017/11/06] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:6000 [17:28:09 CST 2017/11/06] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443 [17:28:09 CST 2017/11/06] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds 客户端的使用

在树莓派上用scp [email protected]:ngrok/bin/linux_arm/ngrok /home/pi/ngrok将bin文件夹下载到树莓派上。

cd ~/ngrok/bin cat > ngrok.conf ngrok.conf


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3