Я пытаюсь изменить MAC-адрес своей сетевой карты (универсальной карты, использующей набор микросхем Intel). система, на которой работает FreeBSD (FREEBSD 11.1-RELEASE-p7).

Я получаю следующий вывод при ifconfig:

egbo: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether NN:NN:NN:NN:NN:NN
hwaddr NN:NN:NN:NN:NN:NN
inet6 aann::aann:aann....
nd6 ...
media: Ethernet autoselect
status: no carrier

Я пытался:

ifconfig egb0 down
ifconfig egb0 ether XX:XX:XX:XX:XX:XX
ifconfig egb0 up

Это изменяет только указанный «эфирный» MAC-адрес, но не MAC-адрес HWADDR.

Я также попробовал:

ifconfig egb0 down
ifconfig egb0 lladdrr XX:XX:XX:XX:XX:XX
ifconfig egb0 up

Это (также) изменяет только ETHER адрес , а не адрес HWADDR

Мне нужно клонировать, потому что я изменил свой маршрутизатор, и мой провайдер отказывается зарегистрировать его, поскольку он не «один из них»!

2 ответа2

3

В 11.2-STABLE я делаю это, создавая файл /etc/start_if.iface_name в моем случае это /etc/start_if.bge0 который содержит

ifconfig $1 link de:ad:be:ef:ca:fe

или любой другой MAC-адрес, который вам нужен.

/etc/start_if.bge0 вызывается из функции /etc/network.subr ifscript_up . Конкретное имя вызываемого интерфейса передается в ifscript_up как $1 поэтому $1 в /etc/start_if.bge0 работает для передачи имени интерфейса в ifconfig.

После запуска системы bge0 выглядит так:

$ ifconfig bge0
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c019b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether de:ad:be:ef:ca:fe
        hwaddr f0:1f:af:e3:59:fa
        inet 10.16.231.24 netmask 0xffffffc0 broadcast 10.16.231.63
        inet 10.16.231.25 netmask 0xffffffff broadcast 10.16.231.25
        inet 10.16.231.50 netmask 0xffffffff broadcast 10.16.231.50
        inet 10.16.231.49 netmask 0xffffffff broadcast 10.16.231.49
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

и моя таблица ARP выглядит так:

? (10.16.231.1) at 00:00:0c:9f:f0:e7 on bge0 expires in 1033 seconds [ethernet]
? (10.16.231.25) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]
? (10.16.231.24) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]
? (10.16.231.50) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]
? (10.16.231.49) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]

Если вы столкнулись с трудностями, проверьте основы. Команды ниже взяты из системы, которая имеет сетевой интерфейс igb, как и ваша.

Какие интерфейсы присутствуют?

# ifconfig -l
igb0 igb1 lo0

Каков статус-кво желаемого интерфейса?

# ifconfig igb0
igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
    ether ac:1f:6b:45:b0:ac
    hwaddr ac:1f:6b:45:b0:ac
    inet 10.10.176.76 netmask 0xffffff00 broadcast 10.10.176.255 
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect (1000baseT <full-duplex>)
    status: active

Каково точное содержание вашего скрипта start_if?

# ls -l /etc/start_if.igb0 
-rw-r--r--  1 root  wheel  228 Feb 14 12:43 /etc/start_if.igb0
# cat /etc/start_if.igb0
(
date
echo "Attempting 'ifconfig $1 link de:ad:be:ef:ca:fe'"
if ifconfig $1 link de:ad:be:ef:ca:fe; then
        echo "ifconfig succeeded"
else
        echo "ifconfig failed with exit code $?"
fi
) >> /tmp/start_if.$1.log 2>&1

Если ваш скрипт start_if включает в себя подробную отладку, что он показывает?

# cat /tmp/start_if.igb0.log
Thu Feb 14 12:46:16 PST 2019
Attempting 'ifconfig igb0 link de:ad:be:ef:ca:fe'
ifconfig succeeded

Что произойдет, если вы запустите команду вручную?

Помните, что выполнение этого по удаленному сетевому соединению (например, через ssh) может привести к потере соединения при изменении MAC-адреса.

# ifconfig ibg0 link de:ad:be:ef:ca:fe
ifconfig: interface ibg0 does not exist

Ага! Вы опечатали имя интерфейса. :) Попробуйте снова. Правильный ответ должен быть тихим успехом от ifconfig:

# ifconfig igb0 link de:ad:be:ef:ca:fe
#

Как только вы сможете запустить ifconfig без ошибок, как будут выглядеть ifconfig и таблица arp после этого?

# ifconfig igb0
igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=6403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
        ether de:ad:be:ef:ca:fe
        hwaddr ac:1f:6b:45:b0:ac
        inet 10.10.176.76 netmask 0xffffff00 broadcast 10.10.176.255 
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
# arp -an
? (10.10.176.76) at de:ad:be:ef:ca:fe on igb0 permanent [ethernet]
? (10.10.176.137) at 18:03:73:34:39:66 on igb0 expires in 1170 seconds [ethernet]
? (10.10.176.1) at 00:00:0c:07:ac:03 on igb0 expires in 1050 seconds [ethernet]

Если все это не помогло, отредактируйте ваш вопрос, включив в него дополнительные, перечисленные выше конкретные шаги, которые вы предприняли, и результаты, которые вы получите. ПОЖАЛУЙСТА, скопируйте и вставьте свои результаты, чтобы мы не тратили время на устранение типографских ошибок, допущенных при расшифровке вашего ввода и вывода.

-1

Вы не можете изменить HWADDR. Это закодировано в прошивке. Установите необходимый MAC-адрес, прежде чем запустить интерфейс. Интерфейс должен сообщать об изменении MAC другим маршрутизаторам. Попробуй это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .