『前文』介绍了11款用于内网穿透的隧道工具,很多人并不清楚内网穿透可以做什么以及如何应用。本文仅以loophole为例,介绍其完整的部署应用方法,包括网站与服务的发布、auth0验证、自定义域名等,其他工具(包括『前文』未作介绍的)的使用大致相同,仅仅是命令名称、命令行参数或GUI的区别。
1.什么是loophole
「Loophole.cloud」是若干免费内网穿透工具中提供公共服务且相对稳定的一个,支持Windows、Linux(包括嵌入式设备)、MacOS,同时提供cli和desktop程序。目前,loophole服务仅在欧洲托管。loophole的客户端cli是开源的,官方自述“就目前而言,我们希望通过测试期以稳定系统,希望明年能提供自托管服务”。loophole服务提供的功能包括:
- 公开本地HTTP服务器
- 公开在网络中任何计算机上运行的HTTP服务器
- 通过HTTPS公开本地目录
- 通过WebDav公开本地目录
- 基本身份验证
功能上公开本地HTTP服务器,就是网站发布,这个网站可以是一个博客、一个影视库,也可以是一个论坛系统等。另外一款工具zrok将这类功能总结为共享文件,定义很准确,无论是html、css、js还是其他文件,无非都是公布出去别人能获取到并在浏览器或其他程序中解析、渲染、呈现。因此,webdav公开本地目录、前端调试等都是以为网站发布/文件共享功能为基础的。
2.安装
安装?还用安装?! 不用!Loophole提供了cli和desktop的压缩包,下载解压即可,无需安装。官方网站上提供的下载链接也同样是github托管仓库的release链接,为免死循环,老E已将其放在在了博客网盘中,Cli版本程序分别按照「Windows」、「Linux」、「MacOS」进行了归类,「Desktop」版本未按系统分类。
需要注意的是,嵌入式设备中运行loophole,要区分armv7和arm64架构。S905设备及较早的树莓派上,应下载使用arm7版本。对应版本下载后解压,tar包无需安装额外解压缩工具。
wget https://github.com/loophole/cli/releases/download/1.0.0-beta.15/loophole-cli_1.0.0-beta.15_linux_armv7.tar.gz #github无法下载时可使用以下备用链接 #wget https://appscross.com/as-tools/pub%20Tools/loophole/cli/linux/loophole-cli_1.0.0-beta.15_linux_armv7.tar.gz #解压并进入loophole目录 tar zxvf loophole-cli_1.0.0-beta.15_linux_armv7.tar.gz && cd loophole-cli_1.0.0-beta.15_linux_armv7/
3.网站发布
下载完成后解压。确保待发布的网站本地可正常提供服务,如果你本地根本就没有提供web服务或者本地的httpd(nginx、caddy等)服务异常,使用任何穿透工具都不可能公网发布成功。
§ 最简单的
Cli方面,在待发布网站的主机简单运行以下命令行,也即将本地运行并监听于6666端口的网站发布至公网,loophole默认将生成一个随机的子域名,通过该域名即可在公网访问你的内网网站。
loophole http 6666
§ 登录与注销
不过,在发布网站之前,还需要login登录一下,调试完成之后,不再需要通过loophole发布的时候,应该通过logout注销。loophole登陆验证采用auth0,可使用google或github账户直接登录。
https://loophole.eu.auth0.com/activate #login和logout应配对使用,避免长期占用 loophole account login [flags] loophole http 6666 localhost --https loophole account logout
运行loophole account login命令后,打开浏览器,拷贝Loophole给出的链接进行登录验证。Loophole采用auth0,相对简单,可以直接使用github或google账户进行验证。
完成登录验证之后,再使用loophole http <port> 发布网站,loophole会分配一个随机子域名(XX...XX.loophole.site)供公网访问。Loophole默认采用TLS加密普通HTTP流量,如果待发布的网站已开启了https,可通过--https选项指定以避免重复加密。
§ 基本身份验证
Loophole支持http基本身份验证,通过-u、-p或--basic-auth-username、--basic-auth-password分别指定用户名、密码。
-p --basic-auth-password string Basic authentication password to protect site with -u, --basic-auth-username string Basic authentication username to protect site with
§ 便利访问
Loophole支持自定义子域名以及生成网址二维码。--hostname string指定子域名为string,--qr指定隧道成功建立后显示网址二维码。
--hostname string custom hostname you want to run service on --qr use if you want a QR version of your url to be shown
loophole支持webdav协议,以下指定将/tmp目录暴露于公网并设置test、1234为访问用户名和密码。
loophole webdav /tmp -u test -p 1234
无论是否可自定义子域名,在注销(logout)前,网址链接不会发生变化,可以尝试通过添加自有域名的cname记录指向loophole生成的网址,完成最后一步。考虑到官方托管服务远在德国,就此打住。cli程序需要后台运行的话,windows下可以通过sc添加系统服务,linux下可以采用systemd进行守护管理。
4.结语
Loophole可以安全地将位于防火墙或NAT之后的服务公开、发布至Internet。目前,Loophole仅提供HTTP/HTTPs支持,所有流量使用 Let's encrypt SSL证书进行加密,使用Auth0进行身份验证。同时,Loophole还支持多个并行隧道以及端到端加密。有意尝试其他免费工具的话,可自行参考前文『11款轻量、简洁、可用于内网穿透的免费隧道工具与平台 』进行安装部署。
Loophole很简洁,但是很有效,更何况,还有其他很多简单、开源、免费的内网穿透工具/服务可供使用。即便自托管部署,使用这类工具也会更简单、更易于维护。另外,相比Snapdrop等单纯的文件分享工具,定位于服务发布/“文件共享”的隧道工具进行自托管部署更有价值和意义。
文章评论
loophole可以后台执行吗?不希望看到dos窗口
@反对法 可以的
你好,我这在进入网站时后台报错了:ERR TLS Certificate failed to provision. Will be obtained with first request made by any client, therefore first execution may be slower
@就爱吃咸粽子 错误信息很明确了
loophole.exe tcp 3389
Error: unknown command "tcp" for "loophole"
Did you mean this?
http
Run 'loophole --help' for usage. 可不可以支持远程桌面3389,要怎么操作?
@樱桃小丸子 绝大多数免费产品都不支持rdp so... 可以看下zrok 貌似支持 只是比较庞大有些你不会需要的功能