使

使用loophole实现内网穿透发布网站以及自定义域名

HB 网络 2023-09-18

本文以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安装
安装?还用安装?! 不用!Loophole提供了cli和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

#解压并进入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等)服务异常,使用任何穿透工具都不可能公网发布成功。

在待发布网站的主机简单运行以下命令行,也即将本地运行并监听于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账户进行验证。

00.png

完成登录验证之后,再使用loophole http 发布网站,loophole会分配一个随机子域名(XX...XX.loophole.site)供公网访问。Loophole默认采用TLS加密普通HTTP流量,如果待发布的网站已开启了https,可通过--https选项指定以避免重复加密。

0.png

基本身份验证

Loophole支持http基本身份验证,通过-u、-p或--basic-auth-username、--basic-auth-password分别指定用户名、密码。

-p --basic-auth-password string     # 用于保护网站的基本身份验证密码
-u, --basic-auth-username string    # 用于保护网站的基本身份验证用户名

便利访问

Loophole支持自定义子域名以及生成网址二维码。--hostname string指定子域名为string,--qr指定隧道成功建立后显示网址二维码。

--hostname string         # 要在其上运行服务的自定义主机名
--qr                      # 如果您希望显示url的QR版本,请使用该参数

loophole支持webdav协议,以下指定将/tmp目录暴露于公网并设置test、1234为访问用户名和密码。

loophole webdav /tmp -u test -p 1234

无论是否可自定义子域名,在注销(logout)前,网址链接不会发生变化,可以尝试通过添加自有域名的cname记录指向loophole生成的网址,完成最后一步。考虑到官方托管服务远在德国,就此打住。命令行程序需要后台运行的话,windows下可以通过sc添加系统服务,linux下可以采用systemd进行守护管理。

4.结语
Loophole可以安全地将位于防火墙或NAT之后的服务公开、发布至Internet。目前,Loophole仅提供HTTP/HTTPs支持,所有流量使用 Let's encrypt SSL证书进行加密,使用Auth0进行身份验证。同时,Loophole还支持多个并行隧道以及端到端加密。

Loophole很简洁,但是很有效,更何况,还有其他很多简单、开源、免费的内网穿透工具/服务可供使用。即便自托管部署,使用这类工具也会更简单、更易于维护。另外,相比Snapdrop等单纯的文件分享工具,定位于服务发布/“文件共享”的隧道工具进行自托管部署更有价值和意义。

项目地址:https://github.com/loophole/cli

PREV
Linux命令行关闭无线WiFi
NEXT
浙江大学Debian镜像配置

评论(0)

发布评论