起因是我在宿舍部署了一台NAS,定期对我的个人数据进行备份,同时在NAS上搭建了文件服务器、工作站、个人多媒体中心以及git等服务,但是因为校园网ipv4无法给上级路由配置端口转发,IPv6只能获取到128位的单设备地址,因此无法实现内网穿透,虽然有像远程组网、反向代理等内网穿透方案,但是需要通过第三方服务器中继,无法保证数据安全并且访问速度严重受限,经过一个多月的摸索,最终找到一套目前为止非常完美的解决方案,能够实现路由器后的设备正常访问IPv6,并且通过使用DNSPod域名解析服务实现单域名双栈访问,同时支持使用TLS/SSL协议,实现了随时随地不限速加密访问

概况

  • 网络使用的是西工大校园网,PPPoE拨号,千兆网速,支持IPv6,IPv4和IPv6均使用的DHCP地址分配机制

  • NAS使用的是威联通QNAP的TS-462C,系统是QTS 5.0.1.2277

  • 软路由使用的是GL-iNet MT1300,自带OpenWrt系统,固件版本19.07.8,内核版本4.14.241

方案分析

  • QNAP DDNS:威联通提供的DDNS直接获取的是校园网流量出口的公网IPv4地址,基本没有任何用处,使用路由器或者直接PPPoE拨号在校园网环境下均无法直接获得IPv6地址,DDNS形同虚设

  • myQNAPcloud Link:其运行机制实际上是使用的阿里云的服务器实现FRP反向代理,速度极慢并且只支持使用特定的app访问,同样我们也可以搭建自己的FRP服务器实现内网穿透,但是大带宽服务器费用很高,并不划算

  • 花生壳、NKN、DDNSTO、Link、ZeroTier等内网穿透方案:均需要第三方服务器进行中继,访问速度慢,并且数据安全难以保证

  • 校园网IPv4进行内网穿透的可行性:通过QNAP自带的DDNS服务能够获取到校园网IPv4出口的公网地址,路由器WAN口获得是校园网内上级路由分配的内网地址,如果需要内网穿透,需要对上级路由逐级配置端口转发,这条路行不通

  • 校园网IPv6进行内网穿透的可行性:目前校园网已经全面普及ipv6,但是西工大的校园网IPv6使用的是DHCPv6的地址分配机制,并且只给每个拨号设备分配一个128位的IPv6地址,只允许一个设备连接,不能划分子网,这种情况下如果使用路由器进行PPPoE拨号,只有路由器能够获取到IPv6地址,无法继续划分子网为路由器后设备进行IPv6的地址分配,如果使用NAS直接进行PPPoE进行拨号则获取不到IPv6地址(此问题应该是QNAP中的PPPoE缺少对于IPv6的支持),这条路也行不通

  • 软路由OpenWrt:校园网的局限性太大没有操作空间,所以上软路由,在接入校园网端口前对内网进行配置,在OpenWrt中进行NAT地址转换,IPv4无法穿透只能校内访问,所以只能使用NAT6,NAT是IPv4时代的产物,原理是将公网IPv4+公网端口号转换为内网IPv4+内网端口号,后来有人提出了NAT66和NAT64,之前我一直觉得NAT66是一个很鸡肋的东西,最初提出NAT是因为IPv4地址有限,利用端口号不仅能进行进程寻址还实现了主机寻址,从而实现了IP复用,但是对于IPv6来讲每个设备都有全球唯一的IPv6地址为什么还要进行地址转换,但当看到校园网奇葩的IPv6网段时好像明白了NAT66存在的意义,通过IPv6是可以在互联网定位到路由器的,因为路由器已经分配到了全球唯一的IPv6地址,但是路由器后的设备分配不到IPv6地址因此可以通过NAT转换实现公网IPv6到内网的转换,至于NAT66和NAT64的选择我个人更倾向于NAT64,因为在校园网环境下个人局域网部署IPv6没有任何意义反而需要配置复杂的防火墙,因此选择使用NAT64实现公网到内网的转换

方案思路

  • OpenWrt进行PPPoE拨号,校园网分配的IPv6地址比较特殊,不能使用OpenWrt内置的IPv6管理,需要手动配置网络接口才能获取到地址,需要注意LAN口同样需要配置,否则会因为LAN口无法分配子网地址造成地址冲突系统循环重启

  • 路由器WAN端口获取到IPv6之后OpenWrt的IPv6 Ping测试以及IPv6路由追踪能够跑通,此时说明可以通过IPv6在定位到路由器

  • 在OpenWrt中配置NAT64,需要注意OpenWrt的IPv6本身并没有NAT转发,建议使用socat或者lucky插件,比较推荐使用OpenWrt大佬古大羊写的lucky脚本,实现公网IPv6到内网IPv4的转换

  • 动态域名解析,推荐从腾讯云购买域名,可以直接使用DNSPod进行域名解析,在添加域名解析时在同一域名下同时配置A和AAAA的解析记录,同时申请免费的SSL证书,DNSPod的免费SSL证书实际上是TLS证书,安全性很高

  • 将SSL证书导入QNAP NAS,便可以利用SSL协议通过https加密访问,其加密原理是当终端与服务器建立通信时,服务器首先向终端发送经过CA机构认证的公钥,终端利用服务器公钥对自己的秘钥进行加密发送给服务器,服务器通过私钥解密获得终端秘钥,从而建立加密通信

  • 利用lucky或者直接在OpenWrt建立域名解析服务,首先将WAN口的IPv4地址推送到DNSPod域名解析的A记录,同时将路由器获取到的IPv6地址推送到同一域名下的AAAA记录,WAN口的IPv4地址实际上是校园网内网地址,IPv6地址是全球唯一的公网地址

  • NAS固定内网IP,这样才能在实现静态的端口转发,使用lucky脚本建立端口转发,将公网IPv6的数据转发到NAS固定的IPv4内网地址,lucky的防火墙是自动配置的,不需要额外配置IPv6的防火墙,但是需要在OpenWrt的防火墙中配置IPv4的端口转发,以实现IPv4+IPv6的双栈访问

  • 此时便能够实现NAS的远程访问,访问机制是如果终端在校园网内网,可以利用解析到的IPv4内网地址直接访问到路由器,OpenWrt利用NAT对IPv4端口进行转发实现内网快速访问(校园网内网IPv4的子网掩码是255.255.0.0,但是经过测试发现校园网内不同网段也可以互相访问,应该是校园网内网服务器对不同网段做了互连),如果终端不在校园网,则会通过公网IPv6地址定位到路由器,路由器通过lucky脚本监听IPv6端口进行NAT64端口转发实现远程访问,因为IPv4和IPv6使用的是同一域名,因此不需要考虑终端的IP地址类型(如果在外网访问必须通过IPv6,目前所有运营商的4G、5G网络均支持IPv6),访问速度约等于校园网网速,速度极快且安全性高

本文先讲解方案分析和方案思路,校园网环境比较特殊走了不少弯路,期间翻阅了很多资料扒了很多教程,最终总结出一个目前为止校园网环境下实现NAS远程访问的完整方案,本文先提供一个基本思路,工作量很大,以上方案思路的每一条都足够写一篇教程专门讲解,之后有时间会详细讲解方案思路中每一条的实施过程,对计算机网络比较了解的可以按照这个思路自行配置

校园网环境下通过OpenWrt软路由利用DNSPod实现QNAP NAS远程IPv4+IPv6双栈访问相关推荐

  1. linux双网卡 ipv4 ipv6 双栈,Linux下IPv4/IPv6双栈接入,使用IPv4连接优先设置教程

    虽然目前很多网站或服务都已经增加IPv6,但是各家的IPv6使用上并不一定畅通.所以我们要设置一下让IPv4作为默认的连接方式.但是根据RFC3484协议Linux默认情况下IPv6优先级高于IPv4 ...

  2. openwrtx86安装docker_PVE下openwrt软路由docker环境安装unifi controller

    PVE下openwrt软路由docker环境安装unifi controller 2020-03-29 14:10:18 48点赞 491收藏 44评论 [写作说明]:之前分享了一篇m920x准系统作 ...

  3. openwrt软路由实现ipv6上网配置

    1.介绍 面对目前互联网的高速发展IPv4地址已经枯竭为了解决此外问题国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)设计的用于替代IPv ...

  4. 群晖Virtual Machine Manager虚拟机安装OpenWrt软路由作为旁路由的详细步骤

    0.前言: 本来一直都是在Windows10的Hyper-V中虚拟软路由的,直到有一天突发奇想,手贱在windows10宿主机中安装了个安卓模拟器,由于众所周知的原因,安卓模拟器是不能同时与Hyper ...

  5. 迷你主机安装openwrt软路由系统(附启动盘制作教程+ISO、IMG镜像文件)

    之前在迷你主机上刷了一个openwrt的软路由,安装过程分享给大家,镜像文件在文章末尾~ 一般需要做软路由系统的机器,是需要至少两个网口的,一个做wan口,一个做lan口 由于其他因素,不能直接将op ...

  6. Linux环境下基于策略的路由

    Linux环境下基于策略的路由 原文作者:Matthew G. Marsh 原文出处:[url]http://www.sysadminmag.com/linux/articles/v09/i01/a3 ...

  7. 将openwrt软路由装进U盘中并运行

    我们可以将openwrt,甚至是centos7系统装到U盘中,作为一个可移动系统. 这边,我以openwrt软路由来举个例. 准备 1.一张不小于3G的U盘或者TF存储卡 2.WinImage9.0 ...

  8. openwrt软路由实现ipv6 nat 上网配置

    1.介绍    之前写的 <openwrt软路由实现ipv6上网配置>文档,经过长期的使用测试和网友评论反馈,之前写的配置方法没有实现必然ipv6上网,重启路由器后就会导致不能ipv6上网 ...

  9. 树莓派4B安装Openwrt软路由并用作家庭网络网关设备

    树莓派4B安装Openwrt软路由并用作家庭网络网关设备 缘由 家里需要联网设备太多,光猫性能不够,家里小米AX3600不想来刷机,然后就想到了被尘封的树莓派4B,经过一段时间的研究与折腾,最终完成了 ...

最新文章

  1. 3天,我把MySQL索引、锁、事务、分库分表撸干净了!
  2. MySQL笔记-InnoDB中Record Lock与Gap Lock
  3. 英语词根研究和单词记忆
  4. Vue项目实现web端飘窗
  5. Chrome快捷键整理
  6. VirtualBox
  7. [Unity][FairyGUI]富文本改变颜色
  8. 使用什么软件可以将PDF文件进行编辑
  9. 递归-PTA循环日程表
  10. 视频网站开发:JavaWeb做一个带自定义小表情的评论功能
  11. Http长连接、短连接、持久连接这三个概念的分析总结
  12. Linux驱动编程篇(三)——LED驱动(一)简单LED驱动
  13. Android校验应用签名是否被篡改
  14. 发现一个非常好的ping工具
  15. Managerial Economics 学习笔记
  16. 4 Vue中的Ajax
  17. STM32单片机(9) LCD1602显示屏输出实验
  18. 计算机视觉与深度学习第七章:经典网络分析
  19. c语言计算火车运行图调整,列车运行图调整是什么意思?调整运行图的这班车还能正常运行吗?...
  20. PLC的工作原理是什么

热门文章

  1. ABP官方文档(十八)【领域服务】
  2. type有字体的意思吗,type用中文怎么说
  3. 有2个学生,每个学生有3门课程的成绩,从键盘中输入学生数据(包括学号,姓名 3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中
  4. 2021最新 wordpress+xampp+阿里云建站过程(超级详细)
  5. 1.ReactiveX - 什么是Rx,Rx的理念和优势
  6. 基于结构光的三维测量学习笔记
  7. Linux_Comand - Check disk space
  8. git-版本控制系统-全解
  9. 从NCE loss到InfoNCE loss
  10. 编译Android8,【分享】为MPSoC编译Android 8的主要流程和命令