Вы поменяли сетевую карту или материнскую плату на сервере под управлением CentOS 6. С виду всё хорошо, но сеть не работает. Давайте разберем причины. Все команды выполняются с root правами.
ifconfig -a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
eth1 Link encap:Ethernet HWaddr 00:1C:F0:9F:0D:B4 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 eth2 Link encap:Ethernet HWaddr 00:1E:8C:A5:72:86 inet addr:192.168.33.136 Bcast:192.168.33.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7122888 errors:0 dropped:0 overruns:0 frame:0 TX packets:5130141 errors:0 dropped:0 overruns:0 carrier:4 collisions:0 txqueuelen:1000 RX bytes:1238879606 (1.1 GiB) TX bytes:1098913232 (1.0 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:593127 errors:0 dropped:0 overruns:0 frame:0 TX packets:593127 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2768829186 (2.5 GiB) TX bytes:2768829186 (2.5 GiB) |
Интерфейс eth0 пропал, появился eth2, а все Ваши конфиги и скрипты настроены, есстественно, на eth0. Нам необходимо поменять интерфейс eth2 на eth0, тогда не придется все переписывать. Запомним из предыдущего вывода МАС-адрес сетевой карты eth2 — 00:1E:8C:A5:72:86. За имена сетевых интерфейсов отвечает система udev. Но сначала убедимся, что сетевая карта нормально встала и правильно работает. Следующая команда выведет список оборудования. Вывод не полный, представлена только интересующая нас часть.
lspci -nn
1 2 3 4 5 6 |
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce GT 620] [10de:0f01] (rev a1) 01:00.1 Audio device [0403]: NVIDIA Corporation GF108 High Definition Audio Controller [10de:0bea] (rev a1) 02:00.0 SATA controller [0106]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03) 02:00.1 IDE interface [0101]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03) 03:00.0 Ethernet controller [0200]: Qualcomm Atheros Attansic L1 Gigabit Ethernet [1969:1048] (rev b0) 05:01.0 Ethernet controller [0200]: D-Link System Inc DGE-530T Gigabit Ethernet Adapter (rev 11) [1186:4b01] (rev 11) |
В этом примере предпоследняя строка и есть наша новая сетевая карта. Благодаря опции -nn мы знаем номера производителя и устройства 1969:1048. Запомним их и используем для более подробного просмотра.
lspci -v -d 1969:1048
1 2 3 4 5 6 7 8 9 10 11 12 13 |
03:00.0 Ethernet controller: Qualcomm Atheros Attansic L1 Gigabit Ethernet (rev b0) Subsystem: ASUSTeK Computer Inc. P5KPL-VM Motherboard Physical Slot: 0-1 Flags: bus master, fast devsel, latency 0, IRQ 29 Memory at efec0000 (64-bit, non-prefetchable) [size=256K] Expansion ROM at efea0000 [disabled] [size=128K] Capabilities: [40] Power Management version 2 Capabilities: [48] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [58] Express Endpoint, MSI 00 Capabilities: [6c] Vital Product Data Capabilities: [100] Advanced Error Reporting Kernel driver in use: atl1 Kernel modules: atl1 |
В этом листинге обращаем внимание на драйвер нашей сетевой карты — atl1. Теперь, собрав необходимые данные о новой сетевой карте, смотрим конфигурационный файл сетевых правил udev.
cat /etc/udev/rules.d/70-persistent-net.rules
1 2 3 4 5 6 7 8 |
# PCI device 0x10ec:0x8168 (r8169) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:fc:89:b0:07", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x1186:0x4b01 (skge) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1c:f0:9f:0d:b4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" # PCI device 0x1969:0x1048 (atl1) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:8c:a5:72:86", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2" |
Первая строка — старая сетевая карта, которая была заменена. Вторая — правильно работающая карта с интерфейсом eth1. Последняя строка — наша новая сетевая карта с именем интерфейса eth2, драйвером atl1, номером производителя и устройства 1969:1048 и МАС-адресом 00:1E:8C:A5:72:86. Отредактируем этот файл следующим образом: закоментируем старую сетевую карту и вместо нее пропишем новой карте имя интерфейса eth0. Должно получится примерно так. Есстественно, у Вас будут другие драйвера, номера и МАС-адреса.
1 2 3 4 5 6 7 8 |
# PCI device 0x10ec:0x8168 (r8169) # SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:fc:89:b0:07", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x1969:0x1048 (atl1) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:8c:a5:72:86", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x1186:0x4b01 (skge) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1c:f0:9f:0d:b4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" |
Перезагрузив компьютер, новая сетевая карта примет привычное имя интерфейса eth0, а все Ваши настройки и скрипты заработают, как ни в чем не бывало.