更新-2020年2月21日:
私のディスクが起動したどのシステムでも、NetworkManagerが特定のMACアドレスを最初の/唯一のイーサネットアダプターに割り当てるエレガントな方法を見つけられませんでした。また、MACアドレスではなくシステム名に基づいてIPアドレスを割り当てるようにDHCPサーバーを再構成することで、特定の問題を解決できる可能性があることにも気付きました。また、NetworkManagerやnetplanではなくsystemd-networkd
を使用して、ほとんどのシステムでネットワークの構成を開始しました。 (systemd-networkd
の方が良いかもしれませんが、それでもIMOに欠陥があります。)最後に、2019年10月14日のアップデートが正しいことを確信できなくなりました。つまり、Ubuntuのデフォルトのインストール(おそらく19.10?)にifupdown
パッケージが含まれなくなる可能性があります。
更新-2019年10月14日:
(注:2020年2月の時点で、この段落が正しくないか、古くなっている可能性があります。)今週、デスクトップバージョンのUbuntu 19.04をインストールしました。パッケージifupdown
はUbuntu 19.04にデフォルトでインストールされているようです。 (そうです!)したがって、この質問はおそらく、デフォルトのインストールからifupdown
パッケージを除外することを選択したUbuntu派生物にのみ当てはまります。そして、質問はおそらくUbuntu自体には当てはまりません。これと他の理由で、私は将来のすべてのインストールで、その派生物のどれよりもバニラUbuntuを好むと思います。
元の質問-2019年2月26日
(遠い?)以前は、次のスタンザを/etc/network/interfaces
に追加することで、MACアドレスをネットワークインターフェイスに割り当てることができました。
auto eth0
iface eth0
hwaddress 00:12:34:56:78:9a
Lubuntu 18.04以降、これは機能しなくなりました(ifupdown
パッケージがデフォルトでインストールされていないため)。
私の質問は、NetworkManagerが選択した固定MACアドレスをeth0
に割り当てるために、どの構成ファイルを編集し、どのように編集するかです。
(脇に:はい、私はデフォルトでUbuntu 18.04がeth0
をenp1s0
のような「予測可能な」名前に変更することを知っています。私はその名前変更をすでに無効にしているので、実際にeth0
インターフェースを持っています私のシステムで。)
私は次のドキュメントをちらっと見ました:
上記のドキュメントに基づいて、以下のようなものを/etc/NetworkManager/NetworkManager.conf
に追加してみました。
[device]
match-device=interface-name:eth0
ethernet.assigned-mac-address=00:22:68:1c:59:b1
残念ながら、上記は機能しないようです。
私の使用例は、LubuntuをUSBスティックにインストールした場合です。任意のシステムでUSBスティックを起動したら、NetworkManagerがeth0
に事前定義された固定MACアドレスを割り当てられるようにします。
TLDR:
nmcli con show
最後の列でデバイス(eth0)を探し、次のコマンドに接続の名前を使用します。例、接続名が「デフォルト」の場合:
Sudo nmcli con modify Default 802-3-ethernet.cloned-mac-address 00:12:34:56:78:9a
長い回答:
nmcli --version
NetworkManagerは継続的に開発されており、構成パラメーターまたはその名前が変更される場合があります。いくつかの変更は紛らわしいです。
対照と比較:
そして:
Xubuntu 18.04でも同じ問題に直面しました。互換性を損なう構成変更に対するラントは省略されました。
前述のように、キーファイル形式のプロパティ、nmcli、およびNetworkManager.conf
はethernet.cloned-mac-address
と呼ばれます。 D-Bus APIでのみethernet.assigned-mac-address
と呼ばれます-これには歴史的な理由があります。
通常、たとえばnmcli connection modify "$PROFILE" ethernet.cloned-mac-address 00:22:68:1c:59:b1
を使用して、プロファイルごとにこれを設定します。 NetworkManager.conf
を編集して、使用するデフォルト値を指定しますifプロファイルごとの値は指定されていません。これはman NetworkManager.conf
で説明されています。
プロファイルを変更した後、変更を有効にするには、プロファイルを再度アクティブにする必要があります。同様に、NetworkManager.conf
のデフォルト値を編集する場合は、SIGHUP
を使用してデフォルト値を再ロードし、プロファイルを再度アクティブにする必要があります。
予測可能なインターフェース名について:NetworkManagerはデバイスに(再)名前を付けません。これは通常udevによって行われます。デバイスに付けられた名前にconnection.interface-name
を設定することで、プロファイルをインターフェイスに制限できます。その名前はip link
またはnmcli device
で確認できます。同様に、match-device=interface-name:
のNetworkManager.conf
設定。