GNU/Linux >> Linux の 問題 >  >> Linux

Linux コマンドラインからランダムな MAC アドレスを生成する方法

解決策 1:

私は使用します

macaddr=$(echo $FQDN|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/')

完全な乱数に対するこの方法の利点は、マシンの FQDN に基づいて MAC アドレスを確実に再現できることです。これは時々役立つと思います。 02 最初のオクテットについては、「ローカルに割り当てられた」ビットを設定するだけです。これにより、ベンダー提供の MAC アドレスではないことが明らかになり、実際の NIC の MAC アドレスと衝突しないことが保証されます。

ホストごとに複数の MAC アドレスを生成する必要がある場合、以前は FQDN をブリッジの名前と連結してインターフェースを接続していました。これにより、さまざまな NIC にうまく分散できました。

解決策 2:

投稿されたスクリプトは優れていますが、警告を追加したいと思います:誕生日 (パラドクソン) に注意してください!

これは、23 人しかいない場合でも、そのうちの 2 人が同じ日に誕生日を迎える確率はすでに 50% であるという事実に由来します。

どのように使用するかはシナリオによって異なりますが、MACS をランダムに生成する場合、約 100 万で mac 番号が衝突する可能性は 40% で、200 万ではすでに 87% です!

数台しか必要ない場合はこれで問題ありませんが、数百台のサーバーを備えたサーバー ファームを維持し、それぞれが数十台の仮想マシンをホストしている場合、または簿記のためにいくつかのデータベースでインデックスとして mac を使用していて、一意が必要な場合は注意してください!

解決策 3:

これらのバリアントも同様に機能します。

長い:

openssl rand -hex 6 | sed 's/\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4:\5:\6/'

またはそれより短い:

openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/:$//'

両方のバリアントの負荷消費は、時間のクイック測定によると非常に似ています.

解決策 4:

myserver% perl -e 'for ($i=0;$i<6;$i++){@m[$i]=int(rand(256));} printf "%X:%X:%X:%X:%X:%X\n",@m;'
55:C2:A5:FA:17:74

ああ、昔のスイス アーミー チェーンソーがまた乗った。バージョン 0.2 では、最初のオクテットが 02 であるという womble の優れた点を恥ずかしがらずに盗みます:

myserver% perl -e 'for ($i=0;$i<5;$i++){@m[$i]=int(rand(256));} printf "02:%X:%X:%X:%X:%X\n",@m;'
02:8E:94:A3:47:26

解決策 5:

この投稿が古いことは承知していますが、将来の訪問者のために、OUI として 0x02 に制限されることなく、暗号的に安全な疑似ランダム MAC アドレスが必要な場合は、主にプラットフォームに依存しない高速なジェネレーターを次に示します。

$ printf '%02x' $((0x$(od /dev/urandom -N1 -t x1 -An | cut -c 2-) & 0xFE | 0x02)); od /dev/urandom -N5 -t x1 -An | sed 's/ /:/g'

Linux
  1. コマンドラインからリモートでLinuxワークスペースを構成する

  2. Linuxコマンドラインからソフトウェアをインストールする方法

  3. Linuxコマンドラインから直接MySQL/MariaDBクエリを実行する方法

  1. LinuxでコマンドラインインターフェイスからAレコードを更新するにはどうすればよいですか?

  2. コマンドラインから Ubuntu Linux で AVD マネージャーを開く方法は?

  3. Linux のコマンドラインから socket.io websocket にメッセージを送信するにはどうすればよいですか?

  1. Linuxコマンドラインでパスワードを生成する

  2. Linux コマンドラインからフォルダーをコピーするにはどうすればよいですか?

  3. Linux でコマンドライン インターフェイスから TeX を実行する方法