收起左侧

让QB/TR拥有独立ip,使用macvlan网络创建docker容器

35
回复
2769
查看
[ 复制链接 ]

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2024-10-13 14:11:51 显示全部楼层 阅读模式

<br /> <br />

使用macvlan网络模式创建docker,使容器拥有独立ip,便于分流

适用场景:

因nas需要科学环境比如拉docker镜像、刮削等等,但是qb/tr又不想让他走科学,如何做到单独让qb、tr不走科学网络?常见的方法是使用旁路由的分流规则,比如openclash、passwall等或者爱快主路由上根据协议、域名分流等等,但是这种方法还是难免有一些流量偷走科学流量,如果docker容器可以有独立的ip,单独设置网关是最保险的措施。

经常使用的docker网络有bridge和host,本文介绍另一种:macvlan,本文可能不适用于小白,可以自己查看其他教程用web界面创建docker容器熟悉熟悉再来阅读本教程

准备工作:

1、飞牛1台,因飞牛不支持web界面创建,本文采用命令行创建

2、查看网卡名称,使用ifconfig或者ip addr命令,查看当前nas ip的网卡名称(如果开启了ovs,网卡名称则带_ovs):

3、主路由的ipv6模式改成无状态模式或者叫SLAAC,这样子可以保证ipv6地址前缀变化时容器跟着变化!

查看网卡时记得提权,sudo -i 密码是nas密码,盲输回车

image.png

image.png

创建macvlan网络:

例如V4:192.168.8.0/24 网关192.168.8.1 V6:随便填一个内网地址 ,可以参考我的 他会自动从宿主机获取v6

docker network create -d macvlan --subnet=192.168.8.0/24 --gateway=192.168.8.1 --ipv6 --subnet=fd00::/64 -o parent=ens7 macnet
#如开启了虚拟机ovs网络模式,此处应该是parent=ens7_ovs=

命令注释:

--subnet=家里V4子网网段

--gateway=家里V4不走科学环境的网关

--ipv6 --subnet=家里V6子网网段 跟我一样就行,这是个内网段,创建容器时会向父网卡dhcp获取真实ip

-o parent=nas网卡,也是macvlan 的父网卡

macnet 这个随意,就是macvlan网络的网卡名称,可以跟我一样

image.png

image.png

出现一段很长的英文数字组合就表示创建成功了,可以通过命令docker network ls 确认,也可以在web界面docker-网络中查看

创建容器(示例QB)

1、创建好qb配置文件目录,例如在docker文件夹下新建了qb这个文件夹,右键-详细信息-复制原始路径,是:/vol1/1000/docker/qb

image.png

2、再创建qb下载目录,同样的方法复制真实路径 是:/vol2/1000/download

docker run --name qbittorrent --network macnet -v /vol1/1000/docker/qb:/config -v /vol2/1000/download:/downloads --ip=192.168.8.29 --restart=always --privileged=true -d linuxserver/qbittorrent:latest
#容器不需要额外配置ipv6地址,会自动获取

命令注释:

--name=容器名称,随意就好,通过这个名字可以分辨哪些容器就行

--net=macnet macnet是上一步创建的macvlan网卡名称

--ip=192.168.8.29 ip地址根据实际情况更改

-v ****:/config 映射nas目录给docker容器,前面是刚刚复制原始路径,冒号后面是docker内目录名称,/config不能修改

-v ****:/downloads qb下载目录,同理,downloads如果修改,到时候web界面里面也要修改,最好不改

-v ****:/**** 如果你有其他目录也需要映射,自行添加,没有就跳过

--privileged=true 赋予容器最高特权,最好不改

--restart=always 重启策略:跟随nas启动docker容器

linuxserver/qbittorrent:latest 镜像名称,如果需要指定qb版本,把latest替换成具体版本号,比如linuxserver/qbittorrent:4.6.5

创建成功后依旧是一堆英文和数字组合:

image.png

可以ssh进容器输入ip addr查看是否有24开头的V6地址

image.png

进阶玩法

macvlan具有隔离特性,所以你所创建的macvlan容器是无法与其他docker容器或者nas本身进行通信的,比如你的Moviepilot无法关联qb/tr下载任务,你的iyuu无法通过qb辅助做种转种,如果不在意这个,下面的可以不用看了。

简单来说就是添加一张网卡做为路由中转
ip link add TTTTT link ens7 type macvlan mode bridge
#TTTTT为网卡名 随意就好,ens7网卡名称根据实际情况更改
ip addr add 192.168.8.222 dev TTTTT
#ip地址 设置一个你局域网其他不冲突的任何地址,不是QB也不是nas的!
ip link set TTTTT up
#启动网卡
ip route add 192.168.8.29 dev TTTTT
#添加路由,ip地址为qb地址,目的是使去往qb的流量网TTTTT这张网卡过

添加后docker容器就可以互相通信了,注意添加的路由重启会失效,评论区有解决方案,自行尝试

注意事项

创建容器时必须把所有目录设置好,创建好后不要去web界面更改设置,比如映射目录之类的,因为更改后qb的ip地址会变化且有可能跟你局域网其他地址冲突,如果需要修改目录,建议重新创建容器(此bug已反馈,等待修复,具体是:web页面编辑后,docker inspect的IPAMConfig信息丢失)

收藏
送赞 6
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-22 11:31:30 楼主 显示全部楼层
公测已支持虚拟机,如果遇到无法开启ovs的情况下,请先删除macvlan网络后重新开启ovs,ovs开启后再用新的ovs网卡新建macvlan,比如ens7_ovs
ovs是啥,还有那个注意事项的问题还是没有修复吗?  详情 回复
2025-2-15 23:58
大佬666,解决了我的问题  详情 回复
2025-1-22 21:26

4

主题

34

回帖

0

牛值

江湖小虾

2024-11-11 10:51:51 显示全部楼层
请教一下,这里给macvlan设置代理网关,就能让docker里的流量走代理了?
本文介绍的macvlan作用是给容器设置单独的ip地址、单独的网关,走不走代理是取决于你的用途,我nas全局科学,但是qb容器给设置了单独的ip单独的网关,这样在分流插件里面规避这个ip就可以实现分流,主要是分流用,至  详情 回复
2024-11-11 11:17

4

主题

34

回帖

0

牛值

江湖小虾

2024-11-11 10:53:57 显示全部楼层
另外,pve里添加一张虚拟网卡,也能用作macvlan吧
pve虚拟网卡给nas吗?只要在nas 命令行ip addr 能找到这张网卡 就行  详情 回复
2024-11-11 11:18

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2024-11-11 11:17:54 楼主 显示全部楼层
本文介绍的macvlan作用是给容器设置单独的ip地址、单独的网关,走不走代理是取决于你的用途,我nas全局科学,但是qb容器给设置了单独的ip单独的网关,这样在分流插件里面规避这个ip就可以实现分流,主要是分流用,至于怎么分 决定权在你
大佬,请问如果全局代理,那么内网看电影或者外网看电影会不会走流量啊?  详情 回复
2025-2-7 09:33
ok。多谢大佬的教程  详情 回复
2024-11-11 11:23

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2024-11-11 11:18:22 楼主 显示全部楼层
pve虚拟网卡给nas吗?只要在nas 命令行ip addr 能找到这张网卡 就行

4

主题

34

回帖

0

牛值

江湖小虾

2024-11-11 11:23:06 显示全部楼层
zhengbf 发表于 2024-11-11 11:17
本文介绍的macvlan作用是给容器设置单独的ip地址、单独的网关,走不走代理是取决于你的用途,我nas全局科学 ...

ok。多谢大佬的教程

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-9 01:35:56 显示全部楼层
如果我已经创建好了qb,我加了一条macvlan了,那我怎么样才可以让qb又独立ip呢?

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-9 02:36:59 显示全部楼层
还有就是transmission应该怎么使用macvlan呢?就是怎么设置独立ip

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-9 04:14:43 显示全部楼层
小白我忙了几个小时,终于把我的mp,qb,tr,iyuu全部转成macvlan模式了(照着之前的设置通过大佬的docker run命令一条一条的改,环境变量,端口,映射卷那些),全转成macvlan模式是因为,这样这四个就可以互相同信了,nas重启了也不怕,大佬的那个进阶方法需要创建一个启动任务,要不然重启过nas之后,这四个就无法互相通信了
点赞 不过这个够折腾,但是折腾后一劳永逸  详情 回复
2025-1-9 15:52

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-9 04:17:05 显示全部楼层
注意事项那个,没办法,docker run创建好之后,却是不能通多nas的web界面修改任何配置,要不然就无法进入容器,改个名字都不行,希望官方后期修复了
这个很早就提了 可能因为macvlan优先级太低了  详情 回复
2025-1-9 15:53

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-9 15:52:44 楼主 显示全部楼层
点赞 不过这个够折腾,但是折腾后一劳永逸
我之前用truenas的时候就是按照教程全部macvlan的,这下放心了,可以不用担心跑流量,pt站把我认定为盒子了  详情 回复
2025-1-9 17:06

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-9 15:53:06 楼主 显示全部楼层
这个很早就提了 可能因为macvlan优先级太低了

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-9 17:06:35 显示全部楼层
zhengbf 发表于 2025-1-9 15:52
点赞 不过这个够折腾,但是折腾后一劳永逸

我之前用truenas的时候就是按照教程全部macvlan的,这下放心了,可以不用担心跑流量,pt站把我认定为盒子了

2

主题

17

回帖

0

牛值

江湖小虾

2025-1-10 21:42:57 显示全部楼层
大佬最新版本新增支持openvswitch后,在创建macvlan是不是简单了?
没啥关系啊,还是一样的步骤  详情 回复
2025-1-13 10:06

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-13 10:06:59 楼主 显示全部楼层
没啥关系啊,还是一样的步骤
是的,我只是没想到居然更新镜像也不行  详情 回复
2025-1-15 19:51
好恶心啊,我刚才更新了一下本地镜像,然后mp和iyuu就进不去了?居然都不能更新镜像  详情 回复
2025-1-15 00:05

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-15 00:05:29 显示全部楼层
好恶心啊,我刚才更新了一下本地镜像,然后mp和iyuu就进不去了?居然都不能更新镜像
命令放记事本 有问题直接ssh重新部署 很快的  详情 回复
2025-1-15 11:25

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-15 11:25:46 楼主 显示全部楼层
命令放记事本 有问题直接ssh重新部署 很快的
那倒不用我用的finalshell直接方向键上,回车就ok了  详情 回复
2025-1-15 19:52

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-15 19:51:56 显示全部楼层
是的,我只是没想到居然更新镜像也不行

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-15 19:52:43 显示全部楼层
那倒不用我用的finalshell直接方向键上,回车就ok了

2

主题

17

回帖

0

牛值

江湖小虾

2025-1-18 23:53:52 显示全部楼层
楼主能搞个开机启动么?我先装好的docker的qb,然后用portainer修改容器的ip和网络也可以,mp那边修改下载器地址可以链接得到。
ssh到飞牛,sudo -i到root 写入 保存并退出 添加权限:创建systemd服务单元:输入: 保存并退出 启用并启用systemd服务: 到这里就OK了,可以reboot后用  详情 回复
2025-1-20 20:24
可以搞个systemd 网上有教程 搜一下debian systemd 脚本配置好作为服务开机自启  详情 回复
2025-1-20 15:24

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-20 15:23:01 楼主 显示全部楼层
重启路由就丢失了 可以重新设置,或者直接新增一条就行

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-20 15:24:41 楼主 显示全部楼层
可以搞个systemd 网上有教程 搜一下debian systemd 脚本配置好作为服务开机自启

0

主题

1

回帖

0

牛值

江湖小虾

2025-1-20 20:24:19 显示全部楼层
ssh到飞牛,sudo -i到root
  1. nano /usr/local/bin/setup_network.sh
复制代码
写入
  1. #!/bin/bash

  2. # 创建 macvlan 网卡
  3. ip link add TTTTT link ens7 type macvlan mode bridge

  4. # 配置 IP 地址
  5. ip addr add 192.168.8.222 dev TTTTT

  6. # 启动网卡
  7. ip link set TTTTT up

  8. # 添加路由
  9. ip route add 192.168.8.29 dev TTTTT
复制代码
保存并退出
添加权限:
  1. chmod +x /usr/local/bin/setup_network.sh
复制代码
创建systemd服务单元:
  1. nano /etc/systemd/system/setup-network.service
复制代码
输入:
  1. [Unit]
  2. Description=Setup Network for macvlan
  3. After=network.target

  4. [Service]
  5. ExecStart=/usr/local/bin/setup_network.sh
  6. Type=oneshot
  7. RemainAfterExit=true

  8. [Install]
  9. WantedBy=multi-user.target
复制代码
保存并退出
启用并启用systemd服务:
  1. systemctl daemon-reload
  2. systemctl enable setup-network.service
复制代码
到这里就OK了,可以reboot后用
  1. ip link show
复制代码
开机不添加网卡呀  详情 回复
2025-1-21 19:12

3

主题

2

回帖

0

牛值

江湖小虾

2025-1-21 19:12:50 显示全部楼层
开机不添加网卡呀

2

主题

17

回帖

0

牛值

江湖小虾

2025-1-22 21:26:12 显示全部楼层
大佬666,解决了我的问题

0

主题

4

回帖

0

牛值

江湖小虾

2025-1-22 23:47:22 显示全部楼层
创建macvlan时,ipv6用公网地址更好,如:240e::/64
如果用公网地址,重新拨号的情况下前缀变了,你的公网地址也失效了,最好的方案就是主路由ipv6模式改成无状态slaac模式,然后填我上述的内网地址,会自动从主路由分配最新的公网地址  详情 回复
2025-1-23 09:09

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-1-23 09:09:11 楼主 显示全部楼层
如果用公网地址,重新拨号的情况下前缀变了,你的公网地址也失效了,最好的方案就是主路由ipv6模式改成无状态slaac模式,然后填我上述的内网地址,会自动从主路由分配最新的公网地址
没问题的,前缀只用了240e,中间随意变更无所谓,我一直这么用几年了,稳定。你也可以试试。我只是说一下更多方案而已。仅供参考。。。嘻嘻  详情 回复
2025-2-4 16:51

0

主题

4

回帖

0

牛值

江湖小虾

2025-2-4 16:51:54 显示全部楼层
zhengbf 发表于 2025-1-23 09:09
如果用公网地址,重新拨号的情况下前缀变了,你的公网地址也失效了,最好的方案就是主路由ipv6模式改成无状 ...

没问题的,前缀只用了240e,中间随意变更无所谓,我一直这么用几年了,稳定。你也可以试试。我只是说一下更多方案而已。仅供参考。。。嘻嘻
可以的  详情 回复
2025-2-5 19:48

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-2-5 19:48:24 楼主 显示全部楼层
可以的

13

主题

24

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2025-2-7 09:33:20 显示全部楼层
zhengbf 发表于 2024-11-11 11:17
本文介绍的macvlan作用是给容器设置单独的ip地址、单独的网关,走不走代理是取决于你的用途,我nas全局科学 ...

大佬,请问如果全局代理,那么内网看电影或者外网看电影会不会走流量啊?
macvlan拥有独立ip了,你创建macvlan网络时,设定网关不是旁路由就可以了  详情 回复
2025-2-7 10:09

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-2-7 10:09:01 楼主 显示全部楼层
macvlan拥有独立ip了,你创建macvlan网络时,设定网关不是旁路由就可以了
佬,请问按照脚本设置好后,可以下载 ,0上传,主路由转发的是qb的独立ip  详情 回复
2025-2-27 14:05

2

主题

14

回帖

0

牛值

江湖小虾

2025-2-15 23:58:15 显示全部楼层
ovs是啥,还有那个注意事项的问题还是没有修复吗?

13

主题

24

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2025-2-27 14:05:38 显示全部楼层
佬,请问按照脚本设置好后,可以下载 ,0上传,主路由转发的是qb的独立ip
谢谢大佬  详情 回复
2025-3-6 19:06
qb底下是小地球还是火苗,如果是地球,那就是种子本身如此,或者你的出口网络比较复杂,尝试设置dmz等,如果是火苗 那就检查内网是不是nat1 有没有V6  详情 回复
2025-2-27 16:18

5

主题

56

回帖

160

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-2-27 16:18:07 楼主 显示全部楼层
qb底下是小地球还是火苗,如果是地球,那就是种子本身如此,或者你的出口网络比较复杂,尝试设置dmz等,如果是火苗 那就检查内网是不是nat1 有没有V6

13

主题

24

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2025-3-6 19:06:50 显示全部楼层
谢谢大佬
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则