Ngrok-内网穿透

与世无争的帅哥 提交于 2020-02-14 06:13:04



部分内容原文地址:

CSDN:STU2020:简单记一下ngrok内网穿透入门步骤(可以直接使用ip,不一定要域名)
CSDN:梦幻逝水:10分钟教你搭建自己的ngrok服务器
CSDN:keepggoing:阿里云搭建ngrok实现内网穿透
简书:philoZhe:内网穿透 ngrok 服务器搭建与坑点
OSCHINA:YunOu:CentOS7.4 搭建ngrok 内网穿透
简书:前端_逗叔:Ngrok搭建内网穿透–Centos 7.x
Ngrok内网穿透实现远程桌面



内网穿透步骤

  1. 安装go语言环境并配置环境。
  2. 下载ngrok源码(可上传源码或安装git下载源码 yum install git)
  3. 生成证书(本地生成)
  4. 用新证书替换旧证书
  5. 编译源码
  6. 生成对应客户端(window,Mac)
  7. 启动服务端
  8. 客户端配置、启动
  9. 启动本地web项目
  10. 大功告成,访问公网ip或 域名

1、安装go语言环境并配置环境

下载go语言环境:

wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz

然后解压:

tar -zxvf go1.8.linux-amd64.tar.gz

配置环境:vi /etc/profile:

export GOROOT=你的go解压地址
export PATH=$PATH:$GOROOT/bin

查看go是否安装成功:

go version

2、下载ngrok源码(可上传源码或安装git下载源码 yum install git)

安装git:

yum install git
# 下载源码
git clone https://github.com/inconshreveable/ngrok.git

3、生成证书(本地生成)

进入下载好或解压好的ngrok目录下 依次执行命令:

	openssl genrsa -out base.key 2048   (无脑复制粘贴)
	openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=xx.xx.xx.xx" -out base.pem     (xx.xx.xx.xx为ip或域名)
	openssl genrsa -out server.key 2048		(无脑复制粘贴)
	openssl req -new -key server.key -subj "/CN=xx.xx.xx.xx" -out server.csr	(xx.xx.xx.xx为ip或域名)
	echo subjectAltName = IP:xx.xx.xx.xx > extfile.cnf    (xx.xx.xx.xx为ip或域名)
	openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -extfile extfile.cnf -days 10000 -out server.crt

4、用新证书替换旧证书

在下载好或解压好的ngrok目录下 执行覆盖替换。

	cp base.pem assets/client/tls/ngrokroot.crt

5、编译源码

在下载好或解压好的ngrok目录下 执行编译:

	make release-server release-client

(使用 ip 做域名时,随机生成的子域名导致地址错误 例如http://92832de0.1.1.1.1 -> localhost:80:解决办法就是改源码,去掉随机生成 ,在下载好或解压好的ngrok目录下找到src/ngrok/server/tunel.go文件,修改源码位置:

// src/ngrok/server/tunel.go  #89 行
// Register for random URL
t.url, err = tunnelRegistry.RegisterRepeat(func() string {
 return fmt.Sprintf("%s://%x.%s", protocol, rand.Int31(), vhost)
}, t)

删掉 【%x.】 【rand.Int31(),】 以及该文件第一行引入的 【math/rand】,重新编译出服务端与客户端即可。

6、生成对应客户端

编译好源码后,生成客户端(本地电脑使用的)
在下载好或解压好的ngrok目录下 执行命令。

GOOS=windows GOARCH=amd64 make release-client  (windown系统)

7、启动服务端

在下载好或解压好的ngrok目录下 执行命令启动:

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xx.xx.xx.xx" -httpAddr=":80" -httpsAddr=":443"    

(xx.xx.xx.xx为ip或域名,httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。)

8、客户端配置、启动

将生成好的客户端(ngrok目录下 bin/windows_amd64/ngrok.exe),下载到本地发到自己喜欢的目录下
1、在本地同级目录下创建配置文件ngrok.cof内容如下:
server_addr: “xx.xx.xx.xx:4443” (xx.xx.xx.xx为ip或域名)
trust_host_root_certs: false
2、在本地同级目录下创建启动脚本startup.bat 内容如下:
ngrok -config=ngrok.cfg -log=ngrok.log 8080 (8080为本地项目的端口可以任意改)
3、双击startup.bat 启动客户端

9、启动本地项目、访问公网ip或域名

10、其他

服务器上ngrok后台运行:

1、安装 yum install screen
2、screen -S ngrok( -S后面的名字可以随便取)
3、运行ngrok启动命令【./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xx.xx.xx.xx" -httpAddr=":80" -httpsAddr=":443" 】
4、直接关掉ssh窗口
4、关闭ps -ef|grep screen 然后用kill
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!