打开网卡的 promiscuous 模式
如果需要桥接网络设备,或者尝试 docker 的 macvlan 网络,那么势必要打开网卡的 promiscuous 模式。
首先,最近的 linux 发行版都支持用命令行临时打开。
sudo ip link set dev eth0 promisc on
只是绝大多数时候我们需要永久打开 promiscuous 模式。那么我们可能根据自己系统选择合适的方法。
一. NetworkManager
如果你的网络管理操作是 NetworkManager,那么可以试试 NetworkManager-dispatcher,根据你自己的发行版,自行安装 NetworkManager-dispatcher,随后,创建 /etc/NetworkManager/dispatcher.d/60-promisc
,根据你自己的网卡名,填入如下内容:
#! /usr/bin/env bash
case "$2" in
up)
if [[ "$1" = "eth0" ]] || [[ "$1" = "eth1" ]]; then
ip link set dev $1 promisc on
fi
;;
esac
随后,添加执行权限
sudo chmod +x /etc/NetworkManager/dispatcher.d/60-promisc
二. systemd
创建一个 systemd service 在 network-online.target 后开始运行,创建文件 /etc/systemd/system/nics-promisc.service
[Unit]
Description=enable promiscuous mode after network online
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev eth0 promisc on
ExecStart=/usr/sbin/ip link set dev eth1 promisc on
TimeoutStartSec=0
RemainAfterExit=yes
[Install]
WantedBy=default.target
三. systemd-networkd
有些朋友使用 systemd-networkd 来管理网络。编辑 /etc/systemd/network/eth0.network
,根据你自己的设备来
[Match]
Name=eth0
[Link]
Promiscuous=true
参考: