# MAC address spoofing (Русский)

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Template:TranslationStatus. Дата последней синхронизации: 25 февраля 2017. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

В этой статье описываются несколько способов подмены адреса Media Access Control (MAC).

## Вручную

Существует два способа подмены MAC-адреса: используя iproute2 (установленный по умолчанию), и с помощью macchanger (доступный в официальных репозиториях). Оба способа изложены ниже.

### Способ 1: iproute2

Сперва проверьте ваш текущий MAC-адрес при помощи команды:

    # ip link show интерфейс

где `интерфейс` — имя вашего сетевого интерфейса.

Необходимая нам в данный момент информация расположена в строке, начинающейся со слов "link/ether", за которыми следует 6-битный номер. Скорее всего, у вас это будет выглядеть примерно так:

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

Первый шаг для подмены MAC-адреса — отключить интерфейс. Это можно сделать, выполнив команду:

    # ip link set dev интерфейс down

Теперь мы переходим собственно к подмене нашего MAC-адреса. Подойдет любое шестнадцатеричное число, однако, некоторые сети могут отказывать в присвоении IP-адресов клиентам, чьи MAC-адреса не соответствуют тем, что устанавливают поставщики оборудования. Поэтому, если вы не контролируете сеть(и), к которой вы подключаетесь, желательно использовать реальный префикс MAC (первые три байта), а для для оставшихся трех использовать случайное значение. Для дополнительной информации пожалуйста прочтите Wikipedia:ru:Уникальный идентификатор организации

Чтобы сменить MAC, необходимо выполнить команду:

    # ip link set dev интерфейс address XX:XX:XX:XX:XX:XX

где вместо `XX:XX:XX:XX:XX:XX` необходимо указать любое 6-байтное значение.

Последний шаг — включить интерфейс обратно. Это можно сделать, выполнив команду:

    # ip link set dev интерфейс up

Если вы хотите проверить, произошла ли подмена MAC-адреса, просто еще раз запустите `ip link show интерфейс` и проверьте значение "link/ether". Если подмена сработала, "link/ether" будет иметь то значение, которое вы ему присвоили.

### Способ 2: macchanger

В этом способе используется пакет macchanger (GNU MAC Changer). Он предоставляет множество функций, таких как смена адреса для соответствия конкретному поставщику и присвоение полностью случайного адреса.

Установите пакет macchanger из официальных репозиториев.

Подмена осуществляется для конкретного интерфейса: в каждой из следующих команд заменяйте `интерфейс` на имя вашего сетевого интерфейса.

Вы можете сгенерировать полностью случайный адрес:

    # macchanger -r интерфейс

А чтобы изменить только байты, которые являются уникальными для конкретного устройства (благодаря чему при проверке MAC-адрес будет по-прежнему считаться принадлежащим тому же производителю), необходимо выполнить:

    # macchanger -e интерфейс

Для установки конкретного MAC-адреса выполните:

    # macchanger --mac=XX:XX:XX:XX:XX:XX интерфейс

где `XX:XX:XX:XX:XX:XX` — MAC, который вы хотите присвоить.

Наконец, для восстановления исходного значения MAC-адреса:

    # macchanger -p интерфейс

Примечание: Пока будет происходить смена МАС-адреса, вы не сможете использовать устройство вне зависимости от способа подключения и того, включен ли сетевой интерфейс.

## Автоматически

### Способ 1: systemd-networkd

systemd-networkd поддерживает подмену MAC-адреса при помощи файлов link (смотрите `man systemd.link` для получения дополнительной информации).

Для подмены статическим адресом:

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

    [Match]
    MACAddress=оригинальный MAC

    [Link]
    MACAddress=новый MAC
    NamePolicy=kernel database onboard slot path

Для случайной генерации MAC-адреса при каждой загрузке, установите `MACAddressPolicy=random` вместо `MACAddress=новый MAC`.

### Способ 2: systemd-udevd

Udev позволяет подменять MAC-адреса в файлах правил. Атрибут `address` дает возможность udev находить правильное устройство по MAС-адресу производителя, а затем выполняется команда ip для смены адреса:

    /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` — новый.

### Способ 3: юнит systemd

#### Создание юнита

Ниже вы найдете пару примеров юнитов systemd для изменения MAC-адреса при загрузе системы: первый устанавливает указанный MAC, используя утилиту ip, а второй использует macchanger для присвоения случайного адреса. Зависимость `network-pre.target` используется для того, чтобы смена MAC происходила перед тем, как запустятся сетевые программы вроде netctl, NetworkManager, systemd-networkd или dhcpcd.

##### iproute2

Юнит systemd, устанавливающий указанный MAC-адрес:

    /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

Юнит 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` вместо `-e` (смотрите также #Способ 2: macchanger).

#### Включение службы

Включите службу, добавив требуемое имя интерфейса (например, `eth0`) к:

    # systemctl enable macspoof@eth0.service

Перезагрузитесь либо перезапустите необходимые службы в правильном порядке.If you are in control of your network, verify that the spoofed MAC has been picked up by your router by examining the static, or DHCP address tables within the router.

### Способ 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

Если вы не можете подключиться к сети DHCPv4 и используете dhcpcd, который по умолчанию используется NetworkManager, необходимо изменить настройки dhcpcd, чтобы арендовать адрес.

## Смотрите также

- Страница Macchanger на GitHub
- Статья на debianadmin.com с большим количеством опций для macchanger

Categories:

- Networking (Русский)
- Security (Русский)
- Русский