打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
路由与NAS 篇十二:移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战...
userphoto

2023.01.08 江西

关注

创作立场声明:折腾了许久的 unraid 容器 IPv6,记录一下学习过程遇到的一些问题以及解决方案,希望能对值友有所帮助.

写在前面

NOTE
本文字数 3300+,配图 26,预估阅读时间 7 ~ 9 分钟

如之前的文章介绍,unraid 本身开启 ipv6 还是比较简单

先在 MAIN 页面停掉 Array 磁盘阵列

SETTINGSS - Network Settings 设置 IPv4 + IPv6 即可

之前的文章因篇幅原因,对 unraid 的 ipv6 细节没有展开来讲,

本文讲介绍 Unraid 容器的 IPv6 配置,并以 Transmission 为例进行演示:

浓缩版

如果有一定的基础,并且赶时间的话,推荐仅看本部分内容即可
后续的内容会比较啰嗦,介绍了一堆基础知识以及踩过的坑,仅为记录

如何在 Unraid 下配置 Transmission 支持 IPv6:

  1. 关闭路由器的 DHCPv6 服务只保留路由通告服务

  2. 迫使 unraid 仅用 SLAAC 申请 IPv6,以保证 br0 类型的 docker 可分配 IPv6

  3. 修改 Transmission 容器网络类型为 Custom:br0

  4. 确保 Transmission 的配置支持 IPv6

  • 对端端口绑定 IPv6:'bind-address-ipv6': '::'

  • RPC 端口绑定 IPv6:'rpc-bind-address': '::'

路由器开放 Transmission 的对端端口、RPC 端口的白名单支持从外网访问

如果配置正确,就可以在支持 Transmission 通过 IPv6 上传下载、外网访问管理

docker获取IPv6

Unraid 为 docker 默认提供了 4 种网络类型

其实就是 docker 网络类型的知识,简单介绍一下 docker 的 5 种网络类型:

网络类型说明使用场景
none只有 lo 回环网卡,封闭的网络不需要网络的容器,保证容器的安全性
host使用宿主网络,性能好没有网络隔离,不能复用宿主已使用端口
bridge保证容器间、容器与宿主间网络隔离适用大部分场景,通过端口映射暴露服务
container和指定的容器共享网络unraid 界面不提供这种网络模式
custom自定义网络,unraid 提供物理桥接可以分配与宿主同网络的 IP

Host网络类型

通过前面的配置,已经可以为 Unraid 分配 IPv6

基于此,就可以通过将容器设置为 host 网络类型以共享宿主的 IPv6

这种类型的容器,可以直接利用宿主网络进行通信

在内网时,可以直接通过 Nas 的 IPv4 地址 10.0.0.2 访问

在外部网络时,也可以通过 Nas 的 IPv6 地址来访问(4G 网络):

当然,为了方便,肯定还是需要配置好 DDNS 通过 IPv6 域名来访问

Custom网络类型

如前面介绍,Unraid 提供了类似物理桥接的 Custom:br0 网络类型

通过这种方式,我们可以让容器获取到与宿主同个子网的网络地址

如上图,Nas 分配的 IP 是通过主路由分配的 10.0.0.2

br0 网络类型的容器可以分配到同个子网的 10.0.0.4

Custom:br0 是桥接到 br0 物理网桥

  • 由主路由分配 IP,与 Nas 宿主处于同个子网 10.0.0.0/24

  • 虽然与 Nas 通过一根网线连接到路由,但在路由看来是两个独立的设备

Bridge (容器默认网络模式)是桥接到 docker0 虚拟网桥

  • 从 docker0 子网分配一个 IP 给容器使用:172.17.0.0/16

  • 容器的网关被设为 docker0 172.17.0.1

  • 容器与 Nas 处于不同子网,与外网通信需要由 docker0 进行 NAT 地址转换

以一个 br0 类型的容器为例(需要路由器关闭 DHCPv6,下文会有介绍)

进入到这个 br0 网络类型的容器,可以看到已经分配 v4、v6 双栈 IP

同时,IPv6 已经是公网 IPv6,可以直接在外网进行访问(只要防火墙放开)

unraid的IPv6

默认支持DHCPv6及SLAAC

Unraid 在开启 ipv6 支持后,默认可获取到两个公网 ipv6 地址:

这两个地址分别是:

  1. 128 位的 ipv6 地址是通过 DHCPv6 获取到的

  2. 64 位的 ipv6 地址是通过 SLAAC 获取到的

当然这个的前提是你的路由器固件开启了路由通告服务DHCPv6服务

这里可能会有人想直接通过 DHCPv6 给 Unraid 指定 IPv6 的后缀

来获取更高的可读性,比如 运营商分配的前缀::2

但是很遗憾,在 openwrt 这个方式行不通:

  1. openwrt 分配的 IPv6 后缀和客户机的 DUID 是对应的

  2. openwrt 改不了客户机的 DUID,也不能直接指定客户机的 IPv6

比如我为 Nas 分配了固定的 IPv6 后缀

但实际上获取到的还是跟之前的一致,也就是 ::2a2 后缀

DUID 为 DHCPv6 设备的唯一 ID,用于标识不同的客户端

但所幸 DUID 是基本不变的,通过 DHCPv6 获取到的 IPv6 其后缀也是不变的

路由关闭DHCPv6服务

并且在实际测试中,当路由器开启了 DHCPv6 服务之后,

设置为 br0 网络模式的容器也无法分配到 IPv6 地址,需要关闭路由 DHCPv6 服务

猜测是 Unraid 的 br0 第一个 IPv6 地址为 DHCPv6 分配的 /128 地址

之后 Unraid 上重新获取 IP 后可以看到显示的 IPv6 变成 /64 的地址

所幸目前大部分支持 IPv6 的设备都支持 SLAAC 模式,对应路由通告服务

且 DHCPv6 并没有得到很好的普及,比如 Android 就不支持 DHCPv6

所以关闭了 DHCPv6 对于目前使用上基本没啥影响(至少从我使用情况)

Transmission支持IPv6

IPv6配置调整

Transmission 主要是调整两个监控端口支持 IPv6:

  • Peer Port:用于上传下载数据

  • RPC Port:管理端口,一般会提供 WebUI 进行管理

这两个参数被定义在 Transmission 配置目录下的 settings.json

Peer Port

对于比较新版本的 Transmission,Peer port 已默认开启 IPv6 支持:

如果还不行,请检查并加上这个配置: 'bind-address-ipv6': '::'

RPC Port

Transmission 需要 3.0 版本之后才默认支持 RPC 绑定 IPv6 地址

更详细信息可以参考官方 Issue:Add IPv6 support for RPC server #59

所以如果在使用小于 3.0 的版本,只能升级或者手动打补丁来支持

之后就可以修改配置 RPC 绑定的配置,默认为 'rpc-bind-address': '0.0.0.0'

需将上面配置项的值 0.0.0.0 修改为 :: 以开启双栈支持(需彻底退出重启)

Transmission网络类型选择

如上面介绍,针对 Transsmission 容器有两种方式来支持 IPv6:

网络类型配置说明
Host配置简单,存在端口冲突风险,与宿主不存在网络隔离存在安全风险
Custom需屏蔽 DHCPv6,与宿主网络隔离,不需要考虑端口冲突问题

需要注意,这两种方式,都不需要 Nas 进行 NAT,所以网络性能基本差不多

我个人比较建议是使用 Custom 网络模式,隔离网络

另外,也支持固定 IP 配置;默认留空,则由 Docker 自行申请

从 Unraid 论坛的帖子来看 IPV6 NOT WORKING

Docker 并不是使用 SLAAC 的方式来获取 IPv6 地址,而是按顺序

比如网关是 ::1,则第一个 br0 网络类型的 docker 分配到 ::2

但从我的情况来看,实际上 Docker 获取到两个 IPv6 地址:

  • 第一个比较长的是通过 EUI-64 地址转换获取

  • 第二个比较短的,就是符合上面帖子的情况,按顺序分配

通过 MAC 地址进行 EUI64 转换:2409:****:****:****:42:aff:fe00:3/64

配置开启防火墙

路由器防火墙默认限制 IPv6 转发,需要配置开启对应端口允许外部访问

在路由管理后台 网络 - 防火墙 - 流量规则 页面新建转发规则并编辑

建议修改 Transmission 这两个默认端口,同时一定要开启 RPC 的密码认证

Transmission在IPv6环境使用体验

目前运营商都已经支持 IPv6 环境,日常使用上基本是没有问题

最高的下载速度也能跑到 3OMB/s 下载,基本算接近 300M 宽带的实际上限

在外网也可通过 IPv6 访问管理页面进行操作,比如已经支持 IPv6 的手机 4G 网络

就可以实现在外部通过浏览器、 APP(TransmissionRemote) 来进行下载操作等

当然,你要问和 IPv4 比起怎么样?

—— 有公网 IPv4 谁还来折腾这鬼东西??

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UNRAID一篇就够!Docker容器
数码教程 篇十二:手把手教你安装TrueNas(基础篇)
Docker之WARNING: IPv4 forwarding is disabled. Networking will not work.
unRaid系列二:认识界面并配置教程
小刻也能看懂的Unraid系统使用手册:Docker篇
群晖docker套件深入详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服