之前就说了,由于学校的电信天翼十分之可爱,由于利益链的关系,将上线限制的死死的,甚至还有2天必须重连这么一种玩法,所以,在这种情况下想要实现外网访问NAS不现实。因此,内网穿透技术就来。
参考文章:如何用 Frp 实现外网访问群晖 NAS
内网穿透简介
内网穿透技术即通过一定的手段使得外网可以访问内网的机器。而可能由于种种原因,宽带供应商并不会每一次都会十分好心的给你提供公网IP,毕竟现在公网IP越来越少了,大部分都是提供NAT地址,至于什么是NAT,百度吧。
本文是用Frp实现的,实现条件,需要一台服务器作为“中转站”实现内网穿透。
为啥选择Frp?
不会告诉你我就是因为懒...
前期准备
- 一台可以访问的服务器
- 一台可以安装Frp Client的NAS
安装过程
其实安装FRP并不难,而且十分快。
1. 服务器端安装Frp Server
服务器连接到SSH,并下载Frps文件,此处具体的内核根据实际情况选择,其他内核请在Releases处下载即可。
下载Frps:wget https://github.com/fatedier/frp/releases/download/v0.12.0/frp_0.12.0_linux_amd64.tar.gz
解压缩:tar -zxvf frp_0.12.0_linux_amd64.tar.gz
进入文件夹,并删除多余文件:
cd frp_0.12.0_linux_amd64
rm -f frpc frpc_full.ini frpc.ini
编辑服务器端配置文件:vi frps.ini
服务器配置如下:
[common]
bind_port = 606
vhost_http_port = 8080
dashboard_port = 7500
dashboard_user = 网页面板用户名
dashboard_pwd = 网页面板密码
max_pool_count = 5
authentication_timeout = 900
subdomain_host = onionnet.work
[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 用户身份认证
关于配置文档的官方详情说明:详细配置说明
保存文件,运行服务器端:./frps -c ./frps.ini
2.客户端(NAS)安装Frp
下文仅针对NAS系统,如有其他Linux系统,万变不离其宗。
- 打开NAS的SSH
- 连接到SSH
这里有一个问题,需要切换到root账户才可以有权限不然很多东西都无权限。
切换root:sudo -i
下载Frp
wget https://github.com/fatedier/frp/releases/download/v0.12.0/frp_0.12.0_linux_386.tar.gz tar -zxvf frp_0.12.0_linux_386.tar.gz cd frp_0.12.0_linux_386 rm -f frps frps_full.ini frps.ini
- 编辑服务器端配置文件 :
vi frpc.ini
- 配置文件说明
[common]
server_addr = 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
[web]
type = http
local_port = 80
subdomain = web
配置文档简单介绍:
[common]
server_addr = 服务器IP
server_port = 服务器上设置的Frp服务端口
auth_token = 和服务器端[ssh]下的auth_token对应
pool_count = 1
[ssh]
type = tcp
local_ip = NAS 局域网ip
local_port = 与服务器端匹配
remote_port = 与服务器端[ssh]下的listen_port对应
[nas]
type = http
local_port = 5000
subdomain = nas
如为nas,则结合服务器端的subdomain_host设置,最终nas.onionnet.work:server_port即为内网下的local_ip:local_port对应网页,以下同上,可自行添加
[web]
type = http
local_port = 80
subdomain = web
PS:请记得将相对应的域名解析到服务器IP名下
6.保存,运行:./frpc -c ./frpc.ini
PS : 如果在服务器端显示了start proxy sucess字样即为穿透成功,此时若根据上述配置填写的信息,
- nas的管理页面为:nas.onionnet.work:606
- nas的Web Station服务为web.onionnet.work:606
如果不想要后面端口,想要隐藏的话,可以设置nginx反向代理即可,文章可参考:Frp 隐藏 8080 端口
如果想要完美全自动,可以设置好Frp服务器开机自启,文章可参考:frp 自动启动
总结
- 优点,免除了端口映射等一堆麻烦,而且不受具体网络环境限制。
- 缺点也是很明显的,用起来明显不如直接访问公网IP来的快,而且如果云服务器是以流量计费,则这个流量的费用....
但是平时应急使用必然没问题的,如果服务器带宽好的话使用体验应该不会很差的。