路由与NAS 篇十二:移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

2021-04-14 15:47:13 34点赞 186收藏 33评论

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

写在前面

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

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

路由与NAS 篇九:大内网宽带入坑小记——修改光猫桥接并配置IPv6实现外网访问NAS创作立场声明:本文仅用于记录这次尝试移动宽带桥接及IPv6相关配置,实现通过外网访问路由器及NAS,方便后续翻查,也给感兴趣的值友一定的参考NOTE本文字数4500+,配图30+,预估阅读时间9~12分钟写在前面最近忙搬家,欠的文章都还没补充,又入了一个移动宽带的新坑。这次趁机记录一下方便后续翻查,丶Source| 314 评论267 收藏2k查看详情

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

SETTINGSS - Network Settings 设置 IPv4 + IPv6 即可

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

浓缩版

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

如何在 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 种网络类型

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

Host网络类型

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

Custom网络类型

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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,下文会有介绍)

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

unraid的IPv6

默认支持DHCPv6及SLAAC

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

这两个地址分别是:

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

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

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

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

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

路由关闭DHCPv6服务

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

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

Transmission支持IPv6

IPv6配置调整

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

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

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

Peer Port

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

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

RPC Port

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

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

Transmission网络类型选择

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

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

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

配置开启防火墙

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

Transmission在IPv6环境使用体验

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

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

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

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

—— 有公网 IPv4 谁还来折腾这鬼东西??移动大内网如何愉快玩耍Transmission——Unraid容器IPv6实战指南

展开 收起

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

1849元起

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

2599元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1796元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

3549元起

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

1999元起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

5999元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2899元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2849元起

UGREEN 绿联 DH2600 双盘位NAS (N5105、4GB)

UGREEN 绿联 DH2600 双盘位NAS (N5105、4GB)

1349元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

3899元起

ZSpace 极空间 私有云 T2 2盘位NAS存储(RK 3568、4GB)

ZSpace 极空间 私有云 T2 2盘位NAS存储(RK 3568、4GB)

1799元起

sgwbox 拾光坞 N3 星光版V(瑞芯微RK3566,2G,支持docker)

sgwbox 拾光坞 N3 星光版V(瑞芯微RK3566,2G,支持docker)

389元起

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS家庭个人云网络存储服务器手机平板扩容适用iPhone15 水

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS家庭个人云网络存储服务器手机平板扩容适用iPhone15 水

1299元起
33评论

  • 精彩
  • 最新
  • 🐂ipv6还能这么玩,另辟蹊径呀

    校验提示文案

    提交
    现在 ipv6 算是比较普及了,而且资源多不需要nat,都是给公网,就可以有得玩了

    校验提示文案

    提交
    收起所有回复
  • 直接用host网络不就可以连上ipv6了吗,我就是这么用的

    校验提示文案

    提交
    这样没有网络隔离

    校验提示文案

    提交
    收起所有回复
  • 我的nas黑裙能获取到公网ipv6 但是我访问不了,同样路由也获取到IPv6,我就能访问,路由防火墙我直接关了的

    校验提示文案

    提交
    感觉要么是路由器防火墙没处理好,要么就是nas获取到的ipv6有问题

    校验提示文案

    提交
    是不是还需要转发什么的

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • DUID在哪里找?

    校验提示文案

    提交
    [皱眉] 太久远了,有点忘记了

    校验提示文案

    提交
    收起所有回复
  • 解决了大难题,网络改host直接就可以访问docker了

    校验提示文案

    提交
    这是最简单的方式哈哈

    校验提示文案

    提交
    收起所有回复
  • 现在遇到一个坑爹的问题,unraid docker双栈模式下,transmission会出现只上报ipv6地址,不上报v4地址的情况,刚安装好的时候还上报了v4地址,某天重启后发现真的不上报v4地址了,至今不知道如何处理

    校验提示文案

    提交
    [傻笑] 这个还真没遇到过,这个上报也是看 tracker 支持的协议栈吧..所以大部分是上报 IPv4..

    校验提示文案

    提交
    收起所有回复
  • 折腾半天,爱快貌似只有DHCPv6模式,没有路由通告……有+无状态,unraid 也是获取到俩v6地址。然后docker还是没办法自动获取v6,突发奇想手动用给的前缀给qb设置了一个v6地址,它现在也有俩v6了……哈哈不知道这个会不会变

    校验提示文案

    提交
    理论上应该都支持的,不然安卓不支持 dhcpv6 就获取不到 ipv6 地址了,可能 ikuai 不支持自定义配置吧

    校验提示文案

    提交
    我找到原因了…docker服务启动时虚拟的软路由还没启动,导致后面路由器起来容器也没v6,必须把整个docker服务重启,就好了,好坑

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 🐂ipv6¥

    校验提示文案

    提交
  • 路由器只有一个ipv6开或关的选项,打开后所有设备都暴露在公网,有办法让unraid只对部分docker分配ipv6地址吗?

    校验提示文案

    提交
  • “默认为 "rpc-bind-address": "0.0.0.0"需将上面配置项的值 0.0.0.0 修改为 :: 以开启双栈支持”
    大佬帮了我,感谢!!

    校验提示文案

    提交
  • s佬牛皮zsbd

    校验提示文案

    提交
  • 小米路由器没有v6端口转发,新一点的有v6防火墙,全关之后如果用cusrom:br0获取v6的话,是不是就没法做ddns了呀 [大囧]
    我现在全是host,挂了个unraid v6地址的ddns,然后通过端口访问不同容器 [喜极而泣] [喜极而泣]

    校验提示文案

    提交
  • bind-address-ipv4删掉的话是不是就可以只用ipv6上传下载了

    校验提示文案

    提交
  • 嘿嘿,终于找到教程啦,我就说为毛br0的qb docker 拿不到v6地址,原来是dhcpv6的锅,一会回去就折腾,谢谢大佬!

    校验提示文案

    提交
  • ipv6普及p很多资源还是v4,统计v6的网站又少了一堆

    校验提示文案

    提交
  • 救命之恩啊,终于有人讲了和路由器设置相关的问题了。v6获取分配都没问题,台式机直接v6RDC也可以,可是docker死活外网连接不了。原来是要在路由器里面开口子。幸好和大佬一样用的是openwrt。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
186
扫一下,分享更方便,购买更轻松