这一节讲如何通过自己的服务器做内网穿透访问本地 AList
现在我的 AList 是启动在了我的 orange pi zero 3,通过本地 ip 地址可以正常访问:
本文章采用的内网穿透工具为 frp
什么是 Frp
frp 全名 fast reverse proxy,是一个可用于内网穿透的高性能的反向代理应用,支持 tcp、udp、http、https 等协议。通过在具有公网 IP 的服务器上部署 frp 服务端,可以实现对内网中服务器的访问。
下载 Frp
从 frp 的 GitHub 仓库 Release 页面 下载最新版本的 frp,根据你的操作系统选择对应的版本。
我这里香橙派是 arm64 架构,服务器为 x86 架构,因此香橙派应安装 frp_xxx_linux_arm64.tar.gz
,服务器应安装 frp_xxx_linux_amd64.tar.gz
,其中 xxx
为版本号,选择最新版即可
安装 Frp
客户端(Client)
使用任意你喜欢的方式将 .gz
压缩包上传到你喜欢的目录中,这里我选择的是 /home/orangepi
,之后将工作路径切换到 /home/orangepi
,执行 tar -xzvf frp_xxx_linux_arm64.tar.gz
将压缩包解压,这时候应该在 /home/orangepi
中出现了一个名为 frp_xxx_linux_arm64
的文件夹。为了便于访问,这里把文件夹重命名为 frpc
文件夹中包含了四个重要的文件:frpc
、frpc.toml
、frps
、frps.toml
我们把 frps
、frps.toml
这两个文件删掉,因为这两个文件是服务器(Server)需要运行和配置的文件,而香橙派是客户端(Client)
使用任意你喜欢的方式对 frpc.toml
这个文件进行编辑
假设公网服务器的 ipv4 地址为 xxx.xxx.xxx.xxx,需要将本地运行在 5244 端口的 AList 暴露到公网 ip 的 2001 端口,参考配置如下
1 | serverAddr = "xxx.xxx.xxx.xxx" |
serverPort
表示在 frp 服务端监听的端口,默认为 7000,建议不动
localIP
和 localPort
配置为需要从公网访问的内网服务的地址和端口
remotePort
意为服务器访问此端口的流量将被转发到本地服务的相应端口
如果需要暴露多个本地端口,比如需要访问 22 端口进行 ssh 连接,只需要再添加一个 [[proxies]]
:
1 | serverAddr = "xxx.xxx.xxx.xxx" |
这里把本地的 22 端口暴露到了公网的 2222 端口,这样就可以通过 xxx.xxx.xxx.xxx:2222
进行 ssh 连接了
服务器(Server)
使用任意你喜欢的方式将 .gz
压缩包上传到你喜欢的目录中,这里我选择的是 /home/ubuntu
,之后将工作路径切换到 /home/ubuntu
,执行 tar -xzvf frp_xxx_linux_amd64.tar.gz
将压缩包解压,这时候应该在 /home/ubuntu
中出现了一个名为 frp_xxx_linux_amd64
的文件夹。为了便于访问,这里把文件夹重命名为 frps
根据上面客户端的配置,接下来要做的应该是把 frpc
、frpc.toml
这两个文件删掉,然后配置 frps.toml
它的配置就简单了,只需要开一个监听端口就可以了:
1 | bindPort = 7000 |
整个文件只有一行
注册 systemctl 服务
接下来把 frp 注册成一个 systemctl 服务,便于进行管理。同时可以让端口监听运行于后台,而不必占用当前命令行
如果你的主机尚未安装 systemctl,请自行搜索教程
这里以客户端为例
在 /usr/lib/systemd/system
文件夹下新建 frpc.service
文件,使用任何你喜欢的方式编辑它:
1 | [Unit] |
服务端自行照葫芦画瓢,改一下服务名称和启动命令即可。同时强烈建议把 AList 和其他你想要的需要监听端口的应用也注册成一个系统服务,系统服务的名称即为 .service
文件的前缀
一旦修改配置文件,就要让 SystemD 重新加载配置文件,然后重新启动,否则修改不会生效
1 | sudo systemctl daemon-reload |
接下来使用 systemctl
命令管理服务
1 | # 启动 frp |
不要忘记 frps 和 alist 也要开启
开启服务器防火墙端口
进入你所购买服务器平台的控制台,开启 7000 端口(frps 的监听端口)、2001 端口(AList 的流量转发端口)、2002 端口(ssh 的流量转发端口)
不同控制台不一样,这里就不演示了
AList 启动!
已成功通过公网 ip 访问到本地 AList