用FRP做反向代理实现家中的NAS内网穿透

作者: loaf 分类: 随笔 发布时间: 2019-11-26 23:51

起因

讽刺的是,我的电信宽带是有公网IP的,我本来用NAS自带的DDNS用的很好。真有到有一天,突然断网,打电话报修,才说是“违规使用”网络,在“承诺不再使用”后才重新开通。我去办理时,也有其它的NAS使用者以相同的理由被断网,电信的人说,可以申请一个固定IP,但他们自己都不知道是什么部门关停的,只是说收到一个清单,他们是按单子断网。真是“魔都”啊。
但是不能同步的确非常不方便,只能尝试一下FRP方案。

操作步骤

客户端

我有两台NAS,一台是QNAP,一个用蜗牛矿难机改的黑群晖。准备先用这台黑群晖来尝试。

进入NAS的管理中心,在“控制面板”-“终端机和SNMP”中,打开SSH

使用SecureCRT登录到NAS:

admin@DS918Plus:~$ sudo -i
Password:
root@DS918Plus:~# cd /usr/share/
root@DS918Plus:/usr/share# mkdir frp

下载FRP的最新版本,从官网复制地址

root@DS918Plus:/usr/share/frp# wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_386.tar.gz
root@DS918Plus:/usr/share/frp# tar xf frp_0.29.1_linux_386.tar.gz
root@DS918Plus:/usr/share/frp# cd frp_0.29.1_linux_386
root@DS918Plus:/usr/share/frp/frp_0.29.1_linux_386# rm -rf frps*
root@DS918Plus:/usr/share/frp/frp_0.29.1_linux_386# ls
frpc frpc_full.ini frpc.ini LICENSE systemd

编辑frpc.ini

[common]
server_addr = VPS的公网地址
server_port = 7000

[nas]
type = http
local_ip = 192.168.1.12
local_port = 5000
custom_domains = 我的域名

创建一个启动文件

vi startup.sh

#!/bin/sh

setsid /usr/share/frp/frp_0.29.1_linux_386/frpc -c /usr/share/frp/frp_0.29.1_linux_386/frpc.ini

然后chmod +x startup.sh

服务器

登录到服务器上

cd /usr/share
mkdir frp
wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_386.tar.gz
tar xf frp_0.29.1_linux_386.tar.gz
cd frp_0.29.1_linux_386
rm -rf -frpc*

编辑frps.ini

[common]
bind_port = 7000
vhost_http_port=8080
vhost_https_port=8081

创建startup.sh

#!/bin/sh

setsid /usr/share/frp/frp_0.29.1_linux_386/frps -c /usr/share/frp/frp_0.29.1_linux_386/frps.ini

使之可执行chmod +x startup.sh

然后运行startup.sh

[root@hkserver01 frp_0.29.1_linux_386]# ./startup.sh
2019/11/26 21:53:20 [I] [service.go:141] frps tcp listen on 0.0.0.0:7000
2019/11/26 21:53:20 [I] [root.go:205] start frps success

再回到NAS上,运行客户端。

root@DS918Plus:/usr/share/frp/frp_0.29.1_linux_386# chmod +x startup.sh
root@DS918Plus:/usr/share/frp/frp_0.29.1_linux_386# ./startup.sh
2019/11/26 23:14:25 [I] [service.go:249] [fa4339c4275dcd6a] login to server success, get run id [fa4339c4275dcd6a], server udp port [0]
2019/11/26 23:14:25 [I] [proxy_manager.go:144] [fa4339c4275dcd6a] proxy added: [Qnap QnapWeb ssh nas jupyter Synology Drive Calibre]
2019/11/26 23:14:25 [I] [control.go:164] [fa4339c4275dcd6a] [QnapWeb] start proxy success

域名解析中将域名的泛域名解析到VPS服务器上,就可以用子域名正常访问了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注