MAC変更後の遅延

MAC変更後の遅延

ローカルネットワークのイーサネットMACアドレスを変更するスクリプトを作成しています。次のように動作します。

  1. 最初はeth0が終了します。
  2. MAC は ifconfig ユーティリティを使用して変更されます。
  3. eth0が始まります

#!/bin/sh
sleep 5
ifconfig eth0 down
sleep 10
ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX
sleep 1
ifconfig eth0 up

上記のスクリプトを実行すると、MACの変更が​​成功し、パネルのネットワークアイコンにも「接続」ステータスが表示されます。数秒後eth0 がネットワークに再接続されます。その後、コードの機能を向上させるためにいくつかの行を追加しました。

/sbin/ifconfig eth0| grep 'inet addr:'
ifconfig eth0 | awk '/HWaddr/ {print $5}'
ping 192.168.1.107 -c 2

上の行は新しいIPアドレス、MACアドレスを示し、ネットワークが正しく機能していることを確認するためにping要求を送信します。しかし、私が直面している問題は、上記の行を追加した後にpingが失敗し、パネルのネットワークアイコンに「接続中」のステータスが表示されることです。スクリプトが完全に実行された後、数秒後、eth0が完全に接続されています。 (Pingすることができます)ので、次の行の後にスリープ30を追加してみました。

ifconfig eth0 up

pingの問題が解決されたと仮定します。ただし、スクリプトに記載されているpingはまだ失敗し、スクリプトを実行した後にネットワークが完全な接続を確立するのに時間がかかります。
この問題をどのように解決するのですか?

ベストアンサー1

どのディストリビューションを使用していますか?デフォルトでは、MACアドレスの変更はNetworkManagerを起動する前に行う必要があります。可能なオプションは次のとおりです。

  • eth0のカスタムudevルールをインストールします。
  • 初期化システム(sysvinit、upstart、systemdなど)で動作するスクリプトを作成します。
  • 使用システムリンクシステム化された機能。

私が見つけたArchlinux Wikiに関する有用な情報。また、これに興味がある可能性がありますマイチェンジグリッド、これはさまざまなディストリビューションで共通です。

おすすめ記事