利用 FRP 实现外网访问 NAS

最近入手了一台群辉入门级的 nas,但是由于用的是长城的宽带,所以你们懂的,群辉自带的外网访问的配置根本不起任何作用。但是在公司里又没法用 quickConnect 访问自己的 nas,所以没办法只能利用 frp 这种方式来实现在公司或者其他地方访问自己的 nas。

刚好自己买的有阿里云的服务器,还有阿里云买的域名。然后说搞就开始搞咯。

第一步

先在自己的域名控制台,解析好一个 A 类的二级域名,指向自己的服务器的 ip。
二级域名解析

第二步

在自己购买的服务器上安装配置 frp 服务端

1、查看自己的服务器的 linux 内核

# uname 指令
uname -a

# 结果
# a
Linux tegra-ubuntu 4.4.38-tegra #1 SMP PREEMPT Fri Jul 28 09:55:22 PDT 2017 aarch64 aarch64 aarch64 GNU/Linux
# aarch64就是ARM架构

# b
Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# X86架构

# c
Linux DrogooBox 3.3.8 #33 Tue Mar 22 15:02:01 CST 2016 mips GNU/Linux
# MIPS架构
# arch命令
arch

# 结果
# a
aarch64

#b
x86_64

自己选择对应的版本号即可。
如果 frp 版本选的不对,运营会爆如下错误:

./frpc: cannot execute binary file: Exec format error

2、安装服务端

FRP RELEASE

#1、下载
wget https://github.com/fatedier/frp/releases/download/v0.12.0/frp_0.12.0_linux_amd64.tar.gz

#2、解压
tar -zxvf frp_0.12.0_linux_amd64.tar.gz

#3、进入对应目录
cd frp_0.12.0_linux_amd64

#4、删除客户端内容
rm -f frpc frpc_full.ini frpc.ini

#5、配置服务端
vim frps.ini

编辑如下:

[common]
bind_port = 7000
vhost_http_port = 8080
max_pool_count = 5
authentication_timeout = 900

subdomain_host = lekee.cc

[ssh]
listen_port = 6000
auth_token = 和客服端 token 对应

解释:

[common] 必填的
bind_port Frp 服务端口(可自定义)
vhost_http_port http 访问端口(可自定义)
dashboard_port dashboard 界面端口 (可以不配置)
dashboard_user 登录 dashboard 用户名(可以不配置)
dashboard_pwd 登录 dashboard 密码(可以不配置)
max_pool_count 最大连接池数量
authentication_timeout 超时验证时间
subdomain_host 主域名

[ssh]
listen_port ssh 访问端口
auth_token 用户身份认证(自定义)

#6、启动 frp 服务器
nohup ./frps -c ./frps.ini &

第三步

配置 frp 客户端

客户端可以是 PC,Mac,NAS 等。
我是配置自己的 nas。

1、群晖必须开启 ssh

在这里插入图片描述

2、开始操作

# 1、登录 nas
ssh user@ip # user nas 的账号,ip nas 的内网 ip

# 2、切换 root 用户
sudo -i
# 此处输入你的密码

# 3、下载 frp
wget https://github.com/fatedier/frp/releases/download/v0.12.0/frp_0.12.0_linux_arm.tar.gz 
# 此处踩了一个坑,因为版本下载的不对,所以配置完发现跑不起来。所以一定要查找适合的版本

# 4、解压
tar -zxvf  frp_0.12.0_linux_386.tar.gz

# 5、进入文件夹
cd frp_0.12.0_linux_386

# 6、移除服务端配置
rm -f frps frps_full.ini frps.ini

# 7、编辑配置
vim frpc.ini

编辑如下:

[common]
server_addr = ip (服务器外网 ip)
server_port = 7000
auth_token = 和服务器端对应
pool_count = 1

[ssh]
type = tcp
local_ip = NAS 局域网ip
local_port = 22
remote_port = 6000

[nas]
type = http
local_port = 5000
subdomain = nas(自己定义的二级域名)

简单解释:

[common] 必填的
server_addr 服务器端公网
server_port frp 服务端口,和服务器端 bind_port 一致
auth_token 和前面服务器端 [ssh] auth_token 一致
pool_count 连接池数量

[ssh]
type 服务类型(tcp、http、https、udp)
local_ip NAS 本地局域网内网 ip
local_port NAS 开启 ssh 服务端口号,默认 22
remote_port 服务器端 ssh 端口,和服务器端 [ssh] listen_port 配置一致

[nas] NAS 管理界面
subdomain 二级域名 nas 访问 NAS
type = http 服务类型为 http
local_port NAS 默认端口 5000

[web] NAS web Station 服务,没用可以不用设置
type = http 类型为 http
local_port = 80 NAS web 服务端口
subdomain = web 二级域名 web.lekee.cc
使用自定义二级域名的时候,域名 *.lekee.cc 要解析到服务器 IP

# 8、运行
nohup ./frpc -c ./frpc.ini &

到此结束。你可以愉快地通过自己的域名加上端口号访问自己的 nas 了。

好了,该休息了。

不对扶我起来,报错了。

dial tcp x.x.x.x:xxxx: getsockopt: no route to host

第四步

因为你还得在服务器防火墙中开放对应的端口
就是你在服务端配置的下面两个端口

bind_port = 7000
vhost_http_port = 8080

具体的操作可以参考我的这篇文章

到此你应该能真正地愉快地访问了。

enjoy ~

参考文章

如何用 Frp 实现外网访问群晖 NAS

如何查看linux系统的体系结构

CentOS 防火墙开放端口

### 配置飞牛 NAS 使用 FRP 实现内网穿透 #### 准备工作 为了使飞牛 NAS 能够通过 FRP (Fast Reverse Proxy) 实现内网穿透,需准备如下资源: - 已经部署好的公网服务器一台,该服务器上已安装并配置好 FRP 的服务端程序。 - 安装有飞牛私有云 fnOS 系统的 NAS 设备。 #### 下载与安装 FRP 客户端到 NAS 上 由于飞牛私有云 fnOS 基于 Debian 开发而来[^1],因此可以利用 APT 包管理器来简化软件包获取过程。不过对于特定版本的 FRP 可能需要手动下载对应的二进制文件,并将其放置在适当的位置以便执行。 ```bash wget https://github.com/fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz -O /tmp/frp.tar.gz && \ tar zxvf /tmp/frp.tar.gz -C /opt/ && \ ln -s /opt/frp_0.47.0_linux_amd64/frpc /usr/local/bin/ ``` 上述命令会下载指定版本号为 `v0.47.0` 的 FRP 并解压至 `/opt/` 文件夹下,同时创建软连接使得可以在任何地方调用 frpc 这个客户端工具。 #### 编写 FRPC 配置文件 接下来要编写用于描述如何建立反向代理通道的具体参数设置,在此之前建议先备份原有配置以防误操作造成影响。新建或编辑位于 `/etc/frp/client.ini` 中的内容如下所示: ```ini [common] server_addr = x.x.x.x ; 替换成实际的服务端 IP 地址 server_port = 7000 ; 默认端口可按实际情况调整 [tcp_ssh] type = tcp ; 协议类型 local_ip = 127.0.0.1 ; 内部监听地址,默认即可 local_port = 22 ; 对应内部 SSH 或其他应用开放的端口号 remote_port = 6000 ; 映射后的外网访问端口 use_encryption = true ; 启用加密传输选项提高安全性 use_compression = true ; 是否开启压缩功能减少流量消耗 ``` 以上是一个简单的例子用来映射本地SSH服务给外部网络中的设备访问;其中 `[tcp_ssh]` 表示这个规则的名字,可以根据个人喜好更改名称以方便识别不同的转发任务。 #### 设置开机自启项和服务注册 为了让 FRP 在每次启动时自动运行而不必每次都手工启动,则可以通过 systemd 来定义一个新的 service unit file 。 创建名为 `frpc.service` 的文件存放在 `/lib/systemd/system/` 目录里边,其内容应该像这样子: ```ini [Unit] Description=Frp Client Service After=network.target syslog.target nss-lookup.target [Service] Type=simple ExecStart=/usr/local/bin/frpc -c /etc/frp/client.ini Restart=on-failure User=nobody Group=nogroup [Install] WantedBy=default.target ``` 保存之后记得刷新守护进程缓存以及启用新添加的服务单元: ```bash systemctl daemon-reload systemctl enable --now frpc.service ``` 此时应当已经成功完成了整个流程,现在可以从互联网上的任意位置尝试连接所设定的目标端口来进行测试验证了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值