黑群晖FRP内网穿透部署记录

前言

FRP可分为服务端和客户端,下文分别进行介绍

服务器搭建

       服务端我使用的是阿里云的轻量服务器,带宽为5M。步骤如下:
      (1)在机子上创建一个文件夹取名为frp,具体位置随意:

sudo mkdir /etc/frp

      (2)创建frps.ini文件,可以选择在window系统下写好再使用Xftp等软件传到frp文件夹内,frps.ini的内容如下,相关参数值可以根据自己的需求进行修改。

[common]
# 监听端口
bind_port = 7200
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = admin
dashboard_pwd = 123456
# 设置http及https协议下代理端口
vhost_http_port = 7080
vhost_https_port = 7081


# 身份验证
token = 123456

      (2)使用docker运行frps。其中选择的服务器镜像为snowdreamtech/frps,网络模式为host,文件映射路径为上文放置frps.ini的文件路径

docker run --restart=always --network host -d -v /etc/frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps

客户端搭建

      (1)为了确保每次重启后都能进行内网穿透,需把群晖的ip设为固定,本文设置静态ip为192.168.31.200
ip
      (2)在群晖的docker文件夹下创建一个文件夹取名为frp。
frp
      (3)创建frpc.ini文件,可以选择在window系统下写好再传到frp文件夹内。具体内容如下,本文设置了ssh、群晖web界面、smb、jellyfin和qbittorrent这些端口进行映射,可按需更改

[common]
# server_addr为FRPS服务器IP地址
server_addr = xxx.xxx.xxx.xxx
# server_port为服务端监听端口,bind_port
server_port = 7200
# 身份验证,需与frps.ini一致
token = 123456

[ssh]
type = tcp
local_ip = 192.168.31.200
local_port = 22
remote_port = 7222

[web]
type = tcp
local_ip = 192.168.31.200
local_port = 5000
remote_port = 7250

[smb]
type = tcp
local_ip = 192.168.31.200
local_port = 445
remote_port = 7445

[jf]
type = tcp
local_ip = 192.168.31.200
local_port = 8096
remote_port = 7296

[qb]
type = tcp
local_ip = 192.168.31.200
local_port = 8999
remote_port = 7299

      (4)在群晖的docker里面进行镜像下载,下载完成后在映像中创建容器,设置好网络和存储空间后即可启动。
frp

frp

frp

frp
      (5)这时可输入http://xxx.xxx.xxx.xxx:7500进入frp面板,账号密码与frps.ini一致。进入后可看到这些端口都是online状态,内网穿透成功。
frp

后文

      如果使用内网穿透看jellyfin的视频,所有的流量都会经过服务器进行中转,流量的带宽瓶颈在服务器,以本文的服务器带宽为例,只能支持看1080p的视频,4K视频的观影体验不太行,需要进行转码操作才能获得正常的观影体验。如果想流畅看4K,一般有如下解决方案:

  1. 使用frp点对点内网穿透:这是一种不通过服务器中转流量的方式来访问内网服务。frp 提供了一种新的代理类型 xtcp 用于应对在希望传输大量数据且流量不经过服务器的场景。但是目前处于开发的初级阶段,并不能穿透所有类型的 NAT 设备,所以穿透成功率较低。且群晖和观影机器两端都需要部署frps.ini。部署方式请查看参考链接。
  2. 基于Zerotier根服务器的内网穿透部署:Zerotier的成功率比frp点对点内网穿透方式高,链接成功后也不需要走服务器的流量,能跑满群晖的上行带宽,但也需要群晖和观影机器同时部署Zerotier。
  3. IPV6+DDNS:目前IPV6基本上都是公网ip,没有 NAT 。所以可以使用IPV6的地址直接访问机器。为了防止IP地址变动,可使用DDNS进行域名访问。优点也是能跑满群晖的上行带宽,缺点是有些网络不支持访问IPV6地址。本人采取此方案,具体的部署方式请查看参考链接。

参考链接

自建内网穿透服务器
frp点对点内网穿透
jellyfin使用ipv6+DDNS实现外网访问

猜你喜欢

转载自blog.csdn.net/qq_37263248/article/details/129671160