内网穿透工具-Ngrok

一、什么叫内网穿透

内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,具有一个动态或者是固定的公网IP,最后ADSL直接在 交换机 上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外,还可以解决UDP中出现的数据传输不稳定问题。

简单说, 就是A客户端要访问B客户端,通过一台服务器进行桥接,桥接有两种方式,一种是相互转发,另一个是告诉对方的地址,自己就当一个介绍人的角色。

1.1 作用:

利用ngrok工具,实现将内网Id地址映射成外网可以访问的域名。

1.2 常用场景:

  1. 外网回调(微信/支付宝支付等)
  2. 内网开完环境的联调
  3. 微信开发等

二、安装教程

2.1 注册账号

2.1.1 注册地址

地址:http://www.ngrok.cc/login/register

image-20210206205430389

2.1.2 登录账号

image-20210206205545300

2.2 购买服务

image-20210206205750515

2.3 Windows使用教程

2.3.1 下载客户端

根据自己的操作系统去下载对应的 客户端

2.3.2 启动隧道
img

下载之后得到两个文件,可以通过cmd命令行进到sunny.exe所在的目录执行

sunny.exe clientid 隧道id

多个隧道同时启动

sunny.exe clientid 隧道id,隧道id

另一种方式通过 Sunny-Ngrok启动工具.bat 启动,直接输入隧道id就好了

img

启动成功界面如下

img
2.3.3 Mac、Linux、树莓派使用教程
2.3.3.1下载客户端

根据自己的操作系统去下载对应的 客户端

2.3.3.2 启动隧道

Mac、Linux、树莓派的使用方式是一样的。Windows才会不一样。但是它们的启动方式都是通过隧道id启动,隧道id可以在隧道管理的列表里面获得。这里以映射http服务为例。

2.3.3.3 Mac、Linux、树莓派
./sunny clientid 隧道id

启动多个隧道

./sunny clientid 隧道id,隧道id
img

要想后台运行可以使用 setsid 命令

setsid ./sunny clientid 隧道id &
2.3.4 Ngrok开机自启动

有些用户需要开机随系统启动服务,本文将讲解如何在Linux下实现开机自动启动Ngrok客户端。

本文支持Ubuntu、树莓派、Centos7以下、Debian系列的系统。

如果Centos系统没有安装start-stop-daemon请看 Centos安装 start-stop-daemon

2.3.4.1操作步骤
  • 1、下载客户端
  • 2、编写脚本
  • 3、测试脚本
  • 4、设置开机启动

Ngrok客户端下载

2.3.4.2下载客户端

这一步就都不用说了大家都知道怎么操作。下载完成之后将客户端执行文件移动到 /use/local/bin 目录下并给予可执行权限。

sudo mv sunny /usr/local/bin/sunny
sudo chmod +x /usr/local/bin/sunny
2.3.4.3 编写启动脚本
sudo vim /etc/init.d/sunny
2.3.4.4 /etc/init.d/sunny 启动脚本代码
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          ngrok.cc
# Required-Start:    $network $remote_fs $local_fs
# Required-Stop:     $network $remote_fs $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: autostartup of ngrok for Linux
### END INIT INFO

NAME=sunny
DAEMON=/usr/local/bin/$NAME
PIDFILE=/var/run/$NAME.pid

[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
      if [ -f $PIDFILE ]; then
        echo "$NAME already running..."
        echo -e "\033[1;35mStart Fail\033[0m"
      else
        echo "Starting $NAME..."
        start-stop-daemon -S -p $PIDFILE -m -b -o -q -x $DAEMON -- clientid 隧道id || return 2
        echo -e "\033[1;32mStart Success\033[0m"
    fi
    ;;
  stop)
        echo "Stoping $NAME..."
        start-stop-daemon -K -p $PIDFILE -s TERM -o -q || return 2
        rm -rf $PIDFILE
        echo -e "\033[1;32mStop Success\033[0m"
    ;;
  restart)
    $0 stop && sleep 2 && $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac
exit 0

把代码里面的【隧道id】替换成自己的隧道id

2.3.4.5 测试可执行代码
sudo chmod 755 /etc/init.d/sunny
sudo /etc/init.d/sunny start
sudo /etc/init.d/sunny start    #启动
sudo /etc/init.d/sunny stop     #停止
sudo /etc/init.d/sunny restart  #重启
2.3.4.6 设置开机启动

Ubuntu、树莓派、Debian系列的系统

cd /etc/init.d
sudo update-rc.d sunny defaults 90    #加入开机启动
sudo update-rc.d -f sunny remove  #取消开机启动

Centos 7以下操作系统

sudo chkconfig --add sunny     #添加系统服务
sudo chkconfig --del sunny    #删除系统服务
sudo chkconfig --list        #查看系统服务
sudo chkconfig sunny on     #设置开机启动
sudo chkconfig sunny off     #设置取消启动
service sunny start         #启动
service sunny stop             #关闭
service sunny restart         #重启

2.3.4.7 Centos安装 start-stop-daemon

wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
tar -xzvf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
# 然后进入解压之后的路径 一直 cd 到start-stop-daemon.c在的目录 
cc start-stop-daemon.c -o start-stop-daemon
cp start-stop-daemon /usr/bin/start-stop-daemon

以上,请参考!


参考链接

  1. 官方文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值