前段时间拿了一台空闲的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/