Рост номеров сетевого интерфейса

×

Предупреждение

Внимание: этот пост был создан более года назад. Информация может быть устаревшей.

Довольно редкий баг. Симптомы такие: при каждой перезагрузке номер сетевого интерфейса растет. Был eth0, стал eth1. Был eth1, стал eth2 и тд. Проблема в том, что по какой-то причине убунте не нравится стандартный мак устройства и она при каждой перезагрузке генерирует новый. Новый мак адрес - новый интерфейс, думает система и прописывает его в 70-persistent-net.rules, увеличивая номер интерфейса. Самый простой способ обойти этот баг - очищать 70-persistent-net.rules при выключении компа - тогда при запуске система найдет все сетевые интерфейсы и добавит их. Но этот способ мне не нравится и я нашел более правильный. Необходимо подредактировать 70-persistent-net.rules, чтобы глючный интерфейс идентифицировался там не по мак-адресу, а по адресу системной шины, уж этот адрес то всегда постоянный :) Вот как выглядит мой сетевой интерфейс в 70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:80:c8:39:5d:2c", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 

Пишем в консоли lspci и смотрим адрес шины

00:0a.0 Ethernet controller: nVidia Corporation Unknown device 054c (rev a2) 

И затем немного правим 70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",ID=="0000:00:0a.0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 

После чего нужно или в interfaces или в rc.local добавить команду по установке интерфейсу нового мак адреса (хоть того, который его "родной")