Автор: Алексей Федорчук
19 июля 2005 г
Эта заметка была написана в 2005 году. Нынче, в связи с нетбуками и неттопами, она неожиданно вновь оказалась актуальной. Почему и размещается здесь.
В большинстве домашних и городских сетей используется доступ через DHCP, с привязкой внутреннего IP-адреса к MAC-адресу сетевой карты. Что само по себе не хорошо и не плохо — ибо в большинстве случаев пользователя никак не касается: при смене машины (и сетевой карты) достаточно позвонить провайдеру для перепривязки. Тем не менее, можно представить себе минимум две ситуации, когда смена MAC-адреса пользователем становится необходимостью — без всякого злого умысла:
- потребность выходить в сеть попеременно с двух машин, при отсутствии возможности (или желания) налаживать сеть внутреннюю;
- наличие двух операционок и двух сетевых карт, каждая из которых поддерживается только одной операционкой.
Не так невероятно, как кажется. Первая причина может быть обусловлена еще и тем, что провайдеры, предоставляющие безлимитный доступ, без восторга относятся к тому, что пользователь качает сразу с двух машин — хотя как это может повредить при соответствующим образом обрезанной скорости (а дешевые безлимитные тарифы всегда обрезаны), я не очень представляю.
А во второй ситуации я оказался недавно при покупке новой машины: встроенная сетевая от чипсета nForce250 (не Ultra) прекрасно поддерживалась Linux’ом (при должным образом собранном ядре), но категорически не виделась ни во FreeBSD, ни в DragonFly. С извлеченной же из загашников NE2000-совместимой карточкой неизвестного (подозреваю, очень китайского) генезиса ситуация была почти обратная: она нормально опознавалась в DragonFly, но в Linux’е… не то чтобы совсем не работала, но время от времени куда-то девалась, так что и назвать это работой язык тоже не поворачивался.
Конечно, все эти проблемы были решаемы (и в конечном счете решены), но в тот момент мне требовался доступ в Интернет — и немедленно (дело происходило в выходные дни, что усложняло ситуацию). И я вспомнил о возможности подмены MAC-адреса, предоставляемой волшебной палочкой сетевика-POSIX’ивиста — утилитой ifconfig
.
Начнем с Linux’а — проверялось на дистрибутивах CRUX и Archlinux, при как бы настроенной сети. Как бы — потому что все, касающееся старта DHCP, было прописано в конфигах должным образом. Но поскольку MAC-адрес карты не совпадал с зафиксированным у провайдера, старт этот при загрузке системы завершался ошибкой. В чем легко было убедиться, запустив ifconfig
без параметров.
Оказалось, что во исправление положения всего то требовалась простая команда (почерпнуто из man ifconfig
):
$ ifconfig eth0 hw ether 00:00:00:00:00:00
где eth0
— имя сетевого интерфейса, hw
(от hardware) — опция, предписывающая сменить «железный» идентификатор карты, ether
— указание на класс сетевых устройств, а нули заменяются реальным MAC-адресом. После чего оставалось только перезапустить dhcp-демона. Как — зависит от дистрибутива. В Archlinux (как и в CRUX) подходящим способом оказался такой:
$ /etc/rc.d/networks restart
А для того, чтобы не проделывать всю эту процедуру после каждой перезагрузки, достаточно прописать приведенную выше команду ifconfig с соответствующими параметрами в какой-либо из подходящих стартовых скриптов, отрабатываемых до запуска dhcp-демона. В моем случае подходящим оказался тот же /etc/rc.d/networks
, отвечающий в Archlinux (и в CRUX) за поднятие сети вообще.
В BSD-системах — все чуть-чуть иначе: различия связаны и с именами сетевых интерфейсов, и с форматом команды ifconfig
, и с особенностями скриптов инициализации. Для начала — там не стандартного имени интерфейса, eth#, а есть множество интерфейсных устройств, имена которых более-менее коррелируют с используемым в сетевой карте чипом. В моем случае (как я уже говорил, для BSD использовалась карта из семейства NE2000), имя ему было — ed0
. Далее, опции hw
в BSD’шном варианте ifconfig
нет — достаточно указать класс устройств и собственно адрес. В результате команда приобретает такую форму:
$ ifconfig ed0 ether 00:00:00:00:00:00
После чего опять же перезапуск dhcp-службы. Что делается так:
$ /etc/rc.d/dhclient restart
Ну и увековечить переопределение MAC-адреса можно в том же файле — дописав в самое его начало приведенную выше строку с командой ifconfig
.
>man ifcongif
опечатка
Да и что с версткой? полезли html-теги!
У меня была проблема с провайдером при подключении к их сети с другого оборудования http://adw0rd.ru/2009/mpd5-vpn-client/
2 adw0rd
спасибо, поправил
>спасибо, поправил
вроде еще вы забыли кат (<!—more—>)
Заметка полезная, однак считаю, что нонче в центре домашней сети для раздачи интернета и всякого прочего вай-фая, должен стоять маршрутизатор типа asus wl5xx. В подобных рутерах мак wan-интерфейса — опция конфигурирования и даже через веб-интерфейс : )
Можно конечно и ifconfig-ом в стартовых скриптах этого же маршрутизатора прописать — тут на любителя.
2 dant
вот обзаведусь на следующей неделе вайфаем… тогда и буду на уровне «нонче в домашней сети»