Docker 部署 macvlan 网络下的 qBittorrent

/ 3 Comments / 8757 View

前言

之前 nas 里的 qBittorrent 都是直接部署在 Host 网络模式下,因为可以直接分配到 ipv6,下载很多资源也能看到有 ipv6 用户连接。

不过不知是不是一直使用的“机场”更改了审查规则,还是路由上的 passwall 有问题(passwall一直都是设置成只转发常用端口),导致一些流量被“机场”审查为 BT,账户隔半个小时左右就被中断半个小时。但看“机场”的流量使用情况,也基本符合自己日常看视频的使用量,应该不会有 BT 流量走了代理,猜测是 Tracker 列表问题或者近期更新了 passwall 的原因。

所以干脆把重新部署 qBittorrent 为 macvlan 网络模式,有独立的 mac 地址和 IP,然后 passwall 设置成全部直连。

安装部署

macvlan 网络模式

使用 macvlan 网络模式的好处是容器相当于是一个独立的设备,可以拥有一个独立且固定的 IP 和 MAC 地址,不需要理会任何端口的状态,所有端口都可以使用默认的,兼容性更好。

创建 macvlan 网络(根据实际情况替换参数,并删除注释)

docker network create \
    -d macvlan \ # 使用 macvlan 网络驱动
    --subnet=10.0.0.0/24 \ # 指定网段
    --gateway=10.0.0.1 \ # 指定网关 IP
    -o parent=eth0 \ # 指定网卡
macvlan # 网络名称,随意,自己记得就行

准备服务描述文件 docker-compose.yml:

version: "2.0"
services:
    qbittorrent:
    image: superng6/qbittorrent:latest
    container_name: qbittorrent
    restart: always
    tty: true
    networks: 
        macvlan: #上 面创建的 macvlan 网络名称
    ipv4_address: 10.0.0.99 # 你想设置的ip
    aliases:
        - qbittorrent
    dns:
        - 223.5.5.5
        - 119.29.29.29
    hostname: qbitorrent
    environment:
        - TZ=Asia/Shanghai
        - WEBUI_PORT=8080 # 将此处修改成你欲使用的 WEB 管理平台端口
    volumes:
    - ./data:/data
    restart: unless-stopped 

networks: 
    macvlan: #上 面创建的 macvlan 网络名称
    external: true

与宿主机互通

在 macvlan 网络模式下同网段的其他机器可以和容器互通,但宿主不能和容器互通,这是在macvlan模式设计的时候为了安全而禁止了宿主机和容器直接通信。

如果想要实现互通,有个曲线救国的方法,就是macvlan与macvlan之间可以互通,只需要在宿主机再创建一个 macvlan 网络,然后修改路由,让数据经过这个 macvlan 达到互通的目的。

Hyper-V 设置

nas 主系统是 windows server 2016, Hyper-V 安装 centos,最后 docker 容器都是运行在 centos 下,所以需要在 Hyper-V 把网络适配器的 MAC 地址欺骗打开。

假设现有网段为 10.0.0.0/24 的网络:

名字ip接口
宿主机10.0.0.88eth0
容器10.0.0.99macvlan

建立一个名为 macvlan2 的 macvlan 接口,并分配一个ip:

名字ip接口
macvlan210.0.0.77eth0
ip link add macvlan2 link eth0 type macvlan mode bridge
ip addr add 10.0.0.77 dev macvlan2 
ip link set macvlan2 up

修改路由,让宿主机到容器的数据经过 macvlan2:

ip route add 10.0.0.99 dev macvlan2

访问 ip

宿主机 访问 qBittorrent 容器的 ip:10.0.0.99

qBittorrent 容器访问宿主机ip:10.0.0.77

启动 qBittorrent

docker-compose up -d

重启失效问题

# step1 首先切换到/etc/init.d目录下
cd /etc/init.d

# step 2 vi macvlan.sh 输入要运行的脚本

#!/bin/bash
#chkconfig:  2345 81 96
#description: Starttomcat

ip link add macvlan2 link eth0 type macvlan mode bridge
ip addr add 10.0.0.77 dev macvlan2
ip link set macvlan2 up
ip route add 10.0.0.99 dev macvlan2

# step 3 可执行权限
chmod +x macvlan.sh

# step 4 加入 chkconfig 命令进行管理
chkconfig --add macvlan.sh

# step 5 设置为开机自运行
chkconfig macvlan.sh on

总结

设置完成后,passwall 也设置了 qBittorrent 容器直连,但最后还是在“机场”的审查记录那里查看到偶尔会有 BT 的记录,不过隔很久才会出现一次,对账户也不会中断连接,所以就先忽视吧。

已有 3 条评论
  1. 很干活。
    博主可以交换友链吗?

    名称:胡萝虎
    网址:https://www.huluohu.com
    简介:胡萝虎的博客
    头像:https://img.huluohu.com/avator_new.png

    回复
  2. 大袋鼠

    自建就不会遇到奇奇怪怪的流量审计规则了。

    (评论功能已正常)

    回复
    1. @大袋鼠

      感谢帮忙,不知什么时候插件出问题了,一直没发现。

      自建主要无法保证连通率,就懒得折腾了,现在的机场也是蹭朋友的。

      回复
发表新评论