Зачем оно надо.
Ну кроме игр в крэкеров и экспериментов “а что если” есть и реальная необходимость: некоторые провайдеры при авторизации пользователя проверяют и мак, и если вы всю жизнь живёте с одной сетевушкой – всё нормально, но реалии жизни говорят об обратном…
Немного теории
Эту часть можно спокойно пропустить и читать дальше.
Канальный уровень (Data Link layer)
Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Полученные с физического уровня данные он упаковывает в кадры данных, проверяет на целостность, если нужно исправляет ошибки и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня — MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают коммутаторы, мосты.
В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровня между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS.
К сведению:
Как видно из части “Немного теории” mac-адрес это РЕАЛЬНО адрес, и для работоспособности сети не рекомендуется использовать в ней один мак на разных машинах. К чему это приводит? Ну как минимум эти машины друг друга не “видят”.
Как можно было уже заметить(из “зачем оно надо”) mac-адрес определяет не операционная система, а сетевая карта. Мак прошит на ней.
Стоит сказать, что маки выбираются очень хитрым образом, так что их совпадение в одной сети очень мало. Подробнее об алгоритме можно почитать в Интернете
Хотя мак и прошит на сетевухе его можно заменить программными методами.
Итак
Самым простым способом, пожалуй будет написать в консоли
sudo su # получаем права суперюзера
ifconfig eth0 down # пока отключим интерфейс
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx # собственно меняем мак
ifconfig eth0 up # поднимаем интерфейс
exit # выходим из под супер пользователя
ifconfig # любуемся
где xx:xx:xx:xx:xx:xx – ваш мак-адрес.
Сам же использую следующий способ:
В файле /etc/network/interfaces добавляем/меняем
iface eth0 inet static
address *.*.*.* # ваш ip адресс
netmask *.*.*.* # маска вашей сети
hwaddress ether xx:xx:xx:xx:xx:xx # желаемый мак
На http://mydebianblog.blogspot.com такое прочитал: в 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"
)
Сам не проверял.