用FRP做反向代理实现家中的NAS内网穿透
起因
讽刺的是,我的电信宽带是有公网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服务器上,就可以用子域名正常访问了。