前言
之前 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.88 | eth0 |
容器 | 10.0.0.99 | macvlan |
建立一个名为 macvlan2 的 macvlan 接口,并分配一个ip:
名字 | ip | 接口 |
---|---|---|
macvlan2 | 10.0.0.77 | eth0 |
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 的记录,不过隔很久才会出现一次,对账户也不会中断连接,所以就先忽视吧。
很干活。
博主可以交换友链吗?
名称:胡萝虎
网址:https://www.huluohu.com
简介:胡萝虎的博客
头像:https://img.huluohu.com/avator_new.png
自建就不会遇到奇奇怪怪的流量审计规则了。
(评论功能已正常)
感谢帮忙,不知什么时候插件出问题了,一直没发现。
自建主要无法保证连通率,就懒得折腾了,现在的机场也是蹭朋友的。