使用FRP实现内网穿透访问群晖NAS详细搭建教程(含ZeroTier对比)

感谢 TurboAI对本博客的的大力赞助。 创作不易,如果您觉得有帮助,请支持LIncol29!

前言

之前lincol29有发过如何使用zerotier去实现内网穿透的文章【实用Docker推荐】使用zerotier实现内网穿透—无公网IP也能在线访问NAS

这里可以简单对比一下
ZeroTier

  • 创建一个虚拟局域网,让不同地理位置的设备都处于同一局域网内一样通信。点对点加密连接,可以不依赖中间服务器(使用官方的中转服务器)。

FRP

  • 是一个内网穿透工具,通过具有公网IP节点的代理服务器将内网服务暴露 公网

FRP项目地址

GitHub – fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

按照描述来说,FRP是更适合拥有服务器并且带有NAS的用户。lincol29就是其中一类,本篇文章将描述如何使用docker去搭建FRP服务访问家里的NAS。

FRP介绍

FRP = Fast Reverse Proxy

用户通过访问暴露在服务端的frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。
image-20240831095414626

准备工作

  • 服务器
  • 域名
  • lincol29搭建的时候使用的是 Centos 7.9系统
  • 放行防火墙端口xxxx(等下会用到,你也可以自定义未使用的端口)

1、在服务器上安装frps服务端

首先来安装服务端,服务端需要在具有公网 IP 的设备上进行安装,我目前的云服务器是预装了 centos7.9 系统。
我们打开githup frp地址 ,点击Releases中最新版本v0.60.0版本
image-20240831095426825

下载好压缩包,将压缩包上传到服务器(可使用宝塔或其他工具,可自行Google或者bing)
image-20240831095448846

  • 连接服务器ssh,找到服务器压缩包的目录,解压压缩包
tar -zxvf 压缩包名
  • 使用cd 切换目录到解压后的目录。修改frps.toml文件,并将下面代码复制到frps.toml文件中

    目前frp官方已经不推荐使用ini配置文件,后续不再更新。

vim frps.toml

然后填写配置信息,这里会启动两个端口号:
7000:用于和内网设备数据交互;
7500:提供 frp 图形化界面,同时需要配置面板访问的账号和密码,以及 token 是内网设备和 frp 服务端建立连接时的密码。

# frps.toml
bindPort = 7000

# 后台管理面板配置
webServer.port = 7500               # 后台面板端口号
webServer.addr = "0.0.0.0"          # 后台管理地址
webServer.user = "xxx"          # 后台管理员账号
webServer.password = "xxxxx"            # 后台管理员密码
  • 启动frps服务端

    此方式是前台启动服务,如想方便管理服务如:开启frps、关闭frps、自启动frps等。
    官方推荐使用 systemd

    Typora如何页面跳转可以阅读:Typora使用技巧-页内跳转

./frps -c ./frps.toml
  • 使用Ip + 端口的方式已经可以访问web管理界面

image-20240831095459985

2、在群晖NAS安装frpc客户端

  • 在群辉套件中心 – 搜索frpc – 点击安装套件
    image-20240831095510370
  • frpc的配置如下
# frpc.toml
serverAddr = "xxxx" #服务器的ip地址
serverPort = 7000

[[proxies]] #代理
name = "ssh"
type = "tcp" #类型,有tcp\udp\stcp\p2p等
localIP = "127.0.0.1"
localPort = 22 #客户端端口
remotePort = 6000 #服务器的端口,提供外部访问
  • tips:如果你不是使用的NAS,和配置服务端一样操作即可

配置frps.toml

运行服务端程序

./frps -c ./frps.toml

3、使用FRP测试实现内网穿透

通过 SSH 访问内网机器
使用以下命令通过 SSH 访问内网机器,假设用户名为 test,@为分隔符 ,后面是ip地址

ssh -o Port=6000 test@x.x.x.x

frp 将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

使用 systemd

以下内容转自frp文档:使用 systemd
此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。
在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。
以下是具体的操作步骤:

1、安装 systemd

如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:

# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd

# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

2、创建 frps.service 文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

vim /etc/systemd/system/frps.service

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

3、使用 systemd 命令管理 frps 服务

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

4、设置 frps 开机自启动

sudo systemctl enable frps

通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。

踩坑

服务器开了防火墙,导致客户端连不上,你可以试试关闭服务器防火墙
centos可以使用如下命令

systemctl stop firewalld.service

centos 系统可以使用 firewalld 服务放行防火墙端口。

使用 firewalld

1、启动 firewalld 服务(如果尚未启动): start 为启动 enable为开机自启

sudo systemctl start firewalld
sudo systemctl enable firewalld

2、打开端口 7000

sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent

3、重新加载防火墙规则以应用更改:

sudo firewall-cmd --reload

4、验证端口是否已打开

sudo firewall-cmd --zone=public --query-port=7000/tcp

如果端口已成功打开,您会看到输出 yes

5、查看所有打开的端口

sudo firewall-cmd --list-ports

总结

如果你按照本文的步骤执行的时候,是可以顺利部署frp实现内网穿透的。

如果还存在问题的小伙伴可以下方留言,lincol29 看到后都会一一回复。

后续会持续更新p2p打动已经其他frp的配置,目前只是介绍了tcp去连接22端口。

拓展资料

网站地图 – Lincol29 : 在这个网站地图中,你可以找到关于C#、常用生产力工具、面试面经、Docker、WordPress、RSS、等各类技术主题的教程和分享,以及对本站内容快速导航。

frp官方文档 : 如果有什么不懂或者疑问,可以自行查阅frp的官方文档。此项目在GitHub非常活跃,目前有80K star,并且保持更新中。

创作不易,如果您觉得有帮助,请支持LIncol29!
如有需要,请至网站地图学习本博客的教程
博客订阅:RSS | 广告招租与合作请留言
本文链接:https://www.lincol29.cn/usefrp
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议转载请注明文章地址及作者哦~

评论

  1. Linux Chrome
    贵州省黔南州 移动
    2 周前
    2024-9-01 7:18:56

    利用frp做内网穿透挺不错的

    • 博主
      刘郎
      Windows Chrome
      广东省深圳市 电信
      2 周前
      2024-9-01 12:22:55

      可以哦,我在想以后是不是直接把NAS穿透出去啦

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇