使用 macvlan 为 qBittorrent 设置独立 IP
参考文章:https://wiki.slarker.me/synology/macvlan.html
由于馒头等PT站点对于梯子IP会识别为刷流盒子,一旦被认定为刷流盒子将会面临各种限制。为了解决这个问题,就需要将qBittorrent等下载器的Docker容器独立出来,手动指定网关为主路由,进而避免受到旁路由科学上网的影响。同时也避免了修改主机NAS网关导致的各种网络联通问题。制
网络环境:
主路由 IP:
192.168.124.4QNAP NAS IP:
192.168.124.152独立的 qBittorrent IP:
192.168.124.201macvlan 网桥:
192.168.2.102ipv6 网关:
240e:***:****:****::1001
创建 macvlan 网络
目前主路由是 192.168.124.4 ,旁路由是 192.168.124.5
如果只需要 IPv4,创建 IPv4 macvlan 网络命令:
#创建一个名为 vlan 的 macvlan 网络,网关为主路由 192.168.124.4,子网为 192.168.124.0/24,eth0 为默认的网桥
docker network create -d macvlan --subnet=192.168.124.0/24 --gateway=192.168.124.4 -o parent=eth0 vlan如果需要 IPv6,创建 IPv4 + IPv6 macvlan 网络命令:
#创建一个名为 vlan 的 macvlan 网络,IPv4 网关为主路由 192.168.124.4,IPv4 子网为 192.168.124.0/24,IPv6 网关为 240e::1,IPv6 子网为 240e::/60,eth0 为默认的网桥
docker network create -d macvlan --subnet=192.168.124.0/24 --gateway=192.168.124.4 --ipv6 --subnet=240e::/60 --gateway=240e::1 -o parent=eth0 vlan如果需要删除创建的 macvlan 网络,可以使用下面的命令:
#vlan 为 macvlan 网络名称
docker network rm vlan使用 docker 命令安装 qBittorrent
docker run -d \
--name=qbittorrent \
--net=vlan \
--ip=192.168.124.201 \
--ip6=240e:***:****:****::100 \ #根据实际情况修改
-e PUID=1026 \
-e PGID=100 \
-e TZ=Asia/Shanghai \
-e WEBUI_PORT=8080 \
-p 8080:8080 \
-p 6881:6881 \
-p 6881:6881/udp \
-v /share/Video/config:/config \ #根据实际情况修改
-v /share/Video:/downloads \ #根据实际情况修改
--restart unless-stopped \
lscr.io/linuxserver/qbittorrent:latest这里的 --net=vlan 参数表示使用前面创建的 macvlan 网络, --ip=192.168.124.201参数就是为 qBittorrent 设置的独立 IP,命令执行成功后,就可以用 192.168.124.201:8080 来访问 qBittorrent 了
解决宿主机与 macvlan 网络互通问题
为了安全起见,macvlan 禁止宿主机和容器直接通信。以我的NAS运行情况为例,qBittorrent 容器的 IP 为 192.168.124.201,宿主机群晖的 IP 为 192.168.124.152,那么宿主机和容器之间就无法通信。
环境分析
您的网络:
子网:192.168.124.0/24
宿主机(QNAP NAS):假设 IP 为 192.168.124.152
容器 IP:192.168.124.201(qBittorrent 容器,基于 docker run)
父接口:eth0(ip link show 确认)
网桥接口:需创建,命名为 vlan_bridge,静态 IP 设为 192.168.124.102(适配子网)
目标:
创建 macvlan 网桥 vlan_bridge,分配静态 IP 192.168.124.102
配置路由,使宿主机访问容器(192.168.124.201)的数据通过 vlan_bridge
确保与 qBittorrent 的 macvlan 网络 vlan 兼容
适配命令
#创建 macvlan 接口并配置网桥模式
ip link add vlan_bridge link eth0 type macvlan mode bridge
ip addr add 192.168.124.102/24 dev vlan_bridge
ip addr add 240e:3b1:3473:eab0::102/60 dev vlan_bridge
ip link set vlan_bridge up
#添加路由以访问容器
为容器 IP 192.168.124.201 和 IPv6 地址 240e:3b1:3473:eab0::100 添加路由
ip route add 192.168.124.201/32 dev vlan_bridge
ip -6 route add 240e:3b1:3473:eab0::100/128 dev vlan_bridge命令说明
ip link add vlan_bridge link eth0 type macvlan mode bridge:
创建名为 vlan_bridge 的 macvlan 接口,绑定到父接口 eth0,模式为 bridge(允许主机与容器通信)
ip addr add 192.168.124.102/24 dev vlan_bridge:
为 vlan_bridge 分配静态 IPv4 地址 192.168.124.102,子网掩码 /24
ip link set vlan_bridge up:
启用 vlan_bridge 接口
ip route add 192.168.124.201/32 dev vlan_bridge:
添加路由,使宿主机访问容器 IP 192.168.124.201 的流量通过 vlan_bridge(/32 精确匹配单个 IP)
使用 systemd 管理 macvlan 服务
待续