
私のマザーボードでeth1のMACアドレスとIPアドレスを設定するためにsystemdを使用しようとしています。
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
サービスはここでシェルスクリプトを指します。
/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
サービスはここでシェルスクリプトを指します。
/etc/eth1ip
#!/bin/sh
ifconfig eth1 192.168.160.218
質問
サービスは実行中ですが、ボードを再起動するたびに呼び出されません。再起動時にサービスを再実行するには、いくつかの依存関係が必要ですか?
答え1
ネットワーク構成が合格しました。.network
そして.link
systemd 使用時のファイルシステムネットワーク。これらのファイルのデフォルトの場所はです/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を使用する必要がありますか?メンテナンスが困難で迅速に汚れてしまう可能性があるため、カスタムシェルスクリプトを使用して独自のシステムサービスを作成することはお勧めできません。
インターフェイスで固定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の一部です。.network
設定するインターフェイスに適したファイルを編集する必要があります。その後、Systemd-networkdは起動時にこのインターフェイスを設定する必要があります。