Saturday, April 18, 2009

Как узнать MAC адрес сетевой карты: смена МАК адреса в Linux

Иногда может потребоваться узнать или изменить MAC адрес сетевой карты в Linux, например, если он используется для авторизации доступа в интернет. Изменить MAC-адрес очень просто, для этого существуют специальные системные файлы, которые нужно немного подправить. Это довольно простая, хотя по первому разу не очевидная, процедура.


Временная смена MAC-адреса в Linux
Для этого набираем
sudo ifconfig eth0 hw ether xx:xx:Xx:xx
при этом MAC-адрес изменится и будет оставаться таковым до перезагрузки. Если нужно сделать так, чтобы MAC-адрес был таким всегда, нужно приударить в соответствующий бубен.


Постоянный изменённый MAC-адрес
в Linux
Для этого идём в /etc/network/if-pre-up.d/ и создаём там от рута файл, например имени pre-up.

В этот файл пишем следующее:
#! /bin/sh
ifconfig eth0 hw ether 00:00:00:00
Нули заменить своим мак-адресом. Чтобы изменения вступили сразу же, без перезагрузки, даём команду:
/etc/init.d/networking restart
При этом в первый раз (особенно при работающем интерфейсе) может вылезти такое:

# /etc/init.d/networking restart
Setting up IP spoofing protection: rp_filter.
Reconfiguring network interfaces...SIOCDELRT: No such process
ifup: interface lo already configured
SIOCSIFHWADDR: Device or resource busy
run-parts: /etc/network/if-pre-up.d/pre-up exited with return code 1
done.
Повторяем команду, на этот раз всё должно быть без шума и пыли:
notebeast:/home/beast# /etc/init.d/networking restart
Setting up IP spoofing protection: rp_filter.
Reconfiguring network interfaces...ifup: interface lo already configured
done.
Всё, MAC изменён и останется таковым и после перезагрузки.


Узнать MAC-адрес сетевой карты
в Linux
Чтобы узнать текущий MAC-адрес просто: набираем
sudo ifconfig
И видим нечто вроде:
eth0 Link encap:Ethernet HWaddr 00:0A:E4:53:AA:2D
inet addr:10.26.49.77 Bcast:10.26.63.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:208554 errors:0 dropped:0 overruns:0 frame:0
TX packets:125071 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:40664531 (38.7 MiB) TX bytes:45919980 (43.7 MiB)
Interrupt:21 Base address:0x4c00

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18511 errors:0 dropped:0 overruns:0 frame:0
TX packets:18511 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:537155 (524.5 KiB) TX bytes:537155 (524.5 KiB)

Красное полужирное выделение и есть MAC-адрес (в данном случае, сетевой карты моего ноутбука).

И ещё несколько способов смены МАК-адреса от уважаемых комментаторов
ulmen

Наиболее мне понравилось как подобное реализовано в Gentoo. Вот кусок содержимаго файла /etc/conf.d/net


mac_eth0="00:50:8D:63:41:DE"
config_eth0=( "192.168.100.37 netmask 255.255.252.0" )
routes_eth0=(
"default via 192.168.100.1"
)

Anonymous
А зачем выносить скрипт? У меня запись сразу в /etc/network/interfaces :
pre-up ifconfig eth0 hw ether 00:00:00:00:00:00
GiNeR
Вариантов много. Это ж Линукс :)
Если читать man interfaces, то результат будет следующий:

iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
hwaddress ether xxxxxxxxxxxx

Anonymous
У меня hwaddress ether xxxxxxxxxxxx не работает по неизвестнымпричинам. Но я не удивлен, у меня долго не работал replacedefaultroute, пока не исправили :)
virens: Кстати, у меня на ноутбуке тоже это не работает. Поэтому, собственно, и задался выяснением этого вопроса. Теперь вариантов много :-)
jmv

У меня в interfaces:
auto eth1
iface eth1 inet dhcp
hwaddress ether 00:00:00:00:00:00

И все работает.


trantor
В Debian всё проще: в описание интерфейса в /etc/network/interfaces добавляем:
hwaddress ether XX:XX:XX:XX:XX:XX

Замечания
Этот пост может быть полезен абонентам московской сети Центел / Кверти (qwerty) и Корветт, чтобы лишний раз не пытаться пробиться в службу тех.поддержки, а решить проблему самостоятельно.
Копируете статью - поставьте ссылку на оригинал!

Михаил Конник


No comments: