Featured image of post 通过frp访问NAS或内网服务

通过frp访问NAS或内网服务

frp 在日常开发中经常用到,比如本地调试飞书、微信、支付宝事件回调等,而且安装配置相对简单。

frp在日常开发中经常用到,比如本地调试飞书、微信、支付宝事件回调等,而且安装配置相对简单。(最近整理笔记,发现有两篇关于 frp 的,决定重新整理)。玩归玩,闹归闹,不推荐长时间把 NAS 内网服务暴漏在外网,如果通过 stcp 协议远程 ssh 是没毛病。总而言之,还是不如 wireguard 方便,找到自己方便的就是最好的!!!

准备

下载 frp :https://github.com/fatedier/frp/releases

服务器 :阿里云 (我的服务器amd64,frp下载对应版本即可)

群辉NAS :家里的笔记本改造的黑群晖

外网电脑 :其他地方用的另一台笔记本

常见服务器是 amd64 版本,客户端 Windows 和 Intel MacBook 也是下载 amd64 版本,M芯片 MacBook 下载 arm64 版本。具体确认在命令行运行:uname -m

配置

域名解析

将泛域名 *.frp.11010.net 解析到 frps 所在服务器的 IP 地址,这一步也不必要,如果不用域名+端口访问,可以用 IP+端口访问。推荐用域名!

frp服务端

服务器配置文件对应修改 frps.toml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
bindPort = 7000 # 服务器监听端口
vhostHTTPPort = 8989 # 这个端口随便填没有被其他进程占用的
auth.token = "token888" #  frpc.toml 配置相同的 token 即可
subdomainHost = "frp.11010.net" # 如果不用域名访问去掉这行

# dashborad 配置不用控制台可以去掉
webServer.addr = "127.0.0.1"  # 可访问的 IP改成 0.0.0.0 所有 IP 可访问
webServer.port = 7500
# dashboard 用户名密码可选默认为空
webServer.user = "admin"
webServer.password = "你的密码"

修改完后运行./frps -c frps.toml测试启动服务端,在根目录运行!!!

NAS客户端

配置文件对应修改 frpc.toml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
serverAddr = "你的服务器IP"
serverPort = 7000
auth.token = "token888"

webServer.addr = "127.0.0.1"
webServer.port = 7400

# 访问 NAS web
[[proxies]]
name = "nas_web_http" # 随便填
type = "http"
localPort = 5000 # 群晖 web界面端口
subdomain = "nas" # 我打算通过 nas.frp.11010.net 访问,如果没配域名,就删除此行

# 访问 NAS ssh
[[proxies]]
name = "nas_ssh"
type = "stcp"
secretKey = "ssh_token1234" # 只有与此处设置的 secretKey 一致的用户才能访问此服务
localIP = "127.0.0.1"
localPort = 22

修改完成测试启动 NAS 客户端./frpc -c frpc.toml,到这里就可以访问群晖 NAS了http://nas.frp.11010.net:8989

需要SSH连接的客户端

如果只需要访问家里的NAS或者部署的其他服务,不需要这一步。我需要SSH连接NAS,所以需要配置STCP连接。下面配合vscode远程开发功能,做好端口映射,也可以访问NAS部署的其他docker服务。

配置文件对应修改 frpc.toml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
serverAddr = "你的服务器IP"
serverPort = 7000
auth.token = "token888"

[[visitors]]
name = "secret_ssh_visitor"
type = "stcp"
# 要访问的 stcp 代理的名字
serverName = "nas_ssh"
secretKey = "ssh_token1234"
# 绑定本地端口以访问 SSH 服务
bindAddr = "127.0.0.1"
bindPort = 6000

修改完后启动客户端./frpc -c frpc.toml,通过ssh -o Port=6000 用户名@127.0.0.1就可以 SSH 到自己的 NAS 了

frp 控制台

http://你的服务器ip:7500

进阶

上面都测试访问通了后,control+c结束掉上面 frp 启动,下面准备把启动改成服务。

Supervisor 守护

不用supervisor启动则忽略)supervisor 配置,这就是个进程守护工具,不是必须的。不推荐!

1
2
3
4
5
6
7
[program:frps]
directory=/data/software/frp_0.60.0_linux_amd64
command=/data/software/frp_0.60.0_linux_amd64/frps -c /data/software/frp_0.60.0_linux_amd64/frps.toml
stdout_logfile=/var/log/go/frps.log
stderr_logfile=/var/log/go/frps-err.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5

systemd

在 Linux 系统下,使用systemd可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。非常建议,省心省力!!!

/etc/systemd/system/创建frpc.service文件,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=frp clinet service
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/home/docker/frp/frpc -c /home/docker/frp/frpc.toml

[Install]
WantedBy=multi-user.target

服务器端/etc/systemd/system/frps.service,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /home/ecs-user/frp_0.61.1_linux_amd64/frps -c /home/ecs-user/frp_0.61.1_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target
  • 加载配置文件:sudo systemctl daemon-reload

  • 把 frp 设置开机启动:sudo systemctl enable frpc.service

  • 启动:sudo systemctl start frpc.service

  • 停止:sudo systemctl stop frpc.service

  • 重启:sudo systemctl restart frpc.service

vscode端口映射

上面已经可以通过 SSH 连接 NAS,下面配合 vscode 远程开发就可以访问其他服务了。

SSH免登

非必要,配置了每次 SSH 连接不用输入用户名和密码了,而是通过密钥。

查看 ~/.ssh/ 下有id_rsa.pub文件,如果没有运行ssh-keygen -t ed25519 -C "your@email.com"创建密钥对,最后运行ssh-copy-id -i ~/.ssh/id_rsa.pub -p 6000 songqj@127.0.0.1把本机公钥发射到NAS 上。

安装Remote-SSH

插件地址:https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh

vscode连上nas做远程开发,比如编辑docker-compose.yml文件

端口转发

cmd + j唤出 vscode 控制台,然后添加端口转发,就可以愉快的访问NAS的内网服务了。

推荐阅读

Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 21, 2026 05:52 CST