写在前面
由于 IPV4 地址越来越少,加上各种政策的调整,现在能重新拿到 IPV4 的公网 IP 基本很困难,但远程访问的需求又是实打实的,群晖自带的 QC 速度奇慢无比,内网穿透就是一个曲线救国的方法
准备工作
- 具备公网 IP 的云服务器(必须)
- 具备 docker 功能的 NAS
- 浏览器
- SSH 工具
演示环境
- 微软云服务器(初始环境 Ubuntu 20.2)
- 黑群晖 DS918+
- Chrome
- FinalSSH
基本原理
FRP (Fast Reverse Proxy) 是一款高性能的内网穿透工具,FRP 的工作原理是利用内网机器主动与公网服务器建立连接,从而创建一个数据隧道,使得外网流量可以通过这个隧道被转发到内网机器。这样,即使内网机器没有公网 IP,也可以被外网访问
FRP 分为两部分
- frps(FRP 服务器)
- frpc(FRP 客户端)
frps 需要部署在有公网 IP 的服务器上,而 frpc 部署在内网中
技术原理
1. 建立连接
首先,frpc 会与 frps 建立一个连接。这个连接是由内网客户端发起的,因此即使内网客户端处于 NAT 或防火墙后,只要它可以访问外部网络,就可以成功建立连接
2. 数据转发
一旦 frpc 和 frps 建立了连接,当外部网络的请求发送到 frps 上时,frps 会将这些请求转发到 frpc,然后 frpc 再将请求转发到内网中的真实服务。当内网服务响应时,响应数据会被 frpc 发送到 frps,然后 frps 再将响应发送到外部网络
3. 配置与路由
FRP 允许用户在 frpc 配置文件中定义多种不同的内网服务,并为它们指定不同的访问规则。frps 会根据这些规则决定如何将外部请求路由到 frpc
4. 多种代理方式
FRP 支持 TCP、UDP、HTTP、HTTPS 等多种代理方式,满足不同的内网穿透需求。
安装 FRPS(FRP 服务端)
用 SSH 工具访问你的服务器,用以下代码切换到管理员模式,如果需要密码的话就把账号密码重复输入一次后回车(输入过程密码不可见)
sudo -i
将以下一键安装 FRP 代码复制进 SSH 工具回车
wget https://raw.githubusercontent.com/MvsCode/frps-onekey/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
接着脚本会让你依次设置各种端口,为了避免冲突,建议手动设置各个端口号
我的端口号设置如下供参考:
通信通道 我设置 7000
HTTP 通道 我设置 8800
HTTPS 我设置 8443
frp 信息面板端口 我设置 8555
账号密码都是 admin
token 设置长密码
域名地址,默认
最大用户默认
接下来各种日志选择都默认即可
最终会出一个汇总信息,如果没问题就继续即可
安装好后运行 FRP(后台运行)
nohup ./frps -c frps.ini >/dev/null 2>&1 &
成功运行后即可访问 IP + HTTP 端口号进入 WEB 页面
能成功进入 WEB 后台就成功了,如果进不了,停止 FRP 服务后重新检查端口号再启动
常用命令
开启FRP:frps start
停止FRP:frps stop
重启FRP:frps restart
FRPC(FRP 客户端)
因为我主要给 NAS 用,所以这里就用 NAS 的 docker 做演示,但 FRP 非常强大,几乎支持所有客户端,其他客户端的操作方法可以访问作者的 GitHub 的说明查看
群晖 NAS 安装 FRPC Docker
打开群晖 Docker,最新 DSM7.2 后叫 Container Manager
在 docker 注册表里 搜索 frpc
找到圈起来的下载
下载好后会出现在镜像
里,点击运行
这里的自动启动先别勾选,不然第一次配置不当会一直重启,直接点击下一步
接着在电脑本地新建一个 frpc.ini
的配置文件,将以下模板复制进去,并根据说明填写服务器、端口号等内容
配置模板
[common]
server_addr = 你的服务器 IP
server_port = frp 通信通道端口号(最开始设置的第一个)
token = 你的token
[任务名称,随便写,不能重名,如:NAS1]
type = tcp
local_ip = 局域网 IP
local_port = 本地端口号
remote_port = 对外端口号
[任务名称,随便写,不能重名,如:NAS2]
type = tcp
local_ip = 局域网 IP
local_port = 本地端口号
remote_port = 对外端口号
正确填写后大概长这样
填写完毕后上传到任意目录
然后返回 docker,把文件映射一下,名称如下
/frp/frpc.ini
接着一直下一步就行,运行起来后去查看 docker 的日志,如果出现 success
字眼就代表成功了
注意:每次增加设备或者改写配置都需要重启 Docker 容器才会生效
现在在浏览器打开 服务器 IP/域名
+ 端口号
就可以正常访问内网的 NAS 了
如果本文侵犯到你的利益,请注明身份后联系我删除。
尊重他人劳动成果,转载请务必附上原文链接,我将感激不尽。
请登录后查看评论内容