树莓派 centos 内网 花生壳 ngrok 内网穿透

前端之家收集整理的这篇文章主要介绍了树莓派 centos 内网 花生壳 ngrok 内网穿透前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


uname -m
armv7l

getconf WORD_BIT
32




tar -C /usr/local/ -xzf go***.gz

export PATH=$PATH: /usr/local/go/bin

go version查看go环境是否配置正确



需要设置ngrok服务的域名和子域名都要添加解析,例如设置后面的 tun.sfantree.com ,那么 tun *.tun 的解析均需要添加A记录


客户端:
./ngrok -config=ngrok.cfg start ssh
如果要同时开始80 和22端口转发 就start ssh http即可

mapping values are not allowed here
出现这个错误的是因为yaml格式不正确,谷歌定义的yaml格式太严格了,每个冒号后面都必须带有空格


服务端:

ngrokd -tlsKey="snakeoil.key" -tlsCrt="snakeoil.crt" -domain="ngrok.ele.com" -httpAddr=":801" -httpsAddr=":802" //推荐使用不会冲突的9021,9022

访问形式为xxx.ngrok.ele.com:801
后台执行nohup xxx &

为了安全许多服务器会将端口屏蔽,我使用的是ECS服务器,默认801,802都是关闭的,需要手动开启,在阿里云的后台添加开放的端口就可了
http使用801端口,https使用802端口
供客户端连接的管道端口为4443端口

由于服务器上同时运行着IIS,故服务端Ngrok启动时无法使用80端口,所以在上面,我使用了801作为Ngrok服务器的http端口

httpAddr、httpsAddr 分别 用来转发 http、https 服务的端口,ngrokd 还会开一个 4443 端口用来跟客户端通讯,注意设置防火墙使端口开放。


./ngrokd -domain="ngrok.ele.com" -httpAddr=":801" -httpsAddr=":802"
[14:17:55 UTC 2018/01/03] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds
[14:17:55 UTC 2018/01/03] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[14:17:55 UTC 2018/01/03] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:801
[14:17:55 UTC 2018/01/03] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:802
[14:17:55 UTC 2018/01/03] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443




如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。






openssl genrsa -out rootCA.key 2048
openssl req -new -x509 -nodes -key rootCA.key -days 10000 -subj "/CN=ngrok.ele.com" -out rootCA.pem

openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=ngrok.ele.com" -out server.csr

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

assets/client/tls和assets/server/tls下分别存放着用于ngrok和ngrokd的默认证书文件,我们需要将它们替换成我们自己生成

将证书文件复制到指定位置

cp rootCA.pem assets/client/tls/ngrokroot.crt -icp server.crt assets/server/tls/ snakeoil .crt -icp server.key assets/server/tls/ .key -i

编译服务器端与客户端
export GOPATH=/home/ngrok //clone的代码目录
服务器端为linux-x86-64
export GOOS=linuxexport GOARCH=386//应该是amd64make release-server

ls bin/linux_amd64/
ngrokd
需要运行在公网服务器上。



可以通过改变 GOOS GOARCH 获取各个平台的客户端与服务端, 可以指定为 windows linux freebsd darwin (Mac OS X 10.5 or 10.6)

可以指定为 amd64 (64-bit x86) 、 386 (32-bit x86) 、 和 arm (32-bit ARM),可见Go语言的跨平台能力相当彪悍。

树莓派为linux-arm架构,重新声明 go env 里的变量
export GOOS=linux
export GOARCH=arm
make release-client

ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道

现在假定我的本地已成功部署了一个网站,访问地址为127.0.0.1,想内网穿透后被公网上的用户访问,一般步骤如下:

客户端放 树莓派上, 如果连接成功,会提示如下信息:
Tunnel Status变为online

客户端就是您的web应用程序所运行的主机

#指定子域名为 ngrok ( (ngrok是你自定义的域名前缀) ),采用http协议和使用80端口(需要转发的端口)./ngrok -subdomain rpi -proto=http -config=ngrok.cfg 80

这个子域名是任意写的
会解析成rpi.ngrok.ele.com
如果写成demo,则解析成demo.ngrok.ele.com


创建一个配置文件ngrok.cfg,内容如下:
server_addr: "ngrok.ele.com:4443" 注意冒号后面有空格
trust_host_root_certs: false
就用这个配置,不要用start ssh http那种了。
执行ngrok:
$ ngrok -subdomain rpi -config=ngrok.cfg 80
这样应该访问的是 rpi.ngrok.ele.com


由于go语言的特性,在编译时直接生成机器码,所以在运行过程中并不需要go的环境


修改server监听端口了。将-tunnelAddr由4443改为443
-tunnelAddr=":443"

systemctl stop firewalld



配置文件示例



ssh

./ngrok -config=ngrok.cfg start ssh

猜你在找的CentOS相关文章