前言

作为一个对外网访问速度也有要求的极致主义者,frp内网穿透是最好的选择,没有之一。

我曾试过或了解过的个几种方案:

IPv6:要求外网网络也具备v6,并且在实际使用中发现跨运营商有明显限速,卡到无法播放

组网:tailscale和zerotier,广大网友都测试速度仅有1-5Mb/s,不符合我要求

樱花frp:带宽10Mbps,免费版5G/月,每日签到平均可以达到100G/月,但晚上高峰期依然卡的不行,需要至少购买青铜VIP(10元/月),带宽24Mbps,赠送流量108G,带宽勉强够用,流量差点意思,不过性价比高

境外frp:由于我有国外的vps,也顺便测试了下frp,延迟太高,同时也不稳定

终极方案:阿里云/腾讯云vps搭建frp内网穿透,极其简单无脑

我是深圳联通商宽1000下300上

2024年底阿里云推出了峰值200Mbps的轻量应用服务器,不限流量,首年68元(2核2G),次年最低配2核0.5G,35元/月

连续一周每晚实测infuse跑emby满速200Mbps,比花钱买公网IP舒服多了(100/月)

让我们开始吧!

购买阿里云服务器

新人直接在阿里云轻量应用服务器界面上下滑动浏览,查看优惠价购买,此处不细说了

安装frp服务端frps

下载并安装frp

用ssh工具(finalshell、putty、xshell等)连接阿里云vps

#下载frp压缩包
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz

#解压到根路径
tar -zxvf frp_0.62.1_linux_amd64.tar.gz

#进入frp目录
cd frp_0.62.1_linux_amd64

#进入编辑文件
vim frps.ini

编辑frps.ini配置文件

[common]
bind_addr = "0.0.0.0"
bind_port = 7000
token = hBkFhIGrej9cpGP4o
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin123456
log_file = "/frp_0.62.1_linux_amd64/frps.log"
log_level = "info"
log_max_days = 3

bind_addr 监听v4地址

bind_port 监听端口

token 密钥,用于连接frps服务端和frpc客户端

dashboard_port WebUI端口

dashboard_user WebUI用户名

dashboard_pwd WebUI密码

log_file 指定日志存放路径,方便查看

log_level 日志级别分为info、warn、error

log_max_days 日志保存天数

配置systemctl开机自启动

首先创建并进入frps.service服务文件

vim /etc/systemd/system/frps.service

填写配置内容

[Unit]
Description=Frps Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/frp_0.62.1_linux_amd64/frps -c /frp_0.62.1_linux_amd64/frps.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

ExecStart是执行命令,填写格式为:frps -c frps.ini,但frps和frps.ini填写绝对路径,可根据自己实际情况修改

执行以下命令来启用并立即启动服务

# 重新加载systemd配置
sudo systemctl daemon-reload

# 启用服务(开机自启)
sudo systemctl enable frps

# 立即启动服务
sudo systemctl start frps

# 检查服务状态
sudo systemctl status frps

安装frp客户端frpc

同理ssh连接家里群晖服务器

#下载frp压缩包
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz

#解压到根路径
tar -zxvf frp_0.62.1_linux_amd64.tar.gz

#进入frp目录
cd frp_0.62.1_linux_amd64

#进入编辑文件
vim frpc.ini

编辑frpc.ini配置文件【注意不是frps.ini】

[common]
server_addr = [填写阿里云vps的IP]
server_port = 7000
token = [填写frps服务端的token]
compression = true

[emby]                 
type = tcp
local_ip = 127.0.0.1     
local_port = 8096            
remote_port = 8096

[common]固定名称

server_addr 填写阿里云vps的IP

server_port 填写frps的服务端口

token 填写frps服务端的token

compression 压缩传输,加快转发速率,适合流媒体

[emby]自定义服务名,必须是唯一值,不能重复

remote_port frps的远程端口,在frps中必须是唯一,假如给多个frpc客户端穿透,可以修改此处值避免重复

配置systemctl开机自启动

首先创建并进入frpc.service服务文件

vim /etc/systemd/system/frpc.service

填写配置内容

[Unit]
Description=Frpc Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/frp_0.62.1_linux_amd64/frpc -c /frp_0.62.1_linux_amd64/frpc.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

ExecStart是执行命令,填写格式为:frpc -c frpc.ini,但frpc和frpc.ini填写绝对路径,可根据自己实际情况修改

执行以下命令来启用并立即启动服务

# 重新加载systemd配置
sudo systemctl daemon-reload

# 启用服务(开机自启)
sudo systemctl enable frpc

# 立即启动服务
sudo systemctl start frpc

# 检查服务状态
sudo systemctl status frpc

成功显示 active(running)

防火墙对应打开所需端口

最后检查

浏览器输入:http://[阿里云ip]:7500

可以看到frps已经在正常监听emby的端口了

此时外网应该可以直接访问你家emby了 http://[阿里云ip]:8096

强烈建议使用nginx反代

点击跳转nginx反代教程

以下是nginx的优点

  • 屏蔽FRP端口和协议:FRP默认使用TCP端口(如7000、8080等),直接暴露这些端口可能让攻击者更容易识别服务类型。Nginx反代后,外部只看到标准的HTTP/HTTPS(80/443)流量,降低被扫描的风险。

  • 过滤恶意请求:Nginx可通过规则拦截恶意流量(如SQL注入、CC攻击),而FRP本身不具备这种能力。

  • 避免直接暴露内网服务:FRP将内网服务映射到公网,而Nginx作为中间层可以限制访问路径(如只允许/emby路径转发),减少攻击面。

  • 方便SSL证书管理在Nginx上统一配置HTTPS证书(如Let's Encrypt),无需在每个内网服务(群晖、Emby)上单独配置证书。FRP只需转发HTTP流量到Nginx,降低内网服务配置复杂度。