家庭NAS异地访问之内网穿透
家庭NAS异地访问之内网穿透
一. 概要
1. 什么是内网穿透?为什么要做内网穿透?
在互联网世界中,IP地址大致分为两类:公网IP可以被全球互联网上的设备访问;内网IP只能在局域网中使用,无法被直接访问(例如192.168.x.x)。
我们的家庭路由器、公司网络,大多分配的是内网IP,宽带运营商通常将多个用户“共享”一个公网IP,用NAT技术进行地址转换。这些设备虽然能“访问互联网”,但远端设备无法主动访问它们。
简单来说,内网穿透就像给你的内网设备开了一扇“可以让外网访问的门”。它的原理通常是:本地设备向中转服务器(公网可访问)发起连接并保持通信,外部访问请求也连接这个中转服务器,中转服务器将双方连接“牵线搭桥”,实现数据互通。
类似远程办公,家庭NAS异地访问,视频监控,智能家居控制等都可以通过内网穿透技术来实现远程异地访问。
2. 内网穿透后效果如何,访问速率能否满足正常使用
内网穿透的大致拓扑如图所示,那么从主机B访问A地NAS时,影响速率的关键因素在于图内红色字体处,实际使用时速率为红色字体处带宽最低处的速率。
例如图内虽然云服务器厂商的虚拟机拥有200M动态带宽,但是家庭内网到运营商得上行带宽只有100M,因此我们搭建好内网穿透后,从主机B访问NAS的速率只有10MB/s,也就是说从主机B访问NAS时,下载文件只会拥有10MB/s的速率;因此访问速率是否能够满足正常使用,要看自己设备环境及实际使用场景,可以根据上述说明自行进行评估。
需要注意带宽和速率的转换,理论上速率=带宽/8,例如家庭带宽为1000兆,但是你上网下载文件时,显示的速率是100-125MB/s
二. 准备条件
1. 家庭网络环境
本文以飞牛OS为示例,也可以选择其他NAS系统,根据实际情况选择
- NAS一台,需要支持docker环境安装,或者NAS自身应用商店有FRPC客户端下载
- 家庭路由器一台,需要支持MAC地址绑定
2. 云主机环境
本文以阿里云为示例,也可以自行选择其他厂商云主机,自行根据价格来选择
- 有公网IP的云主机一台,云主机公网带宽需要大于或等于家庭宽带的上行带宽
3. 家庭宽带的速率测试
通过测速网测试家庭带宽的上行带宽,此处尤为重要,通常使用瓶颈不会在云服务厂商或者异地的下载带宽,而是家庭宽带的上行带宽,因此如果家庭带宽的上行带宽无法满足实际使用需求,那么就可以放弃搭建内网穿透了。
需要注意测速结果的单位,Mbps是带宽,MB/s才是速率
三. 搭建部署
1. 云主机的购买
登陆阿里云官网,点击权益中心 点击此处快速跳转
选择红框内的新人特惠产品,阿里云给每个未购买过此规格服务器的用户提供一次79一年的新人特惠
,后续续费的话价格如图,一定注意看好公网IP动态带宽200M
,购买时需要选择地域,选择距离个人NAS所在地最近的地域
,镜像选择宝塔面板
即可。
2. frps搭建
购买云主机后,等待云主机创建完毕,登陆阿里云官网进入控制台,点击轻量服务器跳转至轻量服务器控制台,并记录此处的公网IP,后续会用到。
点击进入详情页,选择红框处查看宝塔面板的账号密码并记录。
点击防火墙添加放行端口,例如宝塔面板的6009端口,飞牛NAS的5666端口(http)和飞牛NAS的5667端口(https),frps的7000和7500端口。
云厂商的云主机默认均配置防火请或安全组,如果不进行端口放行,是无法通过我们的客户端访问公网IP的特定端口的
通过浏览器访问宝塔面板,访问方式为公网IP+端口号,假设分配给你的公网IP是10.10.10.10,那么在浏览器访问10.10.10.10:6009
即可,登陆面板后,选择docker,搜索frp,选择frp服务端点击安装并记录账号密码。
等待安装完成后,进入安装目录,双击打开/www/dk_project/dk+app/frps/frps_xxxx/data/frps.toml
文件,记录截图红框内的token字段。
3. 家庭网络配置
通常我们家庭无线路由器默认开启了dhcp功能,登陆到家庭路由器,将dhcp地址池修改为1-250(地址池大小可自行修改),推荐NAS使用静态IP地址,并绑定MAC地址,防止网络冲突,保证NAS使用的稳定性;NAS地址可以在系统设置-网络设置内进行修改。
4. frpc搭建
登陆飞牛OS管理WEB,打开应用中心,搜索frpc,安装frpc客户端
等待安装完毕后,打开frpc客户端,填写对应参数并提交。
serverAddr
对应云主机的公网IP
auth.method和auth.token
对应前面frps搭建时记录的token值
localIP
对应NAS的IP地址,此处填写NAS地址或者127.0.0.1均可
localPort
对应NAS的WEB访问端口,默认为5666
remotePort
对应穿透映射后,通过公网IP+端口访问内部服务时的端口
5. 穿透验证
通过浏览器访问FRPS web面板,访问方式为公网IP+端口号,假设分配给你的公网IP是10.10.10.10,那么在浏览器访问10.10.10.10:6009
即可,登陆面板后,可以查看连接状态,链接状态为online即为正常,此时通过公网IP+端口即可实现异地访问家庭NAS系统,例如10.10.10.10:5666
扩展
1. 通过域名访问NAS
准备条件:
- 1个域名,并且完成了备案(需要在对应云主机厂商进行备案),否则无法使用80/443端口
- 完成了上述内网穿透所有操作
搭建部署:
打开宝塔面板,点击添加站点,如图所示添加购买的域名。
点击红框内打开站点目录,打开index.html文件并修改,此步骤是为了让你的域名可以被工信部访问,防止工信部判定你的域名站点是空壳站点,从而撤销你的备案,宝塔面板默认创建站点后的页面缺少备案信息的内容,可以直接复制我得进行修改。
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>填写备案时申报的站点名称</title>
<style>
body,html {
height: 100%;
margin: 0;
display: flex;
flex-direction: column;
}
.footer {
margin-top: auto;
text-align: center;
padding: 10px;
background-color: #f1f1f1;
}
.container {
width: 60%;
margin: 10% auto 0;
background-color: #f0f0f0;
padding: 2% 5%;
border-radius: 10px
}
ul {
padding-left: 20px;
}
ul li {
line-height: 2.3
}
</style>
</head>
<body>
<div class="container">
<h1>填写备案时申报的站点名称</h1>
<h3>站点正在建设中!</h3>
</div>
<div class="footer">
<iframe allowtransparency="true" frameborder="0" width="255" height="64" scrolling="no" src="//tianqi.2345.com/plugin/widget/index.htm?s=2&z=2&t=1&v=2&d=1&bd=0&k=000000&f=&ltf=009944&htf=cc0000&q=1&e=0&a=1&c=54511&w=255&h=64&align=center"></iframe>
<p>版权所有 © 2025 XXXXXXX</p>
<a href="https://beian.miit.gov.cn">备案号:填写备案号</a>
<br>
<img width="18" height="18" class="relative entered exited" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAABEFJREFUOE911H9MlHUcB/D38+PugcPj7jh+Hj+fhAG7wkIDyVKmzuKPzEZNE6WIBhFhWCQ4xxitotKBLjZx0YgQGMwiarIQi+nmLwbIkYKScMnhwSG/Du7n89zzPK2zWD/s++dn+7z2/m7vfQj8z5Mc3ZEz9/mN57v6d89OT7MZu1K+S9RHdxLM9uGHrRD/HjrmuyNvGsZL29pHtg0ZphJ4iYZEUyA9NiQ+op7bs1vfnZSUeEzDvjj0993/QBODlcee2tT73uNpgTiQA4Ta5iETeCwHadDUI6GlxYWG6qTuzDern3soZLF0hthMgzmHyoYPO0n4nyhyYv6oAfw8BagVoCwWRFUmoOaaBpcvKPgvToRX6dfn1BLK5Pt/gKuJfjOU5GZlG+qvGlQ42+xAYNMgbFeckGmV4Cge1IIH0IoIqWKx80gkxGU7Wk9v+XzD1vIDq5Ak9frcGT5TnbZ5rEAbpkF7mRmOoquAi4JbrQDJcwBBgFy0QVcZiYoxPZqaaXzfHn7u+ZdLdhJEnNubaGG2McM8/ElHxj6WCdAp0HpwHEvZ10FKFMjUGJAKBvyACeLyCsKORODT+QScqtPi25ND3LYXil9X6QqavdDM+NG9VuPXzfveCcXYPS3ONkxC3ToOQa6BqnQ7SH8GS4194HpuQFMYh9dqozA8IOKb2gE8trn0g5C4tyoeQMaP6tyTzfkV1Rp81cmiaP88CnfNwnSJA2njQCgIiCsEQp7xQ79JjryKGKxLnEN9uRGa+L2no5+o3O+F7hoKf6LtXVu7zimR9+GjiPDY0BJ5AYHparh0/gDjBkwCZENzOHwjAT/w8Xg3ewL5mXcBVfqt+PSmRC80NVJ/0DbTWO12GJH1/jqMj/rhY1xGXEoA5NE8aJoDZ1Fi5cokKpzJuBcQiDM11xET6QfSL/fLtamFbzyAxmpq5kZai/2YJfzY64eizxLgQwigJBGh/k5o/d2YNCvgFGWwQoHiV014+5Up2OxKqNiCOjY5r8ALmW83li0Yu6tkiim4ZozoOB8M2mcNLg2osCXFgvjYRdQ0xEIXJMLlEnAo2whVEAuXh4UqbENTbGpetheSpH7ZeN/FaqvZkMswv/hSzimIdDgkgQbNLEHgGPBOETIG4OxWUMpg8OKTAslE/Ryu35EdzKbMrDZ7cbFDbRm+2OayuneIngl4Via9JaTkDCB4QJAOcA4CMkUQJMTDuUSPRGx6NpNNeunWarMXFtpVC2OjbW7rTDollzOg3BCdd2CfvQ1RpEASDARBgo8yFCQTAY8nAPyylfNVK6+p49fviUrINf/5NYmYGDiVPzc6VOJxza2lfZ1gfNzeFJIwCVHgQJIsQMrhcarA8/6QMZqpgNikk+yap48Rej33jzNys+d4lH3ZlrY8PZhEMlSMwNM6H8akkMschH1FxzMK+bQEZgJEiIGWafs2ZpX/+tcp+R0WIMsiYqFvOgAAAABJRU5ErkJggg==">
<a href="https://www.beian.gov.cn/portal/registerSystemInfo" target="_blank">公安备案:注册中...</a>
</div>
</body>
</html>
点击SSL,选择域名管理,选择DNS接口设置,添加DNS接口配置,选择对应云厂商; 打开云厂商官网获取AccessKey和SecretKey,并填写至对应位置。
不听取他的建议,创建后保存好SecretKey,注意下载SecretKey后,想要再从官网查看SecretKey就无法查看了,只能重新创建,因此一定要保存好SecretKey
。
打开云厂商官网,添加域名解析,按照截图内添加如下解析。
@
对应顶级域名解析
www
对应www的二级域名解析
nas
对应nas的二级域名解析(此处可更改,例如nas.xxx.com,xxx.cn是我的根域名,nas.xxx.com是我想用来访问NAS的域名)
打开面板,选择SSL,选择证书申请下的Let's Encrypt证书,按照图内选项进行配置,然后申请证书。
申请完毕后,打开面板选择SSL,勾选自动续签,并部署到www.xxx.com的站点。
打开面板,点击侧边栏网站,选择www.xxx.com的站点详情页,选择SSL,勾选强制开启https。
登陆飞牛OS WEB管理界面,打开frpc,添加5667端口穿透。
打开面板,点击侧边栏网站,选择反向代理,并添加反代,域名填写前置配置好的nas.xxx.com,目前填写https://公网IP:5667
(5667是飞牛OS的https端口,注意:要使用英文的),填写完毕后点击确定。
点击反代详情页,选择SSL,选择Let's Encrypt证书并申请,内容按照截图内配置,等待申请完毕后,单击部署,并在当前证书选择强制开启https。
验证: 在浏览器通过域名访问站点和NAS,查看是否可以成功访问。