让内网的计算机能被外网访问【使用ngrouk搭建免费的内网穿透】

你需要具备一下知识:

1. 懂得linux命令行下的操作

2. 熟悉ssh连接

3. 熟悉scp命令

4. 对外网环境和内网环境有一定理解

准备材料:

1. 内网环境需要被外网访问的计算机一台,linux和windows都支持

2. 能被公网访问,且已绑定域名的linux服务器一台

下载git命令的go语言环境

yum install gcc  git go 

通过git命令下载ngrouk源码

git clone https://github.com/inconshreveable/ngrok.git
进入下载的源码目录
cd ngrok

生成密钥文件

注意,下列命令中的域名换成你服务器绑定的域名

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=linhongzhao.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=linhongzhao.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
yes|cp rootCA.pem assets/client/tls/ngrokroot.crt
yes|cp device.crt assets/server/tls/snakeoil.crt
yes|cp device.key assets/server/tls/snakeoil.key

编译生成服务器端

编译成功后,在ngrouk的bin目录下会产生ngroukd程序

GOOS=linux GOARCH=amd64
make release-server

编译生成客户端

windows下将GOOS后面的linux换成windows即可

GOOS=linux GOARCH=amd64
make release-client

编译成功后,在ngrouk的bin目录下会产生ngrouk程序(注意和服务器程序ngroukd区分)

接下来我们需要将客户端程序下载到本地,可以在本地使用scp命令

scp <用户名>@<你的服务器ip>:<你的服务器上ngrouk所在目录> <你希望下载到本地的路径>

下载下来以后,新建一个config文件,名字随便取。

这里我直接在ngrouk同级目录下新建ngrouk.conf

注意server_addr后的域名必须与你上面编译时候使用的域名完全一致

# 必须是 域名:隧道端口 的格式
server_addr: "linhongzhao.com.com:4443"
# 自行编译无需验证ngrok官网证书
trust_host_root_certs: false

接下来我们首先需要启动ngrouk服务器程序

回到你刚刚编译ngrouk的外网服务器,启动ngrouk/bin下的ngroukd

注意domain后面的域名必须与你上面编译时的域名一致。httpAddr后面的内容表示你要监听http协议访问的端口

./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="linhongzhao.com"  -httpAddr=":80" 

如果喜欢关闭终端退出远程后,服务程序依然能够运行,可以使用nohup+&

nohup ./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="zhangfengrui.com"  -httpAddr=":80" &

接下来就可以启动客户端程序了

subdomain后面是你要接受转发的子域名

后面的数字是你要转发到本机的端口

比如我下面这条命令的意思就是连接到服务器后,接受test.linhongzhao.com,转发到本地的9501端口

./ngrok -config=ngrok.conf -subdomain=test 9501

启动后,如果有一行绿色的 Tunnel Status                 online

则内网穿透成功啦

猜你喜欢

转载自blog.csdn.net/qq_23937195/article/details/80556522