1 (21.02.2013 17:45:09 отредактировано Liber)

У меня стоит две катрочки (eth0, eth1), хочу присвоить им логические имена wan, lan через mapping в interfaces. Ибо иногда после перезагрузки или запуска/останова демона networking карточки "скачут", меняются местами, либо eth0 внезапно становится eth2 и т.д. Что доставляет тонны радости.  bu
Для проверки начал со внешнего интерфейса:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

allow-hotplug eth0 eth1
mapping eth0
script /usr/local/bin/get-mac-address.sh
map xx:xx:xx:xx:xx:xx wan1
map yy:yy:yy:yy:yy:yy lan

# The primary network interface (LAN)
iface eth1 inet static
        address zzz.zzz.zzz.1
        netmask 255.255.255.0
        network zzz.zzz.zzz.0
        broadcast zzz.zzz.zzz.255

# The secondary network interface (WAN)
#iface eth0 inet dhcp
iface wan1 inet dhcp

В итоге - интерфейс лежит и совсем не поднимается ac

eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          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:25 Base address:0x4000

eth1      Link encap:Ethernet  HWaddr yy:yy:yy:yy:yy:yy
          inet addr:zzz.zzz.zzz.zzz  Bcast:zzz.zzz.zzz.255  Mask:255.255.255.0
          inet6 addr: zzz:zzz:zzz:zzz/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:364 errors:0 dropped:0 overruns:0 frame:0
          TX packets:303 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:39011 (38.0 KiB)  TX bytes:92314 (90.1 KiB)
          Interrupt:21 Base address:0xec00

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:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1958 (1.9 KiB)  TX bytes:1958 (1.9 KiB)

У моего прова какая-то хитрая привязка к оборудованию юзера. Помимо сверки MAC'а еще проходит керберос аутентификация. Не зная, может ли влиять на привязку логическое имя интерфейса (хотя сомнительно это), на всякий случай решил повторить такой же ход на LAN интерфейсе, чем заработал себе веселенькую чехарду с клавиатурами и монитрами... Короче, когда попытался прописать маппинг для eth1, он лег точно так же.

И вот я в недоумении - что же я не так сделал? Вроде, все по писанному. ОС Debian Squeeze.

Скрипт /usr/local/bin/get-mac-address.sh скопирован из /usr/share/doc/ifupdown/examples.

И где я напортачил?  be  Подскажите, пожалуйста!

2

А с помощью udev не проще?
Покажите

cat /etc/udev/rules.d/*-persistent-net.rules
Был, был и весь вышел...

3 (21.02.2013 17:45:19 отредактировано Liber)

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

Lupo Alberto пишет:

Покажите

Вот:

# 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 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x13f0:0x0200 (sundance)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="yy:yy:yy:yy:yy:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

4

Попробуйте поменять значение NAME= на нужное.

Был, был и весь вышел...

5

Ура! Взлетел! Интерфесы - с ходу.

Правда, без косячков не обошлось, забыл сразу поправить /etc/default/isc-dhcp-server, что очень огорчило DHCP-сервер... Но это мелочи!

Большое спасибо!

P.S. Кстати, меня смущает и настораживает вот эта надпись:

Liber пишет:

# This file was automatically generated by the /lib/udev/write_net_rules program, run by the persistent-net-generator.rules rules file.

в /etc/udev/rules.d/70-persistent-net.rules. Этот файлик не может "совершено случайно" внезапно перегенерироваться при каких-то условиях? С затиранием всех правок. Например, при рестарте нетворкинга?

6

Ой, да! И попутно: какие символы допустимы в имени интерфейса? '_', '-' можно использовать?

7 (20.02.2013 20:03:45 отредактировано Lupo Alberto)

Liber пишет:

Этот файлик не может "совершено случайно" внезапно перегенерироваться при каких-то условиях?

Liber пишет:

# This file was automatically generated by the /lib/udev/write_net_rules program, run by the persistent-net-generator.rules rules file.

Файл /etc/udev/rules.d/70-persistent-net.rules создаётся автоматически командой /lib/udev/write_net_rules, если он отсутствует, но допускает правки. Ничто не мешает вам создать свой подобный файл, чуть изменив имя (поменяйте число, к примеру на >70), тогда он будет обрабатываться позже и не будет переписываться (хотя и так не должен).

Liber пишет:

И попутно: какие символы допустимы в имени интерфейса? '_', '-' можно использовать?

Попробуйте, вроде бы эти символы допустимы. Пробелов в именах, главное, избегайте bx

Был, был и весь вышел...

8

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

9

Да, только одно но, видимо при параллельной загрузке косяки все же могут быть, если обычный init то путаницы не будет, ссыль в тему

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

10

Lupo Alberto пишет:

Попробуйте, вроде бы эти символы допустимы

Да, с символом подчеркивания проблем не возникло. Благодарю за ответы!

zenon пишет:

Да, только одно но, видимо при параллельной загрузке косяки все же могут быть

В тонкости не вдавался, но сталкивался с тем, что изредка после перезагрузки сервера/перезапуска networking порядок именования интерфейсов менялся. Ссыль гляну, спасибо.