В заметке "Ethernet device naming (http://direct2dell.com/one2one/archive/2007/07/30/22883.aspx)" представлено три способа фиксации номеров интерфейсов сетевых карт в Linux, с приведением порядка их нумерации в соответствие с BIOS.URL: http://direct2dell.com/one2one/archive/2007/07/30/22883.aspx
Новость: http://www.opennet.me/opennews/art.shtml?num=11605
Не могу представить зачем это может понадобиться :(
Например, на собеседовании скажут: "А теперь покажи что-нибудь такое-эдакое :)". Если в kernel включат.
очень простой момент. wifi в ноуте. если оно включено при старте - оно eth0, если выключено было (для сохранения батарей) и включено позже - eth1.
настройки как будем привязывать ? ;)
udev ?
не работает :)
через alias в modprobe.conf тоже.
пока единственная рабочая конфигурация - это привязка к mac.
udev позволяет к макадресу привязывать, к драйверу. у меня дома таки и сделано.
как это udev позволяет привязываться к драйверу?
в правилах: DRIVER=
если сетевые на разных чипах
Ага, и пришли к тому, что в других юниксах от рождения - именования интерфейса в зависимости от драйвера.
Это не совсем то, udev позволяет назначать произвольные имена.
FreeBSD тоже умеет. причем ой как давно.....
Смотри начало треда
>Ага, и пришли к тому, что в других юниксах от рождения
>- именования интерфейса в зависимости от драйвера.Отнюдь. Если когда-нить сталкивались с несколькими интерфейсами на одном драйвере, то могли бы и сами догадаться, в чём разница.
вот вот именно три RTL на тачке и всё - труба
методом "научного тыка" выясняешь какой где и когда :)
ifrename и /etc/iftab, например.
в дебиане не нашел не ifrename не iftab
В Etch и так все привязывается.
>В Etch и так все привязывается.Спасибо тебе, добрый человек - то что нужно было.
cat /etc/network/if-pre-up.d/nameif#!/bin/sh
PATH=/sbin
nameif -c /etc/mactab
cat /etc/mactab
eth0 00:02:44:4E:A6:29
eth1 00:05:1C:0A:AF:03И все.
ifrename - depriated
а разве макадреса стали меняться при старте карточки теперь?
а разве мак адреса постоянно? а если сгорит сетевуха? а если при этом машина за 100 км от тебя? и там сидит человек, кторый может воткнуть новую сетевуху, но ничего больше не может???? и что ты его будешь просить бутать тачку, пока юдеву не взблагорассудится вернуть сетевые интерфейсы в порядок??
мак адреса не меняются но при старте системы был глюк или фича, когда две одинаковые карты ( драйвер 8139too) при перезагрузке менялись именами, eth0 -> eth1, eth1 -> eth0. И так оно свопалось местами рпз через раз. Решилось созданием файлика 10-local.rules:
KERNEL=="eth*", SYSFS{address}=="00:50:8b:0b:6e:43", NAME="eth0"
KERNEL=="eth*", SYSFS{address}=="00:e0:40:5b:bb:32", NAME="eth1"причем mac нужно писать маленькими буквами и цифрами иначе долго будете искать проблему.
>мак адреса не меняются но при старте системы был глюк или фича, когда две одинаковые карты
>( драйвер 8139too) при перезагрузке менялись именамиЭто также бывает при съездах в коде ACPI ("ядро обновил") или его включении/отключении, перешивке BIOS и вроде бы ещё когда-то. При этом может меняться порядок обнаружения PCI-устройств.
Насчёт "маки не меняются" -- мож кому пригодится, но на староватом forcedeth и чём-то вроде MCP54 бывало так, что MAC прыгал случайным образом. Будто драйвер не из той области памяти что-то забирал для него в итоге. На текущем всё в порядке.
nameif опять же, перечислил таблицу имен интерфейсов и их МАСов в /etc/mactab и спи спокойно, у меня так и сделано.Столкнулся с проблемой, что PPPoE не срабатывало, оказалось что интерфейс на котором модем плавал eth3 <-> eth4 и PPPoE соединение пыталось установиться совсем с другого интерфейса, соответственно обламывалось. Как прописал статически имена, так плавать перестало, даже при смене ядра все на месте.
Рецепт был в свое время взят отсюда, с www.opennet.ru
полезная фишка, но пока сыровата.
Мне в Линуксе это кстати всегда не нравилось. во FreeBSD интерфейс называется именем драйвера, то есть фактически имя интерфейса есть короткое название сетевухи, xl для 3Ком, em для Intel, rl для риалтек и так далее. ИМХО гораздо нагляднее без лишних подкручиваний.
>Мне в Линуксе это кстати всегда не нравилось. во FreeBSD интерфейс называется
>именем драйвера, то есть фактически имя интерфейса есть короткое название сетевухи,
>xl для 3Ком, em для Intel, rl для риалтек и так
>далее. ИМХО гораздо нагляднее без лишних подкручиваний.Никогда не доводилось менять интерфейс, особенно вместе с материнкой?
"В линуксе" получается привязаться к тому, что ближе к остальной инфраструктуре -- MAC-адресу (или при желании -- к PCI-слоту). При этом можно обозвать интерфейсы, скажем, wan и lan или stream, home, neigh и применять эти названия в правилах файрвола вне зависимости от того, какой именно чип там стоит. И это очень правильно, поскольку физический чип и логический интерфейс на _разных_ уровнях абстракции. Вылазит это именно при замене чипа на другой или добавлении ещё одного такого же в систему.
Собственно, это даже не претензия, а хинт, касательно даже не "во FreeBSD", а политики именования логических сущностей по подлежащей физической. "В линуксе" вон копают в сторону унификации именования дисков (hda->sda); при давно реализованной возможности монтирования тома по LABEL или UUID даже отсутствие фиксации между номером такого диска и его физическим подключением не особо мешает (хотя с udev вообще получается /dev/disk/by-{id,label,path,uuid}/, чего достаточно для всех мыслимых мне случаев).
В случае двух карточек на разных чипах проблемы с eth0/eth1 не возникнет независимо от их расположения в слотах. Что же касается логических сущностей, то это просто общая схема именования всех устройств вообще. Специально для интерфейсов же есть переименование; монтировать же диски по метке FreeBSD тоже умеет.
да все очень просто делается через udev и нет проблемы с одинаковыми сетевухами
cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.# PCI device 0x10b7:0x9200 (3c59x)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:04:75:e2:e8:64", NAME="eth0"# PCI device 0x10b7:0x9050 (3c59x)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:10:4b:ac:ce:42", NAME="eth1"