LinuxでMACアドレスを永続的に変更する方法

ターミナルでmacchangerユーティリティとsystemctlユニットファイルを使用して新しい永続的なMACアドレスを設定できます。または、GNOMEで[設定] > [Wi-Fi(またはネットワーク)] > [ID]に移動し、カスタムのMACアドレスを入力します。

すべてのネットワークインターフェースには、製造元によって設定された固有のMACアドレスがあります。これは、ネットワーク接続が接続エンドポイントを識別する方法です。Linuxでは必要に応じてMACアドレスを永続的に変更できます。

MACアドレスとは何ですか?

MACアドレスは、ネットワークによってデバイスを接続エンドポイントとして識別するために使用される一意のコードです。これは、ネットワークインターフェース間で「誰が誰なのか」という重要な疑問に答えます。

すべてのネットワーク機器には、少なくとも1つのネットワークインターフェースが組み込まれています。デスクトップコンピューターまたはサーバーには、複数のネットワークカードがインストールされている場合があります。多くのラップトップにはCAT5ネットワークソケットとWi-Fiカードが付属しており、すぐに2つのネットワークインターフェースを使用できます。

すべてのネットワークインターフェースには、組み込まれた固有の識別子があります。そのデバイスと通信するために使用されるネットワークプロトコルに関係なく、最も低いレベルでは、接続はメディアアクセス制御(MAC)アドレスによって識別されます。そのため、一意である必要があります。ネットワークインターフェースに別のMACアドレスを使用させることをスプーフィングと呼びます。

MACアドレスは6つの16進数で構成されています。6つの数字のそれぞれの間にはコロン「:」またはハイフン「-」が付けられています。これは、テストコンピューターの1つのMACアドレスです。

b0:c0:90:58:b0:72

ほとんどの場合、最初の3つの数字は組織的に一意の識別子であり、ハードウェア製造元を表しています。Wireshark Manufacturer Lookupページを使用してOUIをデコードできます。これは、コンピューターのマザーボード、ネットワークカード、またはWi-Fiカードの製造元である可能性があることに注意してください。製造元はコンピューターの多くのコンポーネントを購入して完成品に組み立てているため、コンピューターの製造元と異なる場合でも驚かないでください。

MACアドレスは組み込まれているため、実際には変更できません。できることは、Linuxシステムが別のMACアドレスを持っているように「装う」ように構成することです。ネットワーク上の他のデバイスにとっては、コンピューターのMACアドレスはブロードキャストされるMACアドレスであるため、最終的な結果は同じです。

MACアドレスを見つける

現在のMACアドレスを見つけるには、ipコマンドをlinkオブジェクトと一緒に使用します。これにより、使用中かネットワークから切断されているかに関係なく、ネットワークインターフェースが一覧表示されます。

ip link

このコンピューターは、アクティブなWi-Fi接続wlan0と有線イーサネット接続enp3s0を備えたラップトップです。有線接続は接続されていないため、非アクティブです。ラップトップには、デフォルトのループバック接続loも構成されています。

macchangerを使用してLinuxのMACアドレスを変更する

macchangerユーティリティを使用すると、柔軟なオプションを使用してネットワークインターフェースのMACアドレスを変更できます。特定のMACアドレスを設定するか、ランダムなMACアドレスを使用できます。ハードウェアと同じ3つのOUIバイトを使用する新しいMACアドレスを取得することもできるので、ネットワークインターフェースの製造元は同じままです。

macchangerのインストール

Ubuntuにmacchangerをインストールするには、このコマンドを使用します。

sudo apt install macchanger

Fedoraにmacchangerをインストールするには、次のように入力する必要があります。

sudo dnf install macchanger

Manjaroでは、コマンドは次のとおりです。

sudo pacman -S macchanger

ディストリビューションのリポジトリにあるmacchangerのバージョンによっては、ネットワーク接続がオンラインになるたびに新しいMACアドレスを作成するかどうかを尋ねる画面が表示される場合があります。つまり、イーサネットケーブルを接続するか、Wi-Fiを有効にするときです。

矢印キーを使用してハイライトを目的のオプションに移動し、「Enter」を押します。

この方法には利便性がありますが、「いいえ」を選択します。使用しているMACアドレスをある程度制御したいと考えています。また、コンピューターのすべてのネットワークインターフェースのMACアドレスを変更したくない場合もあります。たとえば、Wi-Fiカードだけで変更する場合があります。

macchangerを使用してMACアドレスを一時的に変更する

使用中のネットワークインターフェースのMACアドレスをリセットすることはできません。イーサネット接続のMACアドレスは接続されていないため、非アクティブなので変更できます。

-r(ランダム)オプションは、完全にランダムなMACアドレスを生成します。MACアドレスを設定するネットワークインターフェースの名前を渡す必要があります。

sudo macchanger -r enp3s0

使用されていたMACアドレスは、基盤となるハードウェアMACアドレス、または永続的なMACアドレスと同じでした。新しいMACアドレスは下部に表示されます。

Wi-Fiアダプターを停止し、MACアドレスを変更してから、Wi-Fiアダプターを有効にすると、Wi-FiカードのMACアドレスも変更できます。

sudo networkctl down wlan0

sudo macchanger -r wlan0

sudo networkctl up wlan0

ランダムなMACアドレスが必要ない場合は、-m(MACアドレスオプション)を使用して、コロン「:」形式のMACアドレスを小文字の16進数で指定できます。

sudo macchanger -m ae:f9:9b:31:40:c0 enp3s0

MACアドレスを永続的に変更する方法

それはすべて素晴らしくシンプルですが、再起動には耐えられません。

しかし、systemdユニットファイルを使用することで、それを実現できます。macchangerを使用して、起動するたびにラップトップにイーサネットとWi-Fiインターフェースの新しいMACアドレスを提供します。

-e(終了)オプションを使用するので、MACアドレスは変更されますが、3つのOUIバイトは同じままです。

つまり、スプーフィングされたMACアドレスは、実際のイーサネットハードウェアとWi-Fiハードウェアを製造したのと同じ会社が製造したハードウェアに属しているように見えます。これにより、認識された製造元のハードウェアから送信されていないパケットを拒否するルーター、ファイアウォール、またはスイッチの問題を回避できます。

2つのサービスを作成します。1つはイーサネット接続用、もう1つはWi-Fi接続用です。単一のユニットファイルが各サービスのテンプレートとして機能します。

ユニットファイルを作成するには、sudoを使用し、サービスに使用する基本名を持つファイルを編集する必要があります。ファイル名のアットマーク「@」記号は、サービスが起動されたときにネットワーク接続の名前で置き換えられます(後述)。

ユニットファイルを「[email protected]」と呼びます。これはMACアドレスをスプーフィングするためです。

sudo gedit /etc/systemd/system/[email protected]

このテキストをユニットファイルにコピーし、ファイルを保存してエディターを閉じます。

[Unit]
Description=Spoofing MAC address on %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
ExecStart=/usr/bin/macchanger -e %I
Type=oneshot
[Install]
WantedBy=multi-user.target

接続ごとにサービスを作成する必要があります。これを行うには、ユニット名のアットマーク「@」の後ろにネットワークインターフェースの名前を追加します。最初にイーサネット接続を行います。

sudo systemctl enable [email protected]

Wi-Fi接続でも同じことを行います。

sudo systemctl enable [email protected]

ラップトップを再起動した後、macchangerを使用して現在のMACアドレスを確認できます。macchangerを使用してMACアドレスの設定を報告するためだけで、変更するためではないため、sudoを使用する必要がないことに注意してください。

macchanger enp3s0

macchanger wlan0

これにより、2つのネットワークインターフェースの現在アクティブなスプーフィングされたMACアドレスと、元のMACアドレスが表示されます。

ユニットファイルで-e(終了)オプションを使用しているため、スプーフィングされたアドレスの最初の3バイトは元のMACアドレスの最初の3バイトと同じです。

GNOMEでMACアドレスを永続的に変更する

ほとんどのデスクトップ環境では、新しいMACアドレスを設定できます。GNOMEでは、「設定」を開き、サイドバーから「Wi-Fi」または「ネットワーク」を選択することで、これを行うことができます。

MACアドレスを設定する接続の横にある歯車のアイコンをクリックし、「ID」タブを選択します。

「MACアドレス」フィールドに新しいMACアドレスを入力するか、ドロップダウンメニューから本物のMACアドレスを選択できます。

「クローンされたアドレス」ドロップダウンメニューから次のいずれかを選択できます。

  • 保持: ブート時にMACアドレスを保持します。設定されたMACアドレスから変更しません。
  • 永続的: 本物のハードウェアMACアドレスを使用します。
  • ランダム: ランダムなMACアドレスを生成します。
  • 安定: 安定したハッシュ化されたMACアドレスを生成します。接続がアクティブになるたびに、同じ偽のMACアドレスが使用されます。これは、ハードウェアのMACアドレスを隠したいが、DHCPルーターから同じIPアドレスを取得する必要がある場合に便利です。

再起動するか、接続をオフにしてオンにすると、変更が適用されます。

注意してください!

MACアドレスの変更は、他人のネットワークデバイスになりすますために行わない限り、違法ではありません。管轄区域には、ネットワークトラフィックを違法に受信することを取り締まる法律がある可能性があります。たとえば、英国にはコンピュータ悪用行為法があり、米国にはコンピュータ詐欺および乱用行為法があります。

ぜひ匿名になりましょう。しかし、他人のふりをしてはいけません。