MAC 地址欺騙 - Arch Linux 中文维基

跳至內容

# MAC 地址欺騙

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 MAC address spoofing，最近一次同步於 2018-05-11，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

這篇文章文章將會介紹幾個修改 MAC 地址的方法。

## 手動更改

有兩種方法可以修改 MAC 地址：安裝並配置 iproute2包 或 macchanger包。下面來說明一下這兩種方法。

### iproute2

首先，你可以用下面的命令來檢查當前的 MAC 地址

    # ip link show interface

`interface` 是你的網卡的名字

我們現在要關注的是跟在「link/ether」後面的那一串帶冒號的十六進制字節。它看起來可能是這樣：

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

修改 MAC 地址的第一步是禁用網卡，它可以通過下面的命令來完成：

    # ip link set dev interface down

接下來，我們要開始修改我們的 MAC 地址。只要每個字節都是十六進制值就可以，但有的網絡運營商可能會拒絕為不正確的 MAC 分配 IP 地址。所以，除非你是你連接的網絡的管理員，否則你應該使用真實的 MAC 地址前綴（一般是前三個字節），剩下三個字節可以隨便設置（只要是十六進制值）。如果想了解更多內容，請訪問 Wikipedia:Organizationally unique identifier.

要更改 MAC 地址，我們要運行這個命令：

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

這6位 `XX:XX:XX:XX:XX:XX` 就是你要設置的 MAC 地址。

最後一步是重新啟用網卡，輸入這行命令：

    # ip link set dev interface up

如果你想驗證你的 MAC 地址是否成功修改，只需要再次運行 `ip link show interface` ，然後檢查「link/ether」後面的值。如果成功修改，「link/ether」後面應該跟著你剛剛設置的 MAC 地址。

### macchanger

另一個方法是通過 macchanger包 (a.k.a., the GNU MAC Changer)。它有一些方便的功能，比如改變 MAC 地址以匹配某個運營商，或者完全隨機化地址。

從官方倉庫裡安裝這個包 macchanger包 .

由於更改 MAC 地址基於網卡，我們需要用網卡名來替換每行命令中的 `interface` 。

用這行命令我們可以將 MAC 地址完全隨機化：

    # macchanger -r interface

要隨機化當前 MAC 地址的後三位字節 (這樣運營商會認為這個 MAC 地址是註冊過的 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 地址的時候，設備將無法使用（無論是以任何方式連接，或是試圖啟用這個設備）

## 自動更改

### systemd-networkd

systemd-networkd 支持通過 link files 設置 MAC 地址（細節請查看 systemd.link(5)）.

要設置一個靜態 MAC 地址，修改這個文件為：

    /etc/systemd/network/00-default.link

    [Match]
    MACAddress=原始 MAC

    [Link]
    MACAddress=更改後的 MAC
    NamePolicy=kernel database onboard slot path

如要在每次啟動時隨機化 MAC 地址，把 `MACAddress=更改後的 MAC` 改成 `MACAddressPolicy=random`。

### systemd-udevd

udev 允許你創建 udev 規則 來更改 MAC 地址。使用 `address` 參數來用原始 MAC 地址來匹配設備，然後用 ip 命令來更改 MAC 地址:

    /etc/udev/rules.d/75-mac-spoof.rules

    ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="XX:XX:XX:XX:XX:XX", RUN+="/usr/bin/ip link set dev %k address YY:YY:YY:YY:YY:YY"

其中，`XX:XX:XX:XX:XX:XX` 是原始 MAC 地址，`YY:YY:YY:YY:YY:YY` 是目標 MAC 地址

### systemd 單元

#### 創建單元

下面寫了兩個用 Systemd 來在啟動時更改 MAC 地址的例子，其中一個用 ip 來設置靜態 MAC，另一個用 macchanger 來設置隨機 MAC。systemd 的 `network-pre.target` 可以確保 MAC 地址在網絡管理器如 netctl、NetworkManager、systemd-networkd 或 dhcpcd 啟動之前就已經更改好。

##### 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

設置隨機 MAC 地址的 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` 選項來使 MAC 地址完全隨機化，參見 #macchanger。

#### 啟用服務

將所需的網絡接口 (如：`eth0`) 附加到服務名稱後面 (如`macspoof@eth0.service`)，然後啟用服務.

重啟，或者按照適當的順序重啟依賴的服務。如果你是區域網管理員，請通過路由器檢查其中的靜態或 DHCP 地址表，驗證 MAC 是否已成功修改。

### netctl 接口

你可以使用 netctl hook 來在每次啟動或重啟網卡的時候運行特定命令。把 `interface` 替換為你的網絡接口:

    /etc/netctl/interfaces/interface

    #!/usr/bin/env sh
    /usr/bin/macchanger -r interface

使腳本可執行：

    chmod +x /etc/netctl/interfaces/interface

來源: akendo.eu

### NetworkManager

參見 NetworkManager#Configuring MAC address randomization.

## 故障排除

### 連接到 DHCPv4 網絡失敗

如果您無法連接到 DHCPv4網絡，而且您使用的是 NetworkManager 默認的 dhcpcd，你可能需要修改 dhcpd 配置來續租。

## 另見

- Wikipedia:MAC spoofing
- Macchanger GitHub page
- DebianAdmin 上的文章 with more macchanger options

分類：​

- 網絡
- 安全

MAC 地址欺騙
新增話題