iDickies
吞吐世界
iDickies

使用macvlan或ipvlan为容器创建独立ip

https://dickies.myds.me:56789/wp-content/uploads/2025/05/image-mdns-20250517202940-fcankjs.png

背景

出于某些特殊的原因,想给一些容器独立的 ip,再利用主路由的黑名单对其进行一些访问限制,查到可以利用 macvlan 或 ipvlan 来处理此类需求,经过几天时间反复尝试以及朋友的指导,终于圆满达成目的。

笔者这里用飞牛 os 来做演示和讲解,下面是具体步骤:

一、创建 macvlan 网络

  1. 网卡 id 可以通过 ifconfig 查询,或者在飞牛设置页面查到

https://dickies.myds.me:56789/wp-content/uploads/2025/05/image-gacp-20250517202940-cuub772.png
2. 不用设置 ip 段,因为我们在创建容器时候可以固定 ip

二、创建容器,这里以 qb 为例

  1. 32.xx 为希望固定的 ip
  2. 从参考文章里得知,因为 qBittorrent 启动得“太快”了,以至于网络接口还没来得及配置好 IPv6,会导致启动后无法获取 v6 公网的情况。所以在创建 qb 的时候,对启动做延迟处理,在启动文件里增加 sleep 5,并且为了确保每次重启不会叠加这行代码,在添加前增加一个判断(详见上述代码中 entrypoint 内配置内容)。

三、容器间互访问题

macvlan 具有隔离特性!!!

所以上面所创建的 macvlan 容器是无法与其他 docker 容器或者 nas 本身进行通信的,比如你的同个宿主机内的容器无法访问这个 qb,要实现互访有两种方案:

  1. 方案一:简单粗暴,就是把你需要互访的容器都部署到同一个 vlan 下,前提是你只需要他们之间互访,不需要与其他容器互访。
  2. 方案二:通过虚拟网桥来实现与宿主机之间的互通,并且要设置开机自启。

下面具体说下方案二的步骤:

  1. 创建网桥

ssh 到飞牛,sudo -i 到 root

写入:

保存并退出。

添加权限:

  1. 创建 systemd 服务单元:

输入:

保存并退出。

  1. 启用并启用 systemd 服务:
  2. 可以 reboot 后使用以下命令查看网桥是否自动创建:

使用macvlan或ipvlan为容器创建独立ip

本文是原创文章,采用 协议,完整转载请注明来自

赞赏
没有标签
首页      科技      软路由      使用macvlan或ipvlan为容器创建独立ip

老鬼迪克

文章作者

黑夜给了我黑色的眼睛,而我却用它,寻找光明。

发表回复

textsms
account_circle
email

iDickies

使用macvlan或ipvlan为容器创建独立ip
背景 出于某些特殊的原因,想给一些容器独立的 ip,再利用主路由的黑名单对其进行一些访问限制,查到可以利用 macvlan 或 ipvlan 来处理此类需求,经过几天时间反复尝试以及朋友的指导,…
扫描二维码继续阅读
2025-05-17