因为有在外面访问家里 NAS 的需求,群晖自带的动态域名解析访问又太慢。所以需要用内网穿透技术来实现通过其他公网 IP 来访问家里的 NAS 设备的需求。
frp的github地址 点击这里
frp的下载地址 点击这里
1 客户端部署
##下载对应版本的Frp
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
##解压
tar -xzvf frp_0.21.0_linux_amd64.tar.gz
##进入目录
cd frp_0.21.0_linux_amd64
##删除服务端相关的文件
rm -rf frps*
编辑客户端的配置文件frpc.ini
[common]
server_addr = x.x.x.x //服务端的IP地址
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[nas]
type = http
local_ip = 192.168.0.100 //nas的局域网ip
local_port = 5000
custom_domains = nas.example.com
运行客户端frp
nohup ./frpc -c ./frpc.ini > info.log 2>&1 & echo $! > tpid
2 服务端部署
##下载对应版本的Frp
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
##解压
tar -xzvf frp_0.21.0_linux_amd64.tar.gz
##进入目录
cd frp_0.21.0_linux_amd64
##删除服务端相关的文件
rm -rf frpc*
编辑服务端配置文件frps.ini
[common]
dashboard_port = 7500 //Dashboard端口
dashboard_user = admin //账号
dashboard_pwd = admin //密码
bind_port = 7000
vhost_http_port = 8080
server_addr = x.x.x.x //服务器id
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
运行服务端frp
nohup ./frps -c ./frps.ini > info.log 2>&1 & echo $! > tpid
3 查看效果&&隐藏端口号
访问http://nas.example.com:8080
这时候我们使用网址访问的时候是会带端口号的。看着很烦。这里使用nginx转发的方式可以去掉8080。nginx添加conf如下:
server
{
listen 80;
server_name nas.example.com ;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
}
成功!!!