Debian 12 中的持久混杂模式

Debian 12 中的持久混杂模式

TLDR:如何在 Debian 12 中添加持久混杂模式?

我正在运行一个带有几个虚拟机的 Proxmox 服务器,每个虚拟机都为不同的任务运行单独的 Docker 容器。以前,我在 Debian 11 cloudinit 映像中使用混杂模式没有遇到任何问题,但 Debian 12 似乎工作方式不同。我也在 Debian 12“正常”安装中测试了这种行为,因此问题可能与 cloudinit 无关。

对于 cloudinit 模板创建我使用了来自奥乔亚项目

Debian 11 通过以下行允许自动混杂模式/etc/network/interfaces

up ip link set eth0 promisc on
down ip link set eth0 promisc off

此外,ip link set eth0 promisc on仍可在 Debian 12 上运行。

那么,如何在 Debian 12 中添加持久混杂模式?

答案1

Debian 12 Bookworm cloudinit 使用 systemd-networkd

事实证明,systemd-networkd 完全绕过了该问题/etc/network/interface,并且该文件中的更改不会传播。您可以通过禁用 systemd-networkd 来解决这个问题,但我怀疑他们有理由使用它。因此,我使用来自的 systemd 服务的修改版本解决了这个问题这个帖子

解决方案 #1

我们将添加一个服务以ip link set eth0 promisc on在启动时激活命令:

  1. 将此服务文件添加promisc.service/etc/systemd/system/
[Unit]
Description=Control promiscuous mode for interface eth0
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set eth0 promisc on
ExecStop=/usr/bin/ip link set eth0 promisc off
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
  1. 使用以下方式启用服务 sudo systemctl enable promisc.service

  2. 重新启动并ip a应显示“PROMISC”

2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

解决方案 #2

用户汤姆·延指向systemd 文档这提供了另一种解决方案。您可以添加一个配置文件/etc/systemd/network/并在其中设置混杂模式。

Debian 12 cloudinit 的步骤

  1. 列出目录内容/run/systemd/network/并检查带后缀的文件.network。其中一个(或唯一一个)应包含 cloudinit 映像提供的 IP 地址。我的是10-netplan-eth0.network
  2. 创建目录/etc/systemd/network/<name-of-file>.d/。使用上一步中的文件名。
  3. 在该目录中创建一个带有后缀的文件.conf,任何名称都可以。在该文件中添加以下内容(使用您想要影响的任何网络接口名称,我的是eth0):
[Match]
Name=eth0

[Link]
Promiscuous=true
  1. 重新启动并使用 检查网络接口ip a

相关内容