前言
对于我们现在很多地区的运营商来说,公网 IPV4 是极其难去申请的,就算可以申请到,也会让你加不少钱改套餐,对于普通用户来说有些划不来。IPV6 是连通公网的一个不错的方法,只需要给当地运营商的运维打个电话,把光猫拨号改为桥接,再从路由器中拨号并打开 IPV6 功能,此时便可以轻松将你的设备开放给公网。
对于开放在公网的设备来说,IPV6 的复杂程度以及动态变更的特点,让公网的设备面对暴露的风险时还是有一定的防御能力,但是我仍然不推荐将所有端口都开放到公网,以免出现安全问题。
一、路由器的设置
不同的路由器的设置内容略有不同,这里我是 TP-LINK 的主路由,所以暂时先给出该型号路由器配置的详细图文教程。
只要记住一点,Unraid 目前可以通过 DHCPv6 或者 SLAAC 获取到 IPV6 地址,但是 Unraid 的 Docker 服务并不可以直接使用 DHCPv6 所分配的 IPV6 地址,而且 Android 设备貌似也不能使用 DHCPv6,所以最好还是使用 SLAAC 进行分配。
TP-LINK 路由器
1.1 关闭 IPV6 桥接模式
首先需要关闭 IPV6 桥接模式,如果你的 TP-LINK 路由器为二级路由,那就开启桥接模式。
1.2 路由拨号与获取前缀授权
在确定光猫端设置为桥接之后,在路由器进行拨号。
这里复用 IPV4 的拨号链路,因为如果这里仍然拨号就会产生冲突。
前缀授权也就是本地路由向 ISP 运营商的 DHCP 获取一个 IPV6 地址的前缀,然后本地就可以继续根据这一个 IPV6 地址继续分配给其他设备或创建子网
1.3 设置 SLAAC 分配 IPV6 地址给其他设备
设置一下 LAN 口相关设置,首先选择 WAN 口的前缀授权接口,下一步选择 SLAAC 对其他设备授权 IPV6 地址。
二、Unraid 的设置
我这里使用的是 Unraid 6.11.5,Unraid 不同版本在某些设置可能存在差异,如有问题请在评论区提出。
Unraid 网络设置
在修改网络设置前,需要关闭 Docker 服务以及虚拟机服务。
设置 Docker 应用的网络类型
Unraid 提供的 Docker 网络模式主要有以下几种:
bridge:
- 默认的网络模式。容器连接到一个虚拟的桥接网络,可以通过桥接网络相互通信。
- 容器通过NAT共享主机的IP地址。
host:
- 容器与主机共享网络命名空间,使用主机的IP地址和端口。
- 容器的端口直接暴露在主机上,没有NAT。
none:
- 容器没有网络连接,仅有回环接口(lo)。
- 适用于不需要网络的应用或自定义网络配置。
custom:
- 自定义网络模式,允许用户创建和配置自己的桥接或macvlan网络。
- 可以通过Unraid的网络设置界面进行配置,适用于需要特定网络设置的应用。
custom 模式(推荐)
等待容器启动完成,我们打开控制台,输入命令ifconfig
查看容器是否成功获取了 IPV6 地址。如下图所示,eth0 网卡已经成功获取了公网 IPV6 地址。
host 模式
我这里因为 AutoBangumi 没法连接 custom 模式下的 qBittorrent,所以只能使用 host 模式,一般来说不建议使用 host 模式直接暴露 Unraid 的 IPV6 地址,毕竟在 qBittorrent 中是可以直接看到 IPV6 地址的。
等待容器启动完成,我们打开控制台,输入命令ifconfig
查看容器是否成功获取了 IPV6 地址。如下图所示,br0 网卡已经成功获取了公网 IPV6 地址。
应用的具体设置
qBittorrent
在 qBittorrent 的设置-高级
中修改网络接口为控制台中查询到的 Unraid 的网卡。具体的网络接口可以从 Unraid 的网络设置-路由表
中看到。
此外,qBittorrent 绑定到的 IP 地址选择所有地址,只要你的 NAT 类型不是太差,IPV4 还是可以连接到的,只是上传的连通性会变得很差。
后记
目前我个人不太经常使用 IPV6,毕竟在外面的话,除了流量是 IPV6,其他地方的网络很多是没有开启 IPV6 的,所以在外面访问家里的服务我使用的是 Tailscale,感觉还是挺不错的,基本能跑满。
这篇文章算是我自己使用 Unraid 中遇到的问题,然后随手写的解决方案,后续也会继续写一些有趣的文章。