你的位置:首页 > 互联网IT

ngrok,ngrok内网穿透,ngrok穿透,ngrok映射,ngrok_Windows服务器端搭建,ngrok_Windows客户端搭建,ngrok搭建,ngrok代理,ngrok教程,ngrok服务器端,ngrok客户端,ngrok转发,ngrok端口映射,ngrok端口穿透

系统:Windows/linux

软件:ngrok

软件下载:

windows服务端+客户端:ngrok_Windows版本.rar  

linux服务端+客户端:ngrok_linux版本.rar


ngrok_Windows服务器端启动说明


新建:服务器端启动.bat

ngrokd_x64.exe -domain="www.badiu.com" -httpAddr=":801" -httpsAddr=":802" -tunnelAddr=":7000"

说明:

程序 域名 http端口:801 https端口:802 客户端连接端口:7000

使用这个-domain参数就是对应你之前解析到服务器的二级域名ngrok和三级域名*.ngrok的,如果你想对应一级域名,这里可以用"domain.com"替换"ngrok.domain.com"


带证书启动设置

新建:服务器端启动.bat

ngrokd_x64.exe -tlsKey="snakeoil.key" -tlsCrt="snakeoil.crt" -domain="www.badiu.com" -httpAddr=":801" -httpsAddr=":802" -tunnelAddr=":7000"

说明:

程序 证书秘钥 证书 域名 http端口:801 https端口:802 客户端连接端口:7000

使用这个-domain参数就是对应你之前解析到服务器的二级域名ngrok和三级域名*.ngrok的,如果你想对应一级域名,这里可以用"domain.com"替换"ngrok.domain.com"



ngrok_Windows客户端端启动说明

新建:客户端启动.bat

ngrok_x64.exe -config=config.conf start a web2 ssh

说明:

程序  配置文件config.conf  启动配置文件名称:a web2 ssh



config.conf 配置

server_addr: "www.baidu.com:7000"

tunnels:

web1:

subdomain: "a"

proto:

http: 127.0.0.1:80

web2:

hostname: "www.ngrok.cc"

proto:

https: 192.168.1.156:443

ssh:

remote_port: 10011

proto:

tcp: 192.168.1.1:22


config.conf 说明:

server_addr: "www.baidu.com:7000"     #//服务器IP/域名:端口

tunnels:

web1:                                 #//名称1(不要重复)

subdomain: "a"                        #//二级域名

proto:

http: 127.0.0.1:80                    #//http-web端口

web2:                                 #//名称2(不要重复)

hostname: "www.ngrok.cc"              #//域名

proto:

https: 192.168.1.156:443              #//https-web端口

ssh:                                  #//名称3(不要重复)

remote_port: 10011                    #//服务器开放端口TCP

proto:

tcp: 192.168.1.1:22                   #//本地/远程IP域名:端口



ngrok_linux服务器端启动说明


上传服务器端:ngrokd_x64

加入权限:chmod +x ngrokd_x64


服务器端启动:

/root/ngrok/ngrokd_x64 -domain="www.baidu.com" -httpAddr=":801" -httpsAddr=":802" -tunnelAddr=":7000"

说明:

程序 域名 http端口:801 https端口:802 客户端连接端口:7000


后台运行:后台运行不能使用 & ,也不知道原因。

nohup /root/ngrok/ngrokd_x64 -domain="www.baidu.com" -httpAddr=":801" -httpsAddr=":802" -tunnelAddr=":7000"


带证书服务器端启动:

/root/ngrok/ngrokd_x64 -tlsKey=/root/ngrok/server.key -tlsCrt=/root/ngrok/server.crt -


domain="www.baidu.com" -httpAddr=":801" -httpsAddr=":802" -tunnelAddr=":7000"

说明:

程序 证书秘钥 证书 域名 http端口:801 https端口:802 客户端连接端口:7000

使用这个-domain参数就是对应你之前解析到服务器的二级域名ngrok和三级域名*.ngrok的,如果你想对应一级域名,这里可以用"domain.com"替换"ngrok.domain.com"


结束ngrokd_x64

killall -I ngrokd_x64



ngrok_linux客户端端启动说明


上传客户端:ngrok_x64

加入权限:chmod +x ngrok_x64


客户端启动:

同目录下启动

./ngrok_x64 -config=./config.conf start a web2 ssh

说明:

程序  配置文件config.conf  启动配置文件名称:a web2 ssh


后台运行,后台运行不能使用 & ,也不知道原因。

nohup ./ngrok_x64 -config=./ngrok.cfg start a web2 ssh


结束ngrok_x64

killall -I ngrok_x64


config.conf 配置

server_addr: "www.baidu.com:7000"

tunnels:

web1:

subdomain: "a"

proto:

http: 127.0.0.1:80

web2:

hostname: "www.ngrok.cc"

proto:

https: 192.168.1.156:443

ssh:

remote_port: 10011

proto:

tcp: 192.168.1.1:22


config.conf 说明:

server_addr: "www.baidu.com:7000"     #//服务器IP/域名:端口

tunnels:

web1:                                 #//名称1(不要重复)

subdomain: "a"                        #//二级域名

proto:

http: 127.0.0.1:80                    #//http-web端口

web2:                                 #//名称2(不要重复)

hostname: "www.ngrok.cc"              #//域名

proto:

https: 192.168.1.156:443              #//https-web端口

ssh:                                  #//名称3(不要重复)

remote_port: 10011                    #//服务器开放端口TCP

proto:

tcp: 192.168.1.1:22                   #//本地/远程IP域名:端口






服务端命令


--help 查看帮助


-domain 域名,已去掉证书验证可以使用ip,仅作tcp转发可以使用ip


-httpAddr HTTP连接,空字符串禁用 (default ":80")


-httpsAddr HTTPS连接,空字符串禁用 (default ":443")


-log 写消息记录到该文件。 “标准输出”和“无”具有特殊意义 (default "stdout")


-log-level 消息的级别记录。其中之一:DEBUG,INFO,WARNING,ERROR (default "DEBUG")


-tlsCrt TLS证书文件路径


-tlsKey TLS key证书文件路径


-tunnelAddr 公共广播监听ngrok客户端 (default ":4443")



客户端命令


--help 查看帮助


-config 配置文件路面


-hostname 自定义域名


-log 日志的路径,非必须


-log-level 日志级别:DEBUG,INFO,WARNING,ERROR (default "DEBUG")


-proto 隧道协议 http、https、tcp、默认为http和https


-server_addr 服务器地址


-subdomain 子域名,当服务器配有域名启动的时候带上固定服务器分配的前缀域名,对应域名在服务端启动的-domain


1、服务端下载地址

Linux 32位

Linux 64位

Linux ARM

Windows 32位

Windows 64位

Mac OS 32位

Mac OS 64位

2、客户端下载地址

Linux 32位

Linux 64位

Linux ARM

Windows 32位

Windows 64位

Mac OS 32位

Mac OS 64位


参考文章:https://www.sunnyos.com/article-show-74.html

http://www.sunnyos.com/article-show-61.html

https://www.cxyzjd.com/article/weixin_41186948/83189598

https://www.cxyzjd.com/article/qq_41357211/100901115


QQ截图20211014195630.jpg ngrok,ngrok内网穿透,ngrok穿透,ngrok映射,ngrok_Windows服务器端搭建,ngrok_Windows客户端搭建,ngrok搭建,ngrok代理,ngrok教程,ngrok 互联网IT

部署服务器端主程序

5.1、部署到Windows Server服务器

 将生成的ngrokd.exe文件复制到windows服务器中,当然如果要部署到linux中也是没有问题的。

这里我将ngrokd.exe放在c:\grokeServer目录下:


为了方便,我编写了一个批处理文件:ngrokserver2.bat

ngrokd.exe -tlsKey="snakeoil.key" -tlsCrt="snakeoil.crt" -domain="ngrok.你的域名.com" -httpAddr=":801" -httpsAddr=":802"

点击批处理运行结果如下:


绑定的域名换成自己的域名,http使用801端口,https使用802端口,供客户端连接的管道端口设置为4443端口,必须前面的域名相同。

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


5.2、一键部署ngrok服务器(CentOS、Debian、Ubuntu)

如果编译生成ngrok的源代码生成应用太麻烦,你可以选择网友写的工具,支持一键部署到安装平台:CentOS、Debian、Ubuntu。

https://github.com/clangcn/ngrok-one-key-install

六、部署ngrok客户端

这里的客户端就是您的web应用程序所运行的主机,将ubuntu生成的ngrok.exe客户端应用复制到您的系统中:


添加配置文件ngrok.cfg:

server_addr: "ngrok.你的域名.com:4443"
trust_host_root_certs: false

 添加批处理start.bat,如果只运行一次直接在命令行下输入命令也是一样的效果,内容如下:

ngrok.exe -subdomain kyt -config=ngrok.cfg 8987

其中8987为端口号,运行成功的结果如下所示: 


看到这个界面时说明已成功了。


Ngrok一个端口穿透运行

这些步骤完成了,就可以开始运行程序了。

5.1 运行服务器端

首先运行服务器端,需要带上相应的参数:

/usr/local/ngrok/bin/ngrokd -tlsKey=/usr/local/ngrok/server.key -tlsCrt=/usr/local/ngrok/server.crt -domain="ngrok.domain.com"

使用这个-domain参数就是对应你之前解析到服务器的二级域名ngrok和三级域名*.ngrok的,如果你想对应一级域名,这里可以用"domain.com"替换"ngrok.domain.com"。

小贴示:很多说明的文章里会带上端口的参数,其实可以不用填,在客户端运行时填写端口参数就可以了

5.2 运行客户端

运行客户端稍有点复杂,有几个步骤要做。

5.2.1 生成参数文件

ngrok要穿透的域名和端口都需要通过参数文件表达,先来个最简单的吧,新建ngrok.cfg文件:

nano ngrok.cfg

文件要确保和之前生成的客户端执行文件在一个文件夹内。编辑文件内容:

server_addr: "ngrok.domain.com:4443"
trust_host_root_certs: false

保存退出。ngrok.domain.com就是你的域名。

如果是在windows下,可以使用最简单的记事本新建,文件内容完全一致。编辑完成保存的时候一定要记得选择Utf-8编码方式,保存类型选择 所有文件*.*,否则执行的时候会出错。

5.2.2 执行客户端程序

./ngrok -config=./ngrok.cfg -subdomain=域名前缀 80

确保在ngrok文件夹内,域名前缀就是你需要访问的域名的前缀,比如www.domain.com中的www,最后的80就是你要穿透的端口号。

在windows下使用命令:

 ngrok -config=ngrok.cfg -subdomain 域名前缀 80

这里的域名前缀和上面讲的是同一个内容。

运行成功后,命令窗口就会显示一个文字UI界面。到这里,我在内网的树莓派建立的Web程序宝塔Linux面板就可以正常访问了,端口号80是默认端口,可以不用www.domain.com:80这样输入,如果你用的是其他端口,就需要在域名后输入:端口号,比如www.domain.com:8080

小贴示:到这个步骤,你已经成功设置一个域名的内网穿透了。

6. Ngrok多个端口穿透运行

只穿透一个端口有点太浪费了,我决定多穿透几个,于是继续搜索文章,又让我找到了学习的对象,开始下一个步骤。

小贴示:程序的编译和服务器端的运行都不用改变,只需要改变客户端命令即可。

6.1 运行多个端口穿透的客户端参数

多个端口和一个端口的穿透最大的区别就在于ngrok.cfg这个文件里的内容:

server_addr: "ngrok.domain.com:4443"
trust_host_root_certs: false

tunnels: 
    tunnel1:
        subdomain: 域名前缀1
        proto:
            http: 80
    forex:
        subdomain: 域名前缀2
        proto:
            http: 8080 
    mysql:
        remote_port: 3306
        proto:
            tcp: 3306

这里要介绍一个之前没有出现的概念——隧道 tunnels,其实这才是Ngrok的核心,我还处于一知半解的状态,大家可以将它理解为你想要穿透的端口号,一个端口就需要一条tunnel,同时可以有多条隧道运行。

6.2 执行多隧道客户端程序

这条命令多了几个参数:

./ngrok -config ngrok.cfg start tunnel1 forex mysql

多了start参数,以及三条隧道的名称。这其中tunnel1forex都是http的穿透,适合Web应用程序,比如网站服务程序。而mysql这条隧道是tcp协议穿透的,比如数据库连接。这里需要注意remote_port: 3306这一行,这是为默认地址配置端口号,如果你不填写后面的数字,系统会自动分配一个,这会造成穿透失败,需要直接配置成和你的要穿透的端口一致的状态。

7. 后台运行和控制

前面的命令我都是通过SSH连接执行的,只要关闭SSH连接窗口,命令就被终止了,所以需要后台运行程序。以下内容未在windows中尝试,如果有需要的请自行搜索。如果方便,也可以发邮件告诉我进行补充ixujue@vip.qq.com

7.1 服务器端后台运行

这里我们要用到nohup命令和&的组合:

nohup /usr/local/ngrok/bin/ngrokd -tlsKey=/usr/local/ngrok/server.key -tlsCrt=/usr/local/ngrok/server.crt -domain="ngrok.domain.com" &

运行后会提示nohup ignoring input and appending output to ‘nohup.out’,这是代表执行结果记录日志文件不可写,重定向到nohup.out这个文件了,说明已经执行成功了。运行成功后,窗口不会显示任何内容,之前执行的过程都隐藏了,这和使用了&命令有关。


7.2 客户端后台运行

客户端后台运行不能使用&命令,会直接出错,我不明白其中的原因。

执行一个端口穿透的命令:

nohup ./ngrok -config=./ngrok.cfg -subdomain=域名前缀 80

执行多个端口穿透的命令:

nohup ./ngrok -config ngrok.cfg start tunnel1 forex mysql

执行完成后,可以关闭窗口也不会终止服务。

7.3 查询后台运行程序

重新使用SSH连接后,无论是服务器端还是客户端程序的运行情况都不会显示,我们无法确认是否正常运行,所以需要查看后台运行的程序:

ps -aux

运行这个命令就可以显示后台所有的程序,这里是三个参数的集合-a -u -x,具体哪个是什么意思,大家可以去搜索学习。

显示的结果中注意看最右端,会看到/usr/local/ngrok/...这样一行,这就是在后台运行的程序了。

7.4 关闭后台运行程序

关闭后台运行的程序需要用到kill命令:

kill -9 程序ID

这个程序ID要在ps -aux显示的结果中对应行左边查看,第一列是命令的用户,第二列就是程序ID。运行该命令就会关闭后台运行的程序。

8. 小结

到这里,Ngrok就可以为你正常提供服务了。这两天时间,我走了太多的弯路,重置过4次阿里云服务器系统盘。还好现在网上的相关资料非常丰富,让我可以尽情学习,谢谢各位前辈大公无私的奉献,这也是让我想要把自己的经验进行分享的最大动力。

想要在整体过程中做到知其然亦知其所以然还是比较困难的,除非你对Linux和Ngrok两者都非常熟悉,以及网络端口相关的知识。所以在这种情况下,我是追求能够正常运行,然后再逐渐学习相关内容,在实践中学习。

9. 命令参考

所有的操作我都是在root账号下进行的。

最后我把整个过程中我使用到的Linux命令都列出来,供大家搜索参考学习。

命令用途
cd 目录位置变更目录,/代表根目录。
mkdir 文件夹名创建文件夹。
apt-getDebian安装软件命令。
nano一个字符终端的文本编辑器,简单易用。
nohup让进程后台运行,与SSH终端连接无关。
&让进程后台运行,SSH终端连接断开失效。
cp复制文件。
ps查看后台运行文件。
kill终止后台运行文件。
scp远程复制文件。


服务端命令

  • --help 查看帮助

  • -domain 域名,已去掉证书验证可以使用ip,仅作tcp转发可以使用ip

  • -httpAddr HTTP连接,空字符串禁用 (default ":80")

  • -httpsAddr HTTPS连接,空字符串禁用 (default ":443")

  • -log 写消息记录到该文件。 “标准输出”和“无”具有特殊意义 (default "stdout")

  • -log-level 消息的级别记录。其中之一:DEBUG,INFO,WARNING,ERROR (default "DEBUG")

  • -tlsCrt TLS证书文件路径

  • -tlsKey TLS key证书文件路径

  • -tunnelAddr 公共广播监听ngrok客户端 (default ":4443")

  • Linux、MAC服务端启动

./ngrokd --domain="xx.xxx.xx.xx"  默认方式setsid ./ngrokd --domain="xx.xxx.xx.xx" 后台运行
  • Windows服务端启动

打开cmd命令行提示符窗口,通过命令行进入到ngrokd.exe所在的目录,输入以下命令

ngrokd.exe --domain="xx.xxx.xx.xx"  默认方式

2、客户端命令

  • --help 查看帮助

  • -config 配置文件路面

  • -hostname 自定义域名

  • -log 日志的路径,非必须

  • -log-level 日志级别:DEBUG,INFO,WARNING,ERROR (default "DEBUG")

  • -proto 隧道协议 http、https、tcp、默认为http和https

  • -server_addr 服务器地址

  • -subdomain 子域名,当服务器配有域名启动的时候带上固定服务器分配的前缀域名,对应域名在服务端启动的-domain

  • 配置文件的使用方法详情可以观看:《Sunng-ngrok的最新使用方法》,里面有配置文件每一项详情介绍

  • Linux、Mac OS、Windows配置文件,下面格式保存为ngrok.cfg(可以其他名字,自己定义)

server_addr: "server.ngrok.cc:4443"    tunnels:    sunny:        subdomain: "sunnyos"        auth: "sunny:admin1993"        proto:            http: 192.168.1.108:80    sunny1:        subdomain: "sunnyos1"        proto:            http: 192.168.1.104:80    ssh:        remote_port: 50000        proto:            tcp: 192.168.1.120:22

配置文件启动方式

Linux、Mac OS命令

./ngrok -config=./ngrok.cfg start sunny 启动配置文件里面的某一个隧道

Windows命令,需要先进入到客户端所在的目录

ngrok.exe -config=ngrok.cfg start sunny1 启动配置文件里面的某一个隧道

为了命令行使用方便更容易指向服务器,新增了一个 server_addr 选项,可一条命令进行全部配置的启动,下面是不需要配置文件的启动方式

Linux、Mac OS启动

./ngrok -server_addr=ip:4443 -proto=tcp 22 这样映射本地的22端口,远程端口将由服务器分配./ngrok -server_addr=ip:4443 -subdomain=abc -proto=http 80 映射前置域名为abc的域名到本地的80端口

Windows启动

ngrok.exe -server_addr=ip:4443 -proto=tcp 22 这样映射本地的22端口,远程端口将由服务器分配ngrok.exe -server_addr=ip:4443 -subdomain=abc -proto=http 80 映射前置域名为abc的域名到本地的80端口

  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。