本文章主要记录通过ipv6实现家庭影音中心在互联网上的访问。

之前很多方案都是通过第三方进行内网穿透,实际体验不是很好。目前ipv6发展迅速,完全可以取代这种以ipv4为中心的内网资源外网访问的方式。ipv6使得ip地址不再紧缺,只需要家中网络一点小小的改变即可实现在外访问家庭影音中心。

1、前提条件

  • 一条宽带,宽带的上传带宽决定了外网访问速度的上限。我使用的是电信500M。
  • 一台nas或者是一台主机,本人没有nas,用的是windows10主机。
  • 一台路由器和一台光猫,光猫是电信公司配的,路由器是小米路由器4A千兆版(R4A)。

本次操作不涉及到影音云的搭建,网上有很多的教程,我是在Windows10安装了jellyfin服务(截止20230811,官网最新版),将电影照片的目录添加到Jellyfin中即可自动刮削,满足基本的需求——影音娱乐和照片浏览。

2、操作

这个操作的核心就是利用ipv6的最大的特性,就是没有所谓的内网nat地址,所有的地址都是互联网可寻址的(除了fe80等开头的保留字段)。为了达到这个目的,我们就要让我们的主机可以被外部网络通过ipv6访问。

2.1 主机开启ipv6

主机开启ipv6支持是第一步,首先将路由器开启ipv6支持,主机网卡开启ipv6,我的windows10在开启了ipv6之后,总是出现无法访问web的情况,遂猜测是DNS出了问题,可以选择手动在主机网卡里面设置DNS为8.8.8.8和114.114.114.114。将路由器和主机开启ipv6支持后,通过以下2个步骤检测ipv6情况。

  1. 使用ipconfig(Windows) or ifconfig(macOS、linux)查看网卡地址
# 使用ipconfig(Windows) or ifconfig(macOS、linux)查看网卡地址
ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
ether 38:f9:d3:9c:e8:da
inet6 fe80::14a9:a86e:5014:f677%en0 prefixlen 64 secured scopeid 0xa
inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
inet6 2409:8a20:dc:280:1808:33a2:768a:52f8 prefixlen 64 autoconf secured
inet6 2409:8a20:dc:280:d593:10fe:f5b2:3bc8 prefixlen 64 autoconf temporary
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
  1. ipw.cn网站上查看当前网络环境是否是ipv6优先。

通过我的测试,成功获取到24xx开头的ipv6地址之后,基本上都是ipv6访问优先的。如果不行,查看是否开启了代理软件等影响网络的因素。

2.2 光猫改bridge模式

这一步简单的方式就是给宽带安装维护 师傅打电话,让他帮你把光猫上面的网络连接方式改为bridge模式,一般来说这样的要求师傅都会同意。现在要光猫的超级管理员密码的时候一般都不给,所以可以让师傅直接给你改,记得一定要宽带账号和密码,我在手机营业厅上获取的宽带帐密和师傅告诉我的不一样,可能他告诉我的时候把密码顺手改了。

2.3 路由器使用ppoe模式拨号上网

在路由器的管理界面,使用上一步获取到的宽带账号进行ppoe方式上网。然后将ipv6设置为native模式,我开启ipv6有时候上网有问题,可以在ppoe拨号阶段将DNS手动改为8.8.8.8或者114。

2.4 修改路由器的防火墙配置

在本地浏览器上可以使用ipv6地址访问,但是过了路由器这一层,比如使用同一个WiFi下的手机去访问就不能访问,说明被防火墙拦截了,需要去路由器上设置一下。由于小米这个路由器默认不开放ssh或telnet等服务,有大佬在github上的代码——OpenWRTInvasion,成功登录小米路由器4A千兆版(R4A)的终端。

其中修改ipv6的iptables配置,将forward规则链开放端口即可。

root@XiaoQiang:~# ip6tables -L forwarding_rule  --line-numbers
Chain forwarding_rule (1 references)
num target prot opt source destination
1 ACCEPT tcp anywhere anywhere tcp dpt:8096
root@XiaoQiang:~# ip6tables -D forwarding_rule 1
root@XiaoQiang:~# ip6tables -L forwarding_rule --line-number
Chain forwarding_rule (1 references)
num target prot opt source destination
root@XiaoQiang:~# ip6tables -I forwarding_rule -p tcp --dport 19999 -j ACCEPT

这样的话就开放了本地19999端口到互联网上,处于互联网上的任意IPV6设备都可以访问你的IPV6的19999端口。我的建议是将这个开放的端口设置大一点,不要设置常用端口,防止被扫到。

通过上面4个步骤,现在可以使用手机流量访问你的这个IPV6地址了,访问格式为https://[IPV6]:19999。

2.5 利用ddns将域名和IPV6地址绑定。

windows上有一款开源工具ddns-go,可以实现动态绑定IPV6到域名上,支持多加域名云厂商,主要步骤为:在阿里云上面购买一个域名,然后在控制台添加AAAA域名解析到当前主机的IPV6地址上,在本地运行ddns-go,配置成功即可。

实测下来,每次开关机之后,电脑就会重置IPV6地址,因为目前免费的域名解析时间(TTL)为10分钟,也就是ddns将开机后的IPV6绑定到域名上,需要10分钟的时间生效。这样就实现了使用域名的方式去访问家里的Jellyfin,当然,ddns-go还支持webhook,可以将新的IPV6地址发送到钉钉机器人,这样在手机上也可以收到当前主机的IPV6地址,实现直接访问。

3. 使用场景及安全

由于将个人主机暴露到公网上,理论上人人都能访问到你的主机,但是由于我们开放的是IPV6地址,实际上是无法被扫描的,也就是说只要你不告诉别人,别人是无法得知你的IPV6地址的。我们可以几个手段保护我们的安全。

  • 使用nginx反向代理
  • 将jellyfin添加HTTPS支持(10分建议,注册域名的时候会赠送一些证书)
  • 路由器防火墙最小原则,仅开放特定高端口(不要使用常用端口,10分建议)
  • jellyfin登录口令设置16位以上,并且设置安全策略,密码试错黑名单等
  • AAAA解析使用三级或四级域名
  • 不使用域名,就使用钉钉机器人下发的实时IPV6地址(依赖于钉钉服务的稳当性)

我基本上是出差的时候,或者离开家的时候,又想要访问家里的一些资源,就可以利用IPV6实现公网访问家庭资源的需求了。

利用IPV6随时访问家中影音Jellyfin的更多相关文章

  1. OpenWrt 路由器如何让 lan 口主机获得 ipv6 网络访问 -- 知乎

    本文转自知乎: OpenWrt 路由器如何让 lan 口主机获得 ipv6 网络访问? - mistforest的回答 - 知乎https://www.zhihu.com/question/29667 ...

  2. Winform 利用 Oracle.ManagedDataAccess访问Oracle数据库

    Winform 利用 Oracle.ManagedDataAccess访问Oracle数据库时出现以下错误: Message = "每个配置文件中只允许存在一个 <configSect ...

  3. 网络基础 利用vnc viewer访问在vmware虚拟机上的linux

    利用vnc viewer访问在vmware虚拟机上的linux by:授客 QQ:1033553122 Linux服务器为架设在VMware之上的虚拟机,那么可以直接使用VMware自带的vnc,而不 ...

  4. 【转】Java利用反射机制访问私有化构造器

    Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...

  5. 如何利用IPv6进行远程桌面连接

    如何利用IPv6进行远程桌面连接 学校是教育网,其中寝室和实验室的IPv4地址被划分成了两个VLAN,所以没法使用windows的远程连接功能.今天突然想到学校的IPv6地址可能并未划分成两个VLAN ...

  6. 个人宽带如何开启IPv6网络访问

    IPv6是大势所趋,就在前段时间湖南联通发布公告,对家庭宽带提供 IPv6 地址,不再提供 IPv4地址,那本文就介绍 个人宽带如何开启 IPv6网络访问. 湖南联通停止向普通家庭宽带用户提供公网 I ...

  7. ASP.NET MVC中利用AuthorizeAttribute实现访问身份是否合法以及Cookie过期问题的处理

    话说来到上海已经快半年了,时光如白驹过隙,稍微不注意,时间就溜走了,倒是没有那么忙碌,闲暇之际来博客园还是比较多的,记得上次在逛博问的时候看到有同志在问MVC中Cookie过期后如何作相关处理,他在阐 ...

  8. java利用“映射文件访问”(MapperByteBuffer)处理文件与单纯利用Buffer来处理文件的快慢比较

    处理文件是java经常使用的操作,在对一个“大文件”(比如超过64M)进行操作时一点点速度的提高都会带来性能的巨大提升.然而我们经常使用的BufferxxStream,来直接处理大文件时,往往力不从心 ...

  9. 利用MailSniper越权访问Exchange邮箱

    0x01 概述 Microsoft Exchange用户可以授权给其他用户对其邮箱文件夹进行各种级别的访问.例如,用户可以授予其他用户读取访问其收件箱中里面的电子邮件,但是要是用户(或Exchange ...

  10. 利用ipv6技术,废旧笔记本变成互联网server

    如果你家的路由器已经get到了ipv6地址,并且你家的电脑也获取了有效的ipv6地址,在广域网的设备可以访问到.那恭喜你,再配合我这个ddns,你可以完美地把你家的电脑当服务器使用. 1.确保你家的宽 ...

随机推荐

  1. JavaWeb之04javaScript基础&DOM目录

    目录: 1.案例:在末尾添加节点(*****) ** 创建标签 createElement方法 ** 创建文本 createTextNode方法 ** 把文本添加到标签下面 appendChild方法 ...

  2. AcWing 3729. 改变数组元素

    给定一个空数组 V 和一个整数数组 a1,a2,-,an. 现在要对数组 V进行 n次操作. 第 i次操作的具体流程如下: 从数组 V尾部插入整数 0.    2.将位于数组 V末尾的 ai 个元素都 ...

  3. Flutter三棵树系列之详解各种Key

    简介 key是widget.element和semanticsNode的唯一标识,同一个parent下的所有element的key不能重复,但是在特定条件下可以在不同parent下使用相同的key,比 ...

  4. ThreadLocal 的应用及原理

    1. 是什么 JDK 对 ThreadLocal 类的描述为: 此类提供线程局部变量.这些变量与普通变量的不同之处在于,每个访问一个变量的线程(通过其get或set方法)都有自己的.独立初始化的变量副 ...

  5. 烂怂if-else代码优化方案

    0.问题概述 代码可读性是衡量代码质量的重要标准,可读性也是可维护性.可扩展性的保证,因为代码是连接程序员和机器的中间桥梁,要对双边友好.Quora 上有一个帖子: "What are so ...

  6. 哈希工具john

    john:一种极其强大且适应性强的哈希破解工具 爆破字典使用臭名昭著的 rockyou.txt 词表--这是一个非常大的常用密码词表 使用的工具 字典:rockyou.txt 哈希识别工具:hash- ...

  7. jvm中类和对象定义存储基础知识

    1 类文件数据结构类型 Class文件结构主要有两种数据结构:无符号数和表 •无符号数:用来表述数字,索引引用.数量值以及字符串等,比如 图1中类型为u1,u2,u4,u8分别代表1个字节,2个字节, ...

  8. 从0搭建Vue3组件库(九):VitePress 搭建部署组件库文档

    VitePress 搭建组件库文档 当我们组件库完成的时候,一个详细的使用文档是必不可少的.本篇文章将介绍如何使用 VitePress 快速搭建一个组件库文档站点并部署到GitHub上 安装 首先新建 ...

  9. Centos7安装配置Hive

    Centos7安装配置 一 . 安装 安装就不多做详述,选择好自己的镜像设置好路径即可 二 .配置 2.1 网络配置 桌面右键进入 cmd 命令编辑窗口,在 Linux 中设置网络的相关配置都需要管理 ...

  10. Android strings.xml按照key修改

    strings.xml匹配替换 将两个Android项目中的多语言字符串文件(strings.xml)进行比较,如果其中一个项目中包含另一个项目没有的字符,则合并到单一的输出文件,并以 key 在原始 ...