Systemd - 设置 MAC 地址和 IP 地址

Systemd - 设置 MAC 地址和 IP 地址

我正在尝试使用 systemd 设置主板上 eth1 的 MAC 地址和 IP 地址。

MAC地址
为了设置MAC地址,创建了以下服务:

/lib/systemd/system/eth1mac.service

[Unit]
Description=Setting up MAC address
Before=network.target

[Service]
ExecStart=/bin/sh /etc/eth1mac

[Install]
WantedBy=multi-user.target

该服务指向此处的 shell 脚本:
/etc/eth1mac

#!/bin/sh

ifconfig eth1 down
ifconfig eth1 hw ether 00:11:22:33:44:55
ifconfig eth1 up

这工作正常。

IP地址
要设置IP地址,已创建以下服务:
/lib/systemd/system/eth1ip.service

[Unit]
Description=Setting up eth1 IP address
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/bin/sh /etc/eth1ip

[Install]
WantedBy=multi-user.target

该服务指向此处的 shell 脚本:
/etc/eth1ip

#!/bin/sh

ifconfig eth1 192.168.160.218

问题
该服务正在运行,但每次我们重新启动主板时都不会调用该服务。我是否需要某些依赖项来确保该服务在重新启动时重新运行?

答案1

网络配置通过.network.link使用 systemd 时的文件systemd-networkd。这些文件的默认位置是/etc/systemd/network.

示例:将使用 MAC 地址74:d1:2c:2c:6e:d8名称的接口重命名为,phy0并将 MAC 地址更改11:22:33:44:55:66/etc/systemd/network/10-phy0.link

[Match]
# Match card's MAC address
PermanentMACAddress=74:d1:2c:2c:6e:d8
    
[Link]
Description=Ethernet Port 1
# Rename interface to phy0
Name=phy0
# Override MAC address (spoof MAC address)
MACAddress=11:22:33:44:55:66

设置 IP 地址/etc/systemd/network/phy0.network

[Match]
# Match interface name
Name=phy0    
    
[Network]
Description=Interface phy0 (network)
DHCP=no
# Static IPv4 or IPv6 address with CIDR
Address=192.168.1.123/24
Gateway=192.168.1.1
# DNS server address
DNS=192.168.1.1
Domains=mynetwork.lan

答案2

您必须为此使用 systemd 吗?我不建议使用自定义 shell 脚本创建自己的 systemd 服务,因为它很难维护并且很快就会变得混乱。

在接口上设置静态 IP 地址和 MAC 地址的更常见方法是在配置文件中设置/etc/network/interfaces(假设基于 Debian 的 Linux 系统)。

例如,将其附加到配置中:

auto eth1
iface eth1 inet manual
    address 192.168.160.218
    netmask 255.255.255.0
    hwaddress ether 00:11:22:33:44:55

还有一种方法可以使用配置网络接口systemd-networkd守护进程是 systemd 的一部分。您必须编辑.network要配置的接口的相应文件。然后,systemd-networkd 应该在启动期间为您配置此接口。

相关内容