Linux 70 persistent net rules

Линукс сервер

В последнее время все чаще я не устанавливаю ubuntu server заново, а делаю копию системы. При таком способе переноса системы все устройства прекрасно пересоздаются заново на новом железе. А сетевые интерфейсы остаются старые и к ним добавляются новые.
На помощь приходит команда в консоли:
sudo rm /etc/udev/rules.d/70-persistent-net.rules
Далее перезагрузка

Все интерфейсы нашлись, но вот опять грабли, имена им система присвоила совсем не те что нам нужно. Надо их переименовать.

sudo nano /etc/udev/rules.d/70-persistent-net.rules

Заменять можно только значения полей NAME=»ethX», вписать в кавычки нужное нам имя интерфейса. Главное что бы с одим именем не оказались несколько интерфейсов. Опять перезагрузка и проверяем. Если нам повезло то все в порядке.

В последнее время все чаще udev напару со скриптом /lib/udev/write_net_rules позволяют злобно подшутить и прописывают правила не для всех интерфейсов. Многократные перезагрузки, удаление строк и прочее шаманство иногда приносит результат, но достичь успеха с четырьмя сетевыми картами мне не удалось. Все, ступор. Оказалось что можно еще и так

sudo rm /etc/udev/rules.d/70-persistent-net.rules
sudo udevadm trigger —action=add

Нужный нам файл создался вновь и в нем должны присутствовать все известные системе сетевые интерфейсы. Опять проверим их имена и поправим если что не так. В случае активного сопротивления ubuntu, и отказа прописать все интерфейсы. Применим команды:

sudo rm /etc/udev/rules.d/70-persistent-net.rules
sudo reboot

sudo udevadm trigger —action=change

Недостающие правила будут дописаны в файл 70-persistent-net.rule.

Источник

По умолчанию, нумерация сетевых интерфейсов в Linux идёт с нуля. То есть, если на компьютере две сетевых карты, интерфейсы к ним будут называться eth0 и eth1 соответственно.

При смене сетевой карты (например, при поломке старой) новой карте будет выдан следующий по номеру интерфейс — eth2.

В большинстве случаев предпочтительнее не перенастраивать систему под новое железо, а просто поменять имя интерфейса. Для этого редактируем файл:

/etc/udev/rules.d/70-persistent-net.rules

# This file maintains persistent names for network interfaces. # See udev(7) for syntax. # # Entries are automatically added by the 75-persistent-net-generator.rules # file; however you are also free to add your own entries. # PCI device 0x1106:0x3065 (via-rhine) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR=="xx:xx:xx:xx:xx:xx", ATTR=="1", KERNEL=="eth*", NAME="eth0"

Здесь: ATTR — мак-адрес сетевой карты, которая связана с интерфейсом NAME.

Читайте также:  Arch linux arm on android

Чтобы изменения вступили в силу — перезапускаем udev и networking.

udev — это демон, который отвечает за виртуальную файловую систему /dev.
/etc/udev/ — каталог настроек демона.
/etc/udev/rules.d/ — каталог с правилами, по которым udev создаёт файлы устройств в /dev.
70-persistent-net.rules — правило для создания сетевых интерфейсов.

Источник

Замена сгоревшей сетевой

Приветствую Есть следующая проблема. Появилась необходимость замены сгоревшей сетевой карточки в серваке, вставил новый сетевой адаптер включил сервер и с ужасом заметил что нету 70-persistent-net.rules в системе. Пробовал сгенерировать путем команд udevadm trigger и т.д. не получается. Что можно еще сделать? Или как можно прописать новую сетевую карточку в системе? Просто отредактировать конфигурационные файлы ifcfg-ethX пробовал, вроде все применяется и работает но на деле сетевой адаптер подставляется старый.

Какой дистрибутив ? Версия UDEV и установлен ли у вас systemd ?

Вот пример 70-persistent-net.rules:

# This file was automatically generated by the /lib64/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 0x11ab:0x4364 (sky2) SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR==«**:**:**:**:**:**», ATTR==«0x0», ATTR==«1», KERNEL==«eth*», NAME=«eth1» # PCI device 0x11ab:0x4364 (sky2) SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR==«**:**:**:**:**:**», ATTR==«0x0», ATTR==«1», KERNEL==«eth*», NAME=«eth0»

Если у вас Suse Linux, то всё нужно делать через yast. Удалить запись о старой карте и добавить новую.

kostik87 ★★★★★ ( 22.08.13 12:56:52 MSK )
Последнее исправление: kostik87 22.08.13 13:05:03 MSK (всего исправлений: 1)

Спасибо у меня стоит Centos 6 x64 systemd по ходу не установлен

rpm -qa | grep udev libudev-147-2.46.el6.x86_64 udev-147-2.46.el6.x86_64
dmesg lspci -nnv ifconfig -a 

Возможно не хватает драйверов.

Драйверов хватает, все сетевые одного типа и производителя. ifconfig -a

eth0 Link encap:Ethernet HWaddr C2:B3:05:31:19:00 inet addr:192.168.50.14 Bcast:192.168.50.31 Mask:255.255.255.224 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:75 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5773 (5.6 KiB) TX bytes:468 (468.0 b) Interrupt:246 eth1 Link encap:Ethernet HWaddr 6E:FE:15:7E:9E:F4 inet addr:192.168.50.1 Bcast:192.168.50.31 Mask:255.255.255.224 inet6 addr: fe80::6cfe:15ff:fe7e:9ef4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8402882 errors:0 dropped:0 overruns:0 frame:0 TX packets:15754859 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10057140881 (9.3 GiB) TX bytes:15221661309 (14.1 GiB) Interrupt:245 eth2 Link encap:Ethernet HWaddr 46:FF:4A:8E:BB:97 inet addr:192.168.50.14 Bcast:192.168.50.31 Mask:255.255.255.224 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:308 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:31335 (30.6 KiB) TX bytes:468 (468.0 b) Interrupt:244 
eth1 Link encap:Ethernet HWaddr 6E:FE:15:7E:9E:F4 inet addr:192.168.50.1 Bcast:192.168.50.31 Mask:255.255.255.224 inet6 addr: fe80::6cfe:15ff:fe7e:9ef4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8404102 errors:0 dropped:0 overruns:0 frame:0 TX packets:15757141 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10061255361 (9.3 GiB) TX bytes:15221897611 (14.1 GiB) Interrupt:245 

Проблема в том что ip 192.168.50.14 по прежнему пингуется и мак у сетевого стоит eth1-го но не как eth0 или eth2. Смотрел через arp таблицу С клиента пинговал 192.168.50.14

C:\Users\Yevgeniy>arp -a | findstr 192.168.50.14 192.168.50.14 6e-fe-15-7e-9e-f4 динамический

Один раз я уже с таким сталкивался когда бондинг разбивал, проблему решил путем убивания конф файлов сетевых интерфейсов ifcfg-ethX и создание их через system-config-network-tui. Здесь это не сработало.

Читайте также:  Run linux without gui

Неужели каждый раз будет такой гиморой при замене сетевой или смене мака. Правда для смены мака есть специальный параметр в настройках сетевой MACADDR кажись называется. Самое интересное то что смоделировал ситуации на виртуалке наткнулся на такие же грабли.

Уберите сгоревшую сетевую карту или уберите у неё link (ifconfig down) ну и почистите arp таблицы, хотя они и так долго не живут.

В общем не ясна и ваша проблема, что вас не устраивает ?

смущает то что в системе не видится новая сетевая под старым именем eth0. ifconfig -a выдает что она есть но на деле через нее пакеты не ходят а все ходит через eth1. Нужно очистить старые сетевые что б новая заработала.

смущает то что в системе не видится новая сетевая под старым именем eth0

Значит создано правило соответствия имени сетевой карты по mac адресу., обычно это /etc/udev/rules.d/70-persistent-net.rules

ifconfig -a выдает что она есть но на деле через нее пакеты не ходят а все ходит через eth1

Правильно, а куда она денется, если она подключена к системе ? Даже если она сгорела, а сгорела, скорее всего, не вся карта, а только аппаратура модуляции, а вся остальная часть рабочая. Значит либо выньте карту из слота либо отключите её в BIOS, после чего отредактируйте файл /etc/udev/rules.d/70-persistent-net.rules, дабы указать новой сетевой карте имя сетевой карты с индексом «0» (eth0).

Возможно правила именования сетевых карт указаны в другом файле правил udev, возможно самописном, смотрите.

kostik87 ★★★★★ ( 22.08.13 14:03:39 MSK )
Последнее исправление: kostik87 22.08.13 14:04:55 MSK (всего исправлений: 1)

/etc/udev/rules.d/70-persistent-net.rules этого файла у меня нет.

В Internet пишут, что должен быть, но если всё же нет, то создайте, пример я указал в первом посте вместо «**:**:**:**:**:**» впишите mac адрес.

Читайте также:  Запуск скриптов linux от пользователя

Либо воспользуйтесь другим советом, удалите из системы / отключите «сгоревшую» сетевую карту.

В чём проблема, неужели создать файл или вынуть сетевую карту это сложно ?

нет не сложно просто хочу разобраться почему нету этого файла и почему система сама его не создает.

Я развернул два центоса 6 на виртуалках, нету там такого файла, значит должен быть другой способ как решать подобные проблемы. Решил написать на форум может кто сталкивался и знает в чем проблема.

Я развернул два центоса 6 на виртуалках, нету там такого файла

Я специально скачал CentOS-6.4-i386-minimal.iso, поставил систему в «виртуалку» (VirtualBox), есть этот файл. Переместил, перезагрузил систему, файл создался вновь. Добавил в виртуальную систему ещё одну сетевую карту, в файле появилась запись о второй карте.

значит должен быть другой способ как решать подобные проблемы.

Он есть, написать файл самому. Можно даже под другим именем. Другого способа нет. Кроме как написать правило. Посмотрите может есть другой файл с описанием правил именования сетевых карт. Если файлов с правилами именования сетевых карт нет, то вы можете просто удалить проблемную карту из системы. После запуска системы сетевая карта с более младшим индексом на шине будет eth0. И удостоверьтесь, что есть скрипт, который генерирует правила именования сетевых карт ‘/lib/udev/write_net_rules’

kostik87 ★★★★★ ( 22.08.13 15:41:27 MSK )
Последнее исправление: kostik87 22.08.13 15:42:09 MSK (всего исправлений: 1)

/etc/udev/rules.d/70-persistent-net.rules этого файла у меня нет.

А другие файлы в этом каталоге есть? Посмотри в них.

Зря советуете, сейчас будет ответ «Почему тогда нет файла 70-persistent-net.rules».

[root@ares ~]# ls /etc/udev/rules.d/ 60-raw.rules 70-persistent-cd.rules z10-xen-vcpu-hotplug.rules

Вы хоть систему после удаления файла перезагружали ?

Источник

Оцените статью
Adblock
detector