我正在尝试从 Ubuntu 迁移到 Fedora(22),但我找不到如何在接口启动之前运行网络脚本。Fedora 中是否有与此 /etc/network/if-pre-up.d/ 等效的脚本?
我需要在任何接口启动时触发一个脚本,并将该接口捕获到一个变量中(这样我就可以对其执行 macchanger)。起初我以为可以使用 systemd-networkd 来管理,但当 NetworkManager 处于活动状态时似乎并非如此[1]
[0]https://help.ubuntu.com/community/AnonymizingNetworkMACAddresses
答案1
我已经进行了一些测试,对我有用的唯一方法是使用 systemd 单元:
vim /etc/systemd/system/macspoof@[your-interface].service
[Unit]
Description=macchanger on %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
ExecStart=/usr/bin/macchanger -r %I
Type=oneshot
[Install]
WantedBy=multi-user.target
将权限更改为 755
chmod 755 /etc/systemd/system/macspoof@[your-interface].service
然后启用服务
systemctl enable macspoof@[your-interface].service
查看此链接了解更多信息:MAC 地址欺骗
答案2
/etc/NetworkManager/dispatcher.d/pre-up.d/
答案3
看来脚本必须放在 networkmanager 调度程序中。路径可能是“/usr/local/etc/NetworkManager/dispatcher.d/pre-up.d/macchanger”或“/etc/NetworkManager/dispatcher.d/pre-up.d/macchanger”。与 Ubuntu 教程相比,您必须使用第一个参数($1)而不是 $IFACE。
#!/bin/bash
ip link set dev $1 down
macchanger -e "$1"
ip link set dev $1 up