如何让 Docker 下的 qBittorrent 下载绕过代理网络

目录
  1. Docker Compose 文件

解决思路:

  • 将 qBittorrent 容器隔离到独立子网,分配唯一静态内网 IP,并指定 MAC 地址。
  • 在代理网关(如 PassWall)中为该容器预留或分配的 IP 设置强制直连,让其所有流量绕过代理。

具体实现方法:

  1. 创建 macvlan 网络,为 qBittorrent 容器分配独立 IP/MAC

    • macvlan 网络驱动允许容器直接在宿主网段拥有独立的 IP 和 MAC(像一台独立的物理主机),可被软路由区分。
    • 修改后的 compose 文件示例(详见下方):
      • networks 定义macnet为 macvlan 网络,指定父接口(如 eth0)、子网和网关。
      • qbittorrent服务中,指定macnet的独立 IP 和 MAC 地址。
  2. 保留 Media Bridge 用于其他 docker 间通信

    • qBittorrent 除连接外网外,可能还需被本地其他容器(如 radarr/sonarr/prowlarr 等)访问,因此可将其同时接入本地 bridge 网络(media_bridge)。
  3. 在网关的代理插件设置中,指定此独立 IP 为“直连”

    • 如配置192.168.1.100为直连,qBittorrent 所有流量将不再走代理通道,而是直接访问公网,避免浪费代理流量。

TIP

如果不主动设置 MAC 地址,qBittorrent 会自动生成一个 MAC 地址,但是这个 MAC 地址是随机的,每次启动容器时都会变化,所以需要手动指定 MAC 地址。

Docker Compose 文件

networks:
  macnet:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1
  media_bridge:
    driver: bridge

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent
    container_name: qbittorrent
    mac_address: 'FA:36:63:19:72:C2'
    # 核心变更:彻底移除 ports 映射,交由 Macvlan 独立网卡接管所有端口访问
    networks:
      macnet:
        ipv4_address: 192.168.1.100 # qB 专属的独立内网 IP,需在 PassWall 设为直连
      media_bridge: # 同时接入内部桥接网络
    restart: always

  radarr:
    image: lscr.io/linuxserver/radarr
    container_name: radarr
    networks:
      - media_bridge

  sonarr:
    container_name: sonarr
    networks:
      - media_bridge
    restart: always