имена сетевых интерфейсов меняются местами

Автор vladimirse, 21 февраля 2012, 15:31:38

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

vladimir_ar

#15
Не, ну когда с флэшки загрузился - ладно. Но потом я ее отключил и перезагрузился. И номер сдвинулся под другой системой. А после выключения питания вернулся обратно (ребуты не изменили ситуацию). Т.е. впечатление, что карта помнила клонированный МАС (может, причина и другая, но внешене очень похоже).

Сообщение объединено: 29 августа 2012, 00:23:55

Чтоб не быть голословным, да и из моих объяснений на словах не все может быть понятно, привожу файл 70-persistent-net.rules и соответствующие ему выводы команды ifconfig.

/etc/udev/rules.d/70-persistent-net.rules
Открыть содержимое (спойлер)

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x1106:0x3106 (via-rhine)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="28:10:7b:46:05:58", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8168 (r8169)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:e5:49:5c:63:50", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8168 (r8169)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:e5:49:5c:63:5d", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

# PCI device 0x1106:0x3106 (via-rhine)
# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="28:10:7b:46:05:58", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8168 (r8169)
# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:e5:49:5c:63:50", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1106:0x3106 (via-rhine)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="28:10:7b:46:05:58", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:e5:49:5c:63:50", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
[свернуть]

Пояснения.
-----------------------
Первые две записи - это PCI-сетевая via-rhine и встроенная сетевая r8169 - соответствуют рабочей конфигурации машины (хотя МАС r8169 не настоящий, а подменный, но об этом позже).
-----------------------
Третья запись - это изменение имени интерфейса карты r8169 после загрузки на USB-системе и ее МАС соответствует реальному МАС-у этой сетевой карты.
-----------------------
Четвертая и пятая записи - это записи, сгенерированные udev после того, как я заремил полностью содержимое файла 70-persistent-net.rules и перезагрузил машину. Видим, что к карте r8169 udev притянуло подменный МАС. Кстати, к карте PCI via-rhine подменный МАС ни разу не присваивался (отображен ее настоящий), хотя он тоже при инициализации интерфейсов (/etc/network/interfaces) подменяется на адрес 50:e5:49:5c:63:5d (реальный адрес встроенной сетевой, который пробит у провайдера).

ЦитироватьОтступление. Почему, спросите, такие сложности и почему меняю адрес у другой карты, когда есть физически подходящая? Во первых, хотелось полностью разобраться с подменой, чтобы по любой смене сетевых или компа в целом не ломиться в техподдержку провайдера, а во вторых - в случае чего с оборудованием провайдера - чтобы не сгорела встроенная карта, которую менять только с матерью, а вылетела копеечная внешняя.

И, наконец, 6-7 запись  - это повторение 4-5, но с полным выключением компьютера. Результат полностью повторил 4-5. Номера интерфейсов я поменял потом (eth0 <-> eth1) в соответствии с физическими подключениями карт (т.е. via-rhine eth0 смотрит на провайдера, r8169 eth1 в локальную сеть).

Теперь смотрим вывод ifconfig для ситуации 4-5
Открыть содержимое (спойлер)

vladimir-amd64@GNU-HOME:~$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 50:e5:49:5c:63:5d 
          inet6 addr: fe80::52e5:49ff:fe5c:635d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:150 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:87996 (85.9 KiB)  TX bytes:8172 (7.9 KiB)
          Interrupt:40 Base address:0xa000

eth1      Link encap:Ethernet  HWaddr 50:e5:49:5c:63:50 
          inet addr:192.168.239.1  Bcast:192.168.239.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:22 Base address:0xdc00

eth0:avahi Link encap:Ethernet  HWaddr 50:e5:49:5c:63:5d 
          inet addr:169.254.6.233  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:40 Base address:0xa000

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:7358 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7358 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:658868 (643.4 KiB)  TX bytes:658868 (643.4 KiB)

vladimir-amd64@GNU-HOME:~$
[свернуть]
Карты проинициализированы нужными МАС-ми (хоть и перепутаны местами, но в соответствии с interfaces), и локальная (eth1) получила IP (внешняя не получила, шнурок вынут, т.к. получу блок от оборудования провайдера за попытку связи не с того МАС-адреса).

После перестановки местами имен eth0 <-> eth1 в 70-persistent-net.rules и перезагрузки имена более не прыгали.

И, собственно, вопросы, на которые я не нашел объяснений:
1. Почему внутренняя сетевая упорно сохраняет в udev свой клонированный МАС?
2. Или (что нонсенс) подмена МАС идет ранее, чем отрабатывает udev, но тогда почему у внешней карты в udev адрес аппаратный?

Сообщение объединено: 30 августа 2012, 04:25:46

Гугл сказал, что карта на чипе  r8169 софтварная и жестко вшитого МАС-а не имеет. Поэтому и получается, что она помнит последний подмененный в ней МАС. Буду думать, что в этой ситуации можно сделать помимо установки еще одной PCI карты.
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M