跳到主要内容

「LUCKY STUN穿透」解决WebDAV重定向问题

2026.1.17

关于本教程​

在之前的教程中我们介绍了大量与HTTP服务有关的stun穿透设置
这是因为HTTP支持重定向可以十分方便的方便修改端口

组网方案可以通过DNS记录更新端口 当然这需要组网软件本身支持此功能
组网方案几乎适用于任何服务 不过需要在两端安装专用客户端

对于非HTTP和不使用组网的服务可以使用导航页方案 通过web页面实时显示穿透端口端口
在连接服务时手动修改端口

但并非所有HTTP服务都支持重定向 例如 WebDAV协议
WebDAV协议用于对远程web服务器上的文件进行编辑和管理
各种存储服务基本都支使用持WebDAV协议进行访问

事实上这并不是WebDAV协议本身的问题
其本身使用的是标准的HTTP请求 可以兼容之前的重定向方案

问题在于很多webdav客户端并不支持重定向
这不是因为技术上的困难 而是没有意识到这种使用场景

当然这种问题在其他一些使用HTTP协议的 专用客户端 上也广泛存在
这些服务大都使用标准的HTTP协议 但没有考虑到处理重定向响应的问题

有两条路线可以解决这个问题:

  1. 更换支持重定向的客户端
  2. 设置本地反向代理

若只是执行文件传输 那客户端可以随意替换
但有些专用客户端无法替代 只能通过反向代理 使其正常工作

本地反向代理的原理也很简单
在本地设置反向代理 由这个反向代理程序处理重定向工作
不支持重定向的专用客户端 连接本地的反向代理程序
在专用客户端看来其在直接与目标服务器通信
本教中使用lucky作为本地反向代理程序

之所以让反向代理服务器运行在本地是因为
在使用反向代理时所有的流量都会通过反代服务器

若反代服务器在本地 则不会增加额外的流量
如果在是远程 那就意味着需要一个开放固定端口且有足够带宽和流量的服务器
如果是这样的话其就相当于是中转方案了


Windows系统​

Windows上对于传输文件而言 建议使用 WinSCP
虽然其并不具备挂载webdav为驱动器的能力

若要挂载webdav为驱动器仍建议使用 RaiDrive 但其本身不支持重定向
我们需要为其在本地设置反向代理

Cyberduck 这个软件原生支持重定向 也可以挂载webdav为驱动器
唯一的缺点是要钱


配置 WinSCP​

下载和安装​

下载:链接
一路单击“下一步”即可完成安装

winscp-download

连接站点​

新建连接

为方便观察重定向效果 这里使用本地的lucky重定向 替代实际中cloudflare的重定向
本地重定向没有使用TLS 在使用CF重定向时需要启用TLS

winscp-webdav-add

对于openlist(原alist)的webdav服务来说 其目录在 /dav/ 路径下 而非根目录下
若使用根目录请求会收到405错误 根目录下的路径是给浏览器访问使用的

winscp-dav winscp-405

登录成功

winscp-login

WinSCP默认是 双面板布局 即同时显示本地文件和远程文件
可以修改成单面板模式即只显示远程文件

winscp-login-2 winscp-user-interface-setting

检视重定向信息​

lucky-local-rd

RaiDrive 本地反向代理设置​

RaiDrive支持将webdav挂载为本地驱动器且使用较为广泛
RaiDrive 的下载和安装不是本教程讲述的内容
此方法对其他不支持重定向的专用客户端也是适用的

设置本地域名​

在设置lucky前建议通过host文件添加一些本地域名
这些域名并不真实存在 只是方便之后设置反向代理时 区分不同服务
如果只有一个webdav服务需要反向代理也可以跳过此步骤

此处使用 .localhost作为这些域名的后缀

host

lucky 反向代理​

下载lucky:链接

添加web服务规则
由于是本地连接选择HTTP即可

若之前已添加过主规则 则只需要添加子规则即可
详见之前的教程:链接

主规则名称可自定义 默认不勾选IPv4 要手动勾选一下
不建议使用80端口 最好使用其他高位端口

lucky-web-rules-add

添加反向代理子规则

添加完主规则后添加用于实现反向代理的子规则
每个主规则其实有一个默认响应规则 不过我们不用那个
右键弹出菜单 添加子规则

lucky-web-new-rules

服务类型选择 反向代理 前端地址填写之前设置的 本地域名
后端地址则是解析到CF的 重定向前地址 详见:链接
打开 使用目标地址Host请求头 开关

lucky-reverse-proxy

RaiDrive 连接测试​

新建连接 协议选择webdav
取消勾选地址后面的复选框 以使用HTTP 默认为HTTPS
输入地址端口和资源路径

raidrive-add

连接成功

raidrive-successful

检视反向代理日志​

lucky-raidrive-log

安卓系统​

在安卓上传输文件时较多的使用各类文件管理器
这里使用 CX文件管理器 其webdav服务支持重定向

不过 CX文件管理器有一个缺点
在连接远程存储发生错误时 不会显示错误原因
这对排查故障来说是非常不利的

此处使用流舟文件进行辅助故障排除
其也是一个支持webdav重定向的文件管理器 且支持显示连接错误信息
不过这个文件管理器有很多冗余功能 此处仅作为排障使用

下载软件​

CX文件管理器:官网|谷歌商店
流舟文件:果核剥壳|谷歌商店

CX文件管理器​

添加webdav连接
为了方便观察重定向效果 这里依然连接本地的lucky重定向

cx-add-0 cx-add-1 cx-add-2

连接成功

cx-add-3

检视重定向效果

lucky-cx-log

值得注意的是CX文件管理器对重定向的处理和WinSCP不同
WinSCP在接受重定向后新的请求都会发向新的地址
而CX文件管理器在接受重定向后依然会请求之前的地址

即WinSCP只需要在连接时进行一次重定向即可
而CX需要在请求每个目录和文件时进行重定向

流舟文件​

liuzhou-1 liuzhou-2

需要输入 HTTP/HTTPS协议头以指定协议

liuzhou-3

登录成功

liuzhou-4

其可以显示连接错误信息方便排障

liuzhou-error

参考​