Как изменить mac-адрес сетевого интерфейса во FreeBSD
Обновлено:
Опубликовано:
Используемые термины: mac-адрес, FreeBSD.
Определение имени сетевого интерфейса
Сначала необходимо определить имя сетевого интерфейса, для которого мы хотим изменить MAC.
Выполняем команду:
ifconfig -a
Пример ответа:
igc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4e527bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,NOMAP>
ether a8:a1:59:4d:2b:12
inet 192.168.0.10 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::aaa1:59ff:fe4d:2b12%igc0 prefixlen 64 scopeid 0x1
media: Ethernet autoselect (2500Base-T <full-duplex>)
status: active
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
В нашем примере будет использовать интерфейс igc0. Вам необходимо в командах использовать свой.
Смена MAC адреса
Рассмотрим два варианта изменения адреса:
- Разовое из командной строки.
- Постоянное в конфигурационном файле rc.conf.
Из командной строки
Изменение таким образом mac-адреса потеряет действие после перезагрузки системы:
ifconfig igc0 ether 00:50:56:8a:4f:72
* где igc0 — сетевой ethernet адаптер; 00:50:56:8a:4f:72 — mac-адрес, который будет назначен.
В файле rc.conf
Чтобы сохранить настройку после перезагрузки, открываем на редактирование следующий файл:
ee /etc/rc.conf
и дописать (выделено желтым):
ifconfig_igc0="ether 00:50:56:8a:4f:72 inet 192.168.0.10/24"
* где igc0 — имя сетевого адаптера; 00:50:56:8a:4f:72 — mac-адрес, который будет назначен. Очень важно, чтобы mac-адрес шел перед inet.
Если мы получаем адрес по DHCP:
ifconfig_igc0="ether 00:50:56:8a:4f:72 DHCP"
Или, если настройка будет капризничать:
hwaddr_igc0="00:50:56:8a:4f:72"
ifconfig_igc0="DHCP"
Если мы хотим, чтобы настройки применились перезагружаем сервер или вводим команду из первого способа:
ifconfig igc0 ether 00:50:56:8a:4f:72
Нюансы
Рассмотрим некоторые тонкости, с которыми можем столкнуться при смене физического адреса.
ARP кэш
После смены MAC-адреса, другие устройства в сети (шлюзы, коммутаторы) могут продолжать слать пакеты на старый адрес еще некоторое время (пока не истечет ARP-кэш). Рекомендуется очистить локальную таблицу ARP для шлюза и пингануть его, чтобы обновить таблицы соседей. Для этого выполняем команды:
arp -d 192.168.0.1
ping -c 3 192.168.0.1
* где 192.168.0.1 — адрес шлюза.
IPv6
При смене MAC-адреса локальный IPv6-адрес (Link-Local, начинающийся на fe80::) автоматически изменится, так как он вычисляется на основе MAC-адреса.
Если у вас настроены фаервольные правила в ipfw или pf, привязанные к старому fe80::..., их нужно будет обновить.
Если вы столкнетесь с тем, что IPv6 адрес не изменился после смены MAC, это означает, что в системе включены Privacy Extensions (RFC 4941), которые генерируют случайные адреса вместо привязки к MAC. Однако для серверов стандартное поведение (EUI-64) остается наиболее вероятным сценарием.