「MAC アドレス偽装」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(リンクを修正)
 
(6人の利用者による、間の10版が非表示)
1行目: 1行目:
[[Category:ネットワーク]]
 
 
[[Category:セキュリティ]]
 
[[Category:セキュリティ]]
  +
[[Category:ネットワーク設定]]
[[cs:MAC Address Spoofing]]
 
  +
[[cs:MAC address spoofing]]
 
[[de:MAC-Adresse abfragen und setzen]]
 
[[de:MAC-Adresse abfragen und setzen]]
 
[[en:MAC address spoofing]]
 
[[en:MAC address spoofing]]
[[es:MAC Address Spoofing]]
+
[[es:MAC address spoofing]]
  +
[[fr:Changement d'adresse MAC]]
  +
[[pt:MAC address spoofing]]
 
[[ru:MAC address spoofing]]
 
[[ru:MAC address spoofing]]
[[zh-CN:MAC Address Spoofing]]
+
[[zh-hans:MAC address spoofing]]
 
この記事では Media Access Control (MAC) アドレスを偽装 (変更) する方法を説明しています。
 
この記事では Media Access Control (MAC) アドレスを偽装 (変更) する方法を説明しています。
   
 
== 手動 ==
 
== 手動 ==
   
MAC アドレスを偽装するには {{Pkg|iproute2}} (デフォルトでインストールされます) または {{Pkg|macchanger}} ([[公式リポジトリ]]からインストール可能) を使う2つの方法があります。どちらの方法も以下で示します。
+
MAC アドレスを偽装するには {{Pkg|iproute2}} (デフォルトでインストールされます) または {{Pkg|macchanger}} ([[公式リポジトリ]] からインストール可能) を使う2つの方法があります。どちらの方法も以下で示します。
   
 
=== 方法 1: iproute2 ===
 
=== 方法 1: iproute2 ===
19行目: 21行目:
 
# ip link show ''interface''
 
# ip link show ''interface''
   
{{ic|''interface''}} は[[Network Configuration#ネットワークインターフェース|ネットワークインターフェイス]]の名前に置き換えて下さい。
+
{{ic|''interface''}} は[[ネットワーク設定#ネットワークインターフェース|ネットワークインターフェイス]]の名前に置き換えて下さい。
   
 
重要なのは "link/ether" の後に続く6桁の番号です。以下のように表示されているはずです:
 
重要なのは "link/ether" の後に続く6桁の番号です。以下のように表示されているはずです:
47行目: 49行目:
 
{{Pkg|macchanger}} (別名 GNU MAC Changer) を使用する方法です。特定のベンダーに一致するように変更したり、完全にランダムにするなど、様々な機能が備わっています。
 
{{Pkg|macchanger}} (別名 GNU MAC Changer) を使用する方法です。特定のベンダーに一致するように変更したり、完全にランダムにするなど、様々な機能が備わっています。
   
[[公式リポジトリ]]から {{Pkg|macchanger}} パッケージを[[インストール]]してください。
+
[[公式リポジトリ]] から {{Pkg|macchanger}} パッケージを [[インストール]] してください。
   
偽装はインターフェイスごとに行うので、以下に記載されているコマンドを使うときは {{ic|''interface''}} で[[Network Configuration#ネットワークインターフェース|ネットワークインターフェイス]]を指定します。
+
偽装はインターフェイスごとに行うので、以下に記載されているコマンドを使うときは {{ic|''interface''}} で [[ネットワーク設定#ネットワークインターフェース|ネットワークインターフェイス]] を指定します。
   
 
MAC アドレスを完全にランダムなアドレスに偽装するには:
 
MAC アドレスを完全にランダムなアドレスに偽装するには:
75行目: 77行目:
 
=== 方法 1: systemd-networkd ===
 
=== 方法 1: systemd-networkd ===
   
[[systemd-networkd|systemd-networkd]] は [[systemd-networkd#link ファイル|link ファイル]]による MAC アドレスの偽装をサポートしています (詳しくは {{ic|man systemd.link}} を参照):
+
[[systemd-networkd]] は [[systemd-networkd#link ファイル|link ファイル]] による MAC アドレスの偽装をサポートしています (詳しくは {{man|5|systemd.link}} を参照):
   
 
{{hc|/etc/systemd/network/00-default.link|2=
 
{{hc|/etc/systemd/network/00-default.link|2=
85行目: 87行目:
 
NamePolicy=kernel database onboard slot path
 
NamePolicy=kernel database onboard slot path
 
}}
 
}}
  +
  +
起動毎に MAC アドレスをランダムに設定したい場合は、{{ic|1=MACAddress=''spoofed MAC''}} を {{ic|1=MACAddressPolicy=random}} に置き換えてください。
   
 
=== 方法 2: systemd-udevd ===
 
=== 方法 2: systemd-udevd ===
   
[[Udev|Udev]] は [[Udev#udev ルールを記述する|udev ルールを書く]]ことによる MAC アドレスの偽装をサポートしています。{{ic|ATTR}} によって udev は適当なデバイスを見つけてその MAC アドレスを変更するので、{{ic|address}} オプションは両方ともカスタマイズしてください:
+
[[Udev]] は [[Udev#udev ルールについて|udev ルールを書く]] ことによる MAC アドレスの偽装をサポートしています。{{ic|ATTR}} によって udev は適当なデバイスを見つけてその MAC アドレスを変更するので、{{ic|address}} オプションは両方ともカスタマイズしてください:
   
 
{{hc|/etc/udev/rules.d/75-mac-spoof.rules|2=
 
{{hc|/etc/udev/rules.d/75-mac-spoof.rules|2=
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="02:03:09:xx:xx:xx", RUN+="/usr/bin/ip link set dev %k address c8:0a:a9:xx:xx:xx"
+
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="02:03:09:xx:xx:xx", RUN+="/usr/bin/ip link set dev $name address c8:0a:a9:xx:xx:xx"
 
}}
 
}}
   
98行目: 102行目:
 
==== ユニットの作成 ====
 
==== ユニットの作成 ====
   
以下は [[systemd|systemd]] のユニットを使って MAC アドレスを起動時に変更する2つの例です。片方は ''ip'' を使って固定 MAC を設定し、もう片方は ''macchanger'' を使ってランダムな MAC アドレスを指定します。[[Netctl|Netctl]], [[NetworkManager|NetworkManager]], [[systemd-networkd|systemd-networkd]], [[dhcpcd|dhcpcd]] などのネットワークマネージャのサービスが起動する前に MAC が変更されるように systemd の {{ic|network-pre.target}} を使っています。
+
以下は [[systemd]] のユニットを使って MAC アドレスを起動時に変更する2つの例です。片方は ''ip'' を使って固定 MAC を設定し、もう片方は ''macchanger'' を使ってランダムな MAC アドレスを指定します。[[Netctl]], [[NetworkManager]], [[systemd-networkd]], [[dhcpcd]] などのネットワークマネージャのサービスが起動する前に MAC が変更されるように systemd の {{ic|network-pre.target}} を使っています。
   
 
===== iproute2 =====
 
===== iproute2 =====
   
あらかじめ決めておいた MAC アドレスに設定する [[systemd|systemd]] ユニット:
+
あらかじめ決めておいた MAC アドレスに設定する [[systemd]] ユニット:
   
 
{{hc|/etc/systemd/system/macspoof@.service|<nowiki>
 
{{hc|/etc/systemd/system/macspoof@.service|<nowiki>
109行目: 113行目:
 
Wants=network-pre.target
 
Wants=network-pre.target
 
Before=network-pre.target
 
Before=network-pre.target
  +
BindsTo=sys-subsystem-net-devices-%i.device
 
After=sys-subsystem-net-devices-%i.device
 
After=sys-subsystem-net-devices-%i.device
   
122行目: 127行目:
 
===== macchanger =====
 
===== macchanger =====
   
元の NIC ベンダーコードは維持しつつランダムなアドレスを設定する [[systemd|systemd]] ユニット。{{Pkg|macchanger}} の[[インストール]]が必須です:
+
元の NIC ベンダーコードは維持しつつランダムなアドレスを設定する [[systemd]] ユニット。{{Pkg|macchanger}} の [[インストール]] が必須です:
   
 
{{hc|/etc/systemd/system/macspoof@.service|<nowiki>
 
{{hc|/etc/systemd/system/macspoof@.service|<nowiki>
129行目: 134行目:
 
Wants=network-pre.target
 
Wants=network-pre.target
 
Before=network-pre.target
 
Before=network-pre.target
  +
BindsTo=sys-subsystem-net-devices-%i.device
 
After=sys-subsystem-net-devices-%i.device
 
After=sys-subsystem-net-devices-%i.device
   
148行目: 154行目:
   
 
適切な順番でサービスを再起動・停止・起動してください。ネットワークを管理している場合は、ルーターの固定アドレスまたは DHCP アドレステーブルを確認して、偽装された MAC がルーターによって認識されているか確認してください。
 
適切な順番でサービスを再起動・停止・起動してください。ネットワークを管理している場合は、ルーターの固定アドレスまたは DHCP アドレステーブルを確認して、偽装された MAC がルーターによって認識されているか確認してください。
  +
  +
=== 方法 4: netctl インターフェイス ===
  +
  +
[[Netctl#フックを使う|netctl フック]]を使うことで特定のネットワークインターフェイスで netctl プロファイルが起動するときにコマンドを実行することができます。{{ic|''interface''}} は適宜置き換えてください:
  +
  +
{{hc|/etc/netctl/interfaces/''interface''|2=
  +
#!/usr/bin/env sh
  +
/usr/bin/macchanger -r ''interface''}}
  +
  +
スクリプトに実行可能属性を付与:
  +
chmod +x /etc/netctl/interfaces/''interface''
  +
  +
ソース: [https://blog.akendo.eu/archlinuxrandom-mac-address-for-new-wireless-connections/ akendo.eu]
  +
  +
=== 方法 5: NetworkManager ===
  +
  +
[[NetworkManager#MAC アドレスのランダム化の設定]] を見てください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
153行目: 176行目:
 
=== DHCPv4 ネットワークへの接続が失敗する ===
 
=== DHCPv4 ネットワークへの接続が失敗する ===
   
NetworkManager のデフォルトである dhcpcd を使っていて DHCPv4 ネットワークに接続できない場合、[[Dhcpcd#クライアント ID|dhcpcd の設定を変更]]してリースを取得するようにしてみてください。
+
NetworkManager のデフォルトである dhcpcd を使っていて DHCPv4 ネットワークに接続できない場合、[[Dhcpcd#クライアント ID|dhcpcd の設定を変更]] してリースを取得するようにしてみてください。
   
 
== 参照 ==
 
== 参照 ==
   
  +
* [[Wikipedia:MAC spoofing]]
 
* [https://github.com/alobbs/macchanger Macchanger GitHub ページ]
 
* [https://github.com/alobbs/macchanger Macchanger GitHub ページ]
 
* [http://www.debianadmin.com/change-your-network-card-mac-media-access-control-address.html Article on DebianAdmin] with more ''macchanger'' options
 
* [http://www.debianadmin.com/change-your-network-card-mac-media-access-control-address.html Article on DebianAdmin] with more ''macchanger'' options

2023年12月28日 (木) 12:56時点における最新版

この記事では Media Access Control (MAC) アドレスを偽装 (変更) する方法を説明しています。

手動

MAC アドレスを偽装するには iproute2 (デフォルトでインストールされます) または macchanger (公式リポジトリ からインストール可能) を使う2つの方法があります。どちらの方法も以下で示します。

方法 1: iproute2

まず、次のコマンドで現在の MAC アドレスを確認できます:

# ip link show interface

interfaceネットワークインターフェイスの名前に置き換えて下さい。

重要なのは "link/ether" の後に続く6桁の番号です。以下のように表示されているはずです:

link/ether 00:1d:98:5a:d1:3a

MAC アドレスを偽装するために、まずはネットワークインターフェイスを下ろします。次のコマンドで行うことができます:

# ip link set dev interface down

そして、実際に MAC の偽装を行います。16進数の値を使いますが、ネットワークによってはベンダーが一致しないクライアントに IP アドレスを割り当てないように設定されていることがあります。したがって、接続するネットワークを管理していない場合は、ランダム化するよりも既知の MAC を使ってテストすると良いでしょう。

MAC を変更するには、次のコマンドを実行します:

# ip link set dev interface address XX:XX:XX:XX:XX:XX

6桁の値は XX:XX:XX:XX:XX:XX という形式で入力する必要があります。

最後にネットワークインターフェイスを立ち上げます。次のコマンドで行えます:

# ip link set dev interface up

MAC が偽装されたか確認したい場合は、ip link show interface をもう一度実行して 'link/ether' の値を確認してください。偽装されていれば、'link/ether' が変更したアドレスになっているはずです。

方法 2: macchanger

macchanger (別名 GNU MAC Changer) を使用する方法です。特定のベンダーに一致するように変更したり、完全にランダムにするなど、様々な機能が備わっています。

公式リポジトリ から macchanger パッケージを インストール してください。

偽装はインターフェイスごとに行うので、以下に記載されているコマンドを使うときは interfaceネットワークインターフェイス を指定します。

MAC アドレスを完全にランダムなアドレスに偽装するには:

# macchanger -r interface

ベンダーコードを除いてアドレスをランダム化するには (MAC アドレスをチェックしていた場合に、同じベンダーのアドレスとして登録する)、次のコマンドを実行:

# macchanger -e interface

MAC アドレスを特定の値に変更するには、次を実行:

# macchanger --mac=XX:XX:XX:XX:XX:XX interface

XX:XX:XX:XX:XX:XX は変更後の MAC に置き換えて下さい。

最後に、MAC アドレスをハードウェアの値に元に戻すには:

# macchanger -p interface
ノート: デバイスを使用している (何らかの方法で接続されていたりインターフェイスが立ち上がっている) 間に MAC アドレスを変更することはできません。

自動

方法 1: systemd-networkd

systemd-networkdlink ファイル による MAC アドレスの偽装をサポートしています (詳しくは systemd.link(5) を参照):

/etc/systemd/network/00-default.link
[Match]
MACAddress=permanent MAC

[Link]
MACAddress=spoofed MAC
NamePolicy=kernel database onboard slot path

起動毎に MAC アドレスをランダムに設定したい場合は、MACAddress=spoofed MACMACAddressPolicy=random に置き換えてください。

方法 2: systemd-udevd

Udevudev ルールを書く ことによる MAC アドレスの偽装をサポートしています。ATTR によって udev は適当なデバイスを見つけてその MAC アドレスを変更するので、address オプションは両方ともカスタマイズしてください:

/etc/udev/rules.d/75-mac-spoof.rules
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="02:03:09:xx:xx:xx", RUN+="/usr/bin/ip link set dev $name address c8:0a:a9:xx:xx:xx"

方法 3: systemd ユニット

ユニットの作成

以下は systemd のユニットを使って MAC アドレスを起動時に変更する2つの例です。片方は ip を使って固定 MAC を設定し、もう片方は macchanger を使ってランダムな MAC アドレスを指定します。Netctl, NetworkManager, systemd-networkd, dhcpcd などのネットワークマネージャのサービスが起動する前に MAC が変更されるように systemd の network-pre.target を使っています。

iproute2

あらかじめ決めておいた MAC アドレスに設定する systemd ユニット:

/etc/systemd/system/macspoof@.service
[Unit]
Description=MAC Address Change %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i address 36:aa:88:c8:75:3a
ExecStart=/usr/bin/ip link set dev %i up

[Install]
WantedBy=multi-user.target
macchanger

元の NIC ベンダーコードは維持しつつランダムなアドレスを設定する systemd ユニット。macchangerインストール が必須です:

/etc/systemd/system/macspoof@.service
[Unit]
Description=macchanger 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

完全にランダムなアドレスは -r オプションを使うことで設定できます。#方法_2: macchanger を参照。

サービスの有効化

サービスの名前に適当なネットワークインターフェイス (例: eth0) を追加してサービスを有効化してください:

# systemctl enable macspoof@eth0.service

適切な順番でサービスを再起動・停止・起動してください。ネットワークを管理している場合は、ルーターの固定アドレスまたは DHCP アドレステーブルを確認して、偽装された MAC がルーターによって認識されているか確認してください。

方法 4: netctl インターフェイス

netctl フックを使うことで特定のネットワークインターフェイスで netctl プロファイルが起動するときにコマンドを実行することができます。interface は適宜置き換えてください:

/etc/netctl/interfaces/interface
#!/usr/bin/env sh
/usr/bin/macchanger -r interface

スクリプトに実行可能属性を付与:

chmod +x /etc/netctl/interfaces/interface

ソース: akendo.eu

方法 5: NetworkManager

NetworkManager#MAC アドレスのランダム化の設定 を見てください。

トラブルシューティング

DHCPv4 ネットワークへの接続が失敗する

NetworkManager のデフォルトである dhcpcd を使っていて DHCPv4 ネットワークに接続できない場合、dhcpcd の設定を変更 してリースを取得するようにしてみてください。

参照