【实践记录】内网穿透工具natapp

5 min

之前本来没想弄这个natapp的,奈何天意需要弄一下,学校服务器在昨晚 11 左右不知道是重启了一下,还是怎么了,然后客服端离线了,连不上,然后同学在使用的时候来不上,找到了我,然后我又了解了一下natapp,然后还开了一个免费的通道给jupyter notebook

故事的开始

服务器不知道是咋滴啦,frp 客户端掉了,natapp 客户端也掉了。

客服端掉了
客服端掉了

开启了了解这个 natapp 之路。

配置 natapp SSH 通道

以创建免费的 SSH 通道为例。

1、创建 SSH 隧道

登录到 natapp 网页,在【我的隧道】中,点击【购买隧道】,就可以看到一个【免费隧道】,点击它,选择隧道协议,【TCP】(这里有三种,TCP、UDP、WEB),然后设置【本地端口】(设置默认的 SSH 端口 22 吧),点击【免费购买】,创建隧道成功。

2、下载 natapp

下载 natapp 地址

下载对应的系统的版本的 natapp。

3、配置 config.ini 文件

创建一个config.ini文件,将下面的内容复制进去,再将 authtoken 复制进去,然后配置一下 log,也可以不配置,在启动客户端的时候加入命令参数。如$ ./natapp -log=stdout -loglevel=ERROR

#将本文件放置于 natapp 同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意 config.ini 文件
[default]
authtoken=                      #对应一条隧道的 authtoken
clienttoken=                    #对应客户端的 clienttoken,将会忽略 authtoken,若无请留空,
log=none                        #log 日志文件,可指定本地文件,none=不做记录,stdout=直接屏幕输出 ,默认为 none
loglevel=ERROR                  #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy=                     #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

4、启动 natapp

执行如下命令,也可以参考natapp 给出的教程

nohup ./natapp -config=config.ini -log=stdout -loglevel=INFO  >log.out 2>&1  &

这里指定了配置文件,是因为我后续还增加了一个免费的 web 通道。

5、测试SSH 连接

由于免费的没有固定的域名和端口,它会在启动的时候给定,我们可以在 log.out 中找到对于的 url,这里的图,我是用的 web 隧道的,因为我们使用了付费的 SSH 通道,又固定的域名与端口。 免费的 url

使用对应的的域名与端口,执行 ssh 命令,测试是否可以连接。

新增免费的隧道

对于每个一个注册用户,natapp 提供两个免费的不同协议的隧道,下面创建免费的 web 通道。

natapp 免费 web 通道
natapp 免费 web 通道

1、创建 Web 隧道

创建 SSH 隧道类似,将【隧道协议】改成【web】,其他步骤一致。

2、配置隧道

之前已经下载了 natapp,这里只需要创建一个新的配置文件,例如webconfig.ini(这可以直接复制成一个新的文件cp config.ini webconfig.ini),再进行之前与 SSH 通道类似的的配置 config.ini 文件就行,将对应的 authtoken 换上去。

3、启动并测试

  • 与之前 SSH启动 natapp类似,指定一下配置文件就好了,如下,

    nohup ./natapp -config=webconfig.ini -log=stdout -loglevel=INFO >weblog.out 2>&1  &
  • 启动一个 web 服务,比如 jupyter notebook,指定端口为之前创建隧道时设置的端口,命令如下。

    nohup jupyter notebook --port 8888 >jupyter.out 2>&1  &

    需要注意的是,一定要指定端口为之前创建隧道时设置的端口,jupyter notebook远程设置可以参考我上一篇博客。

  • 在 log 文件中找到链接,看链接是否可以正常访问。

总结

总结一下,这个 natapp 配置起来,其实也和 frp 配置起来差不多,没有多复杂,natapp 基于 ngrok 还是做了一些简化吧,不错,收费也不高,怎么说呢,说不高也不高,其实说高也高,它按单个隧道来付费。有好的带宽的外网服务器的话,我还是比较推荐开源的 frp 吧,没有必要花额外的钱了。