静看光阴荏苒
不管不顾不问不说也不念

配置Docker安装的qBittorrent仅使用IPv6

前段时间拿了一台空闲的kimsufi独服刷了下m-team,这机器上行带宽就100m,不过还是给标记盒子了。。我也不知道m-team现在标记是怎么个规则,反正就是标记了,就很烦。

众所周知kimsufi就一个ipv4也不能换ip或者加ip,标记了就等于是废了。不过好在kimsufi的服务器给了很多ipv6,所以可以曲线救国:禁用ipv4,只使用ipv6。这样就可以解除标记,并且就算后续又被标记了,你只需要再换个ipv6就行,反正ipv6多的用都用不完,属于是打一枪换个地方了。。

当然这样做有一个很明显的问题就是无论你是下载还是上传都没有之前快,因为现在用ipv6的人还是比较少,你能连上的peer也比别人少,自然是抢不过别人的。

不过对于我这种已经保号的人来说不算什么问题,我就100m小水管挂那里自动刷,蚊子腿也是肉,反正我又不差流量和分享率,积少成多不还是赚。。所以如果你是比较新的号那这种方案就不太合适,建议还是去买g口的服务器按常规套路刷。

让容器拥有ipv6一般有2种方案选择,一种是直接分配公网ipv6地址,另一种就是ipv6nat。我个人建议使用ipv6nat,虽然ipv6地址多到用都用不完,很多时候没有必要用nat,但是直接分配公网ipv6地址给容器就等于是把这个容器暴露在了公网,容易出现安全问题,所以这里我只介绍一下ipv6nat的配置方法。

首先你要确认主机本身是有ipv6的,对于debian11而言,配置ipv6地址也很简单,编辑网卡配置文件:

nano /etc/network/interfaces

参考下面的配置:

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
        address x.x.x.x
        gateway x.x.x.x
        netmask x.x.x.x

iface eth0 inet6 static
        address 2001:23c0:5:8a9c::1/56
        gateway 2001:23c0:5:8aff:ff:ff:ff:ff

重启网络服务或者重启服务器使其生效:

systemctl restart networking

接下来编辑如下配置文件,如果没有这个文件就新建:

nano /etc/docker/daemon.json

写入如下配置:

{
  "ipv6": true,
  "fixed-cidr-v6": "fc00:0000:0000:1::/64",
  "experimental": true,
  "ip6tables": true
}

重启docker服务:

systemctl restart docker

这样就给docker默认的bridge网络启用了ipv6,注意此时只有使用bridge这个网络的容器才有ipv6,我们可以简单的验证一下,先查看当前存在的网络:

docker network ls

这是我这台服务器上目前存在的网络:

查看brdige网络的详细信息:

docker network inspect bridge

可以看到这个网络目前的ipv6是启用了的:

再看一下其他的网络,比如我这台机器上存在的mattermost_default,这个网络是由docker-compose创建的:

docker network inspect mattermost_default

可以看到这个网络是没有启用ipv6的:

这就意味着:在daemon.json里面的ipv6配置仅对docker默认的bridge网络生效,其他的网络不遵循这个配置。

也就是说只有当你用docker run启动容器,并且没有指定其他网络的时候,容器内才会有ipv6,现在可以简单检查一下:

docker run --rm -it busybox ping -6 -c 5 lala.im

可以看到是正常的:

我们知道docker-compose在up的时候也会创建一个默认网络,docker-compose创建的默认网络是根据项目目录来命名的。

比如你有一个名为mattermost的项目目录,那么docker-compose在up的时候就会创建一个名为mattermost_default的网络。

这个网络不属于默认的bridge网络,所以通过docker-compose编排的容器现在依旧是不支持ipv6的。

我的qbittorrent是通过docker-compose部署的,如果要让docker-compose编排的容器支持ipv6,需要在docker-compose里进行额外配置。

先准备项目目录,新建docker-compose:

mkdir /opt/pt && cd /opt/pt && nano docker-compose.yml

这是一个示例配置:

version: '3.5'

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
      - WEBUI_PORT=8080
    networks:
      - qb_ipv6
    ports:
      - 8080:8080
      - 16881:16881
      - 16881:16881/udp
    volumes:
      - ./config:/config
      - ./downloads:/downloads

  vertex:
    image: lswl/vertex:stable
    container_name: vertex
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
    networks:
      - qb_ipv6
    ports:
      - 3000:3000
    volumes:
      - ./vertex:/vertex

networks:
  qb_ipv6:
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: fc00:0000:0000:2::/64

启动:

docker-compose up -d

然后检查docker-compose创建的网络是否启用了ipv6:

docker network inspect pt_qb_ipv6

可以看到这个网络就是支持ipv6的了:

这里稍微提一下这个docker-compose示例里面的一些细节配置。

qbittorrent的数据传输端口默认是6881,但是由于m-team把这个端口给屏蔽了,所以这里改成了16881。

下面那个vertex的容器是用来配置全自动刷pt的一个工具,这个工具的功能很多,比如自动下载免费种,按规则自动删种等,当然这篇文章的重点不是介绍这个工具,只是说配合使用效果更佳,如果你不需要可以把这段配置注释掉。

接下来是在qbittorrent里面的设置,首先得把这里的端口改为16881:

然后在这个界面把“绑定到可选IP地址”修改为“所有ipv6地址”:

下个种子测试,可以看到peer这里连接的就全部是ipv6地址了:

如果后续ipv6地址又被标记盒子了咋办?很简单,标记了就换呗。这里简单介绍一下怎么快速换ipv6。首先把服务器当前网卡上绑定的ipv6地址删除:

ip addr del 2001:23c0:5:8a9c::1/56 dev eth0

添加一个新的:

ip addr add 2001:23c0:5:8a9c::2/56 dev eth0

docker容器和docker-compose不需要做任何修改,因为我们配置的是ipv6nat,始终只使用我们主机上的ipv6地址和外部通信。

现在你只需要在qbittorrent里面把任务全部暂停,重新启动所有任务,回到m-team面板查看新的ipv6地址即可。

最后提醒一下哈:这篇文章提供的配置对docker和docker-compose版本有硬性要求,较旧的版本是不支持这些配置的,请自行升级你的docker和docker-compose。

我写这篇文章的时候docker引擎版本是20.10.14,docker-compose版本是1.29.2,具体的一些细节和问题可以参考这些网址:

https://stackoverflow.com/questions/66090810/docker-compose-expose-port-on-ipv6
https://github.com/docker/compose/commit/25d773c924b6337b63802c0d9649f800b542bf49
https://github.com/moby/moby/pull/41622
https://forums.unraid.net/topic/105553-allow-enabling-experimental-ip6tables-option-with-docker-2010/

赞(1)
未经允许不得转载:荒岛 » 配置Docker安装的qBittorrent仅使用IPv6
分享到: 更多 (0)

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    大佬可以转载您这篇文章吗?

    vpsxb1个月前 (05-29) Google Chrome 101.0.4951.67 Google Chrome 101.0.4951.67 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    MT万年user飘过,我mt已经被我玩废了,上传下载都是几十T的。。。已经刷不出来了。 :eek: :eek: :eek:

    另外,博主能写几个webdav的教程吗。我发现你这搜不到关于wedav的文章。我自己也研究了几天,发现用nginx直接搭的webdav搁到win10里拿资源管理器挂载上以后无法上传文件,貌似ngx缺了啥功能,win这边也有bug,好像只能用rclone,raidrive这些第三方客户端才行。也试了win服务器iis开的webdav,但是发现这货居然有文件大小限制,虽然在挂载上以后传输没什么问题。。。。结果都不是很完美。

    MiaoSKY5天前 Google Chrome 102.0.0.0 Google Chrome 102.0.0.0 Android 10 Android 10回复

分享创造快乐

广告合作资源投稿