不便なほど多数の物理ネットワークインターフェイスを備えたDevuanシステムがあります。私は時々ケーブルを外さなければならず、それらが同じインターフェースに再接続されることを確認するのは苦痛です。
表現力豊かなインターフェース名も使用しています。 ethX
の代わりに、インターフェースの目的に基づいて、intra
またはmgmt
またはsomeprovider
のような名前を付けています。これらの名前は、ファイアウォールルールなどで参照されます。
起動時に実行され、どのインターフェイスが何に接続されているかを把握し、それに応じて名前を変更するスクリプトを作成しました。このソリューションには多くのカスタムスクリプトが含まれているため、私はこのソリューションに満足していません。できればもっと主流のものが欲しいのですが。
スクリプトは現在、次の方法でネットワークを識別します。
tcpdump
を使用してインターフェイスでリッスンし、特定のMACアドレスのいずれかからのトラフィックがあるかどうかを確認できます。そのうちの少なくとも1つは、数秒以内に何かを送信する可能性があります。これが絶対確実ではないことは知っていますが、私にとっては十分です。 (私はtimeout ... tcpdump -c 1 -i interfacename "(ether Host foo) or (ether Host bar) or ..."
のようなものを使用します。)これは、pingに固有のものはないが、ほぼ一定のトラフィックが期待できる内部ネットワークでうまく機能します。nmap -sn -oG
_を実行して、その範囲から存在し到達可能なホストの数を確認できます。これは、多くのホストを含むが、どのホストかわからない一部の内部ネットワークにとって便利なヒューリスティックです。できればこれをifupdown
と統合する方法を探しています。マッピングを見てきましたが、マップスクリプトでは、物理インターフェイスに適用する論理構成のみを選択でき、インターフェイスの名前を変更できないようです。 interfaces(5)
は_Lines beginning with "rename" are used to rename interfaces. It takes one or more arguments in the form of "CUR=NEW", where CUR is the name of an existing interface, and NEW is the new name. This becomes very powerful when combined with pattern matching for the CUR interface.
_;ただし、パターンマッチングも役に立ちません。
マッピングの結果をrename
ステートメントで何らかの方法で使用できる場合は、それが機能する可能性があります。
whereami
パッケージも調べましたが、有望ではありませんでした。
私が最も望んでいるのは、_if-pre-up
_スクリプトまたはマッピングスクリプトの出力に基づいて、ifupdown
にネットワークインターフェイスの名前を変更させる方法です。
それについて考えると、次のような_pre-up
_スクリプトでこれを実行できるという結論に達しました。
_iface intra inet static
pre-up find-interface intra
address ...
_
次に、_find-interface
_スクリプトは、どのethX
(またはenX
など)インターフェイスをintra
にする必要があるかを検出し、名前を変更し、ifupdown
がそこから取得します。
_find-interface
_スクリプトを https://Gist.github.com/akorn/7b96e78c7d1b3ca70e35261f9b1a2f2b で公開しました。これは、他の誰かが役立つと思った場合に備えてです。