自建ngrok服务实现内网穿透(ngrok内网穿透原理)

网友投稿 752 2022-10-08


自建ngrok服务实现内网穿透(ngrok内网穿透原理)

名词解释

内网穿透,又叫NAT穿透,是计算机用语,翻译过来就是 你的电脑可以直接被你朋友访问。 通常我们的电脑是无法自己被访问的。因为我们的电脑缺少自己的独立的ip地址。现在ip稀缺,电信运营商已经不会随便分配固定ip给个人。

通常实现内网穿透,是通过路由器上端口映射来实现的。但是路由器通常不是每个人都有权限可以访问和设置,而且可能存在多级路由器较为复杂的网络结构。端口映射也无法实现。

这就需要ngrok来实现了。

原理

ngrok 建立一个隧道,将主机A的传递给 主机B,从而实现内网穿透。

ngrok分为client端(ngrok)和服务端(ngrokd),

实际使用中的部署如下:

图中内网主机上安装客户端。 公网主机 安装服务端。 client public 则代表 访问你电脑的用户或者朋友。

实践

现在都云时代,各种服务都能找到提供商。内网穿透也是如此。ngrok服务端相当麻烦,如果你只是简单的穿透,又不是什么敏感信息,可以找到很多 服务提供商。例如​​​​则等于访问了 ​​localhost:4444​​

自建ngrok服务

使用别人的服务,存在一些限制。例如不稳定、安全问题,费用昂贵等。因此可能需要自己搭建ngrok服务端。 自建服务需要具备的条件: 1、具备独立ip的服务器。例如阿里云、腾讯云等。 我个人使用的阿里云ecs 2、需要域名。如果是国内则需要备案。我个人的域名是 xxxx.com

配置域名 增加2条A记录,指向你的服务器。这里我配置的是 ngrok.xxxx.com 和 *.ngrok.xxxx.com

添加安全组。 开放3个端口。这里我选择4443、4444、8081端口。 其中4443是ngrok自身通信使用。 4444 后面tcp端口转发使用。 8081 则是 但是这里80端口我分配给nginx了。

编译服务端。这里采用docker镜像来实现。登录服务器,创建文件夹 ngrok-server ,包含2个文件文件Dockerfile 内容如下

FROM golang:1.7.1-alpineADD build.sh /RUN apk add --no-cache git make opensslRUN git clone NGROK_DOMAIN="ngrok.xxxx.com"​​修改为你自己的域名。

构建镜像。运行

docker build -t ngrok .

注意 最后一个 ​​.​​ 别少了。

启动容器运行

docker run -it  -p 8081:8081 -p 4443:4443 -p 4444:4444  -d ngrok /ngrok/bin/ngrokd -domain="ngrok.xxxx.com" -httpAddr=":8081"

注意修改这里的ngrok.xxxx.com为你自己的域名。

到这里ngrok服务端已经完成。

进入图中划线的目录下,再进入Bin下。

这里就是客户端。对应的不同系统的版本。 我个人电脑是mac,64位系统 ,需要选择 darwin_amd64文件夹下载。 386代表是 32系统。amd64表示 64位。 linux和window无需多言。

下载命令可以通过很多方式。例如ftp或者scp命令。 我选择的是scp命令。

scp -P 你的服务端端口 -r  root@你的服务端ip地址:/var/lib/docker/volumes/6e5383924c5caf1b1b61250f31aa002308dcb371ebd9a7efad2419e20107a362/_data/bin/darwin_amd64/ngrok  ./ngrok

这里要注意下权限,如果你不是用root,可能没法子拷贝。

配置客户端创建配置文件 config.yml,其中内容如下

server_addr: "ngrok.xxxx.com:4443"trust_host_root_certs: falsetunnels:  webapp:   proto:     上图中地址即可看到本地内容。

测试下12345端口的功能。

监听12345端口。执行

nc -l 12345

在其他电脑或者本地执行

nc ngrok.xxxx.com 4444

这样就可以了。输入和输出都会显示。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMVC中文乱码踩坑记录
下一篇:IPsec入门篇讲解(第三篇)(ipsec流程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~