Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: мост через /etc/network/interfaces  (Прочитано 1952 раз)

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

Оффлайн rygoravich

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
мост через /etc/network/interfaces
« : 02 Марта 2013, 22:43:14 »
Имеется комп с ubuntu 12.10, кроме всего прочего используется и как хост для виртуальных машин. Соответственно, сеть идет через мост, вот /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback
    up echo 1 >/proc/sys/net/ipv6/conf/all/disable_ipv6


# The primary network interface

auto p6p1
iface p6p1 inet manual

auto p7p1
iface p7p1 inet manual
    up ifconfig $IFACE down


# tunctl
auto tap0
iface tap0 inet manual
tunctl_user work

auto tap1
iface tap1 inet manual
tunctl_user work


# brcfg
auto br0
iface br0 inet dhcp
    bridge_ports p6p1 tap0

auto br1
iface br1 inet static
    bridge_ports tap1
    address 192.168.254.1
    netmask 255.255.255.0


При загрузке часто возникает ошибка: интерфейс p6p1 не добавляется в мост. На этом хосте в виртуалке висит резервный dhcp-сервер, поэтому, интерфейс получает айпишник (с задержкой, т.к. виртуальный хост запускается позже), но реального сетевого интерфейса там нет - только tap0 и vnet0 (последний принадлежит виртуалке). Т.е. после загрузки для доступа ко внешней сети приходится делать вручную sudo brctl addif br0 p6p1 и sudo ifconfig p6p1 up, после чего все работает нормально.

Интересно, что ошибка возникает совершенно спонтанно - в большинстве случаев система грузится нормально, однако есть примерно 20-25 процентов вероятности, что при загрузке в целевом мосте данного интерфейса не окажется...

Подозреваю, хотя и не уверен, что дело в именовании интерфейса, насколько я понимаю, при начальной загрузке ядро называет его традиционным именем eth0, а после udev переименовывает в p6p1, возможно в некоторых случаях скрипт настройки сети добавляет мост до того, как произойдет переименование и соответственно не может добавить p6p1.

Можно ли как-нибудь избавится от сей проблемы?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28508
    • Просмотр профиля
Re: мост через /etc/network/interfaces
« Ответ #1 : 02 Марта 2013, 22:51:38 »
Да можно - добавляя интерфейсы в мост после того, как они поднялись, а не до.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн rygoravich

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: мост через /etc/network/interfaces
« Ответ #2 : 03 Марта 2013, 00:06:10 »
Ну это понятно :) , но что нужно прописать в /etc/network/interfaces (или где-то еще)? Там в принципе записьauto p6p1
iface p6p1 inet manual
есть, идет она перед записью о поднятии моста... Просто есть подозрение, что на момент добавления этой записи p6p1 еще называется eth0, хотя может и в чем-то другом причина. Если в этом - то надо как-то задержать запуск конфигурирования сети до тех пор, пока udev не переименует интерфейсы, но как? Ну, а если причина другая - то в чем ее суть?

Вот, ударил грепом по бездорожью и разгильдяйству:

work@deneb:~$ grep eth0 /var/log/syslog
Mar  2 20:49:36 deneb kernel: [    2.110828] r8169 0000:01:00.0: eth0: RTL8168evl/8111evl at 0xffffc9001179a000, 10:78:d2:da:96:a1, XID 0c900800 IRQ 82
Mar  2 20:49:36 deneb kernel: [    2.110890] r8169 0000:01:00.0: eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
Mar  2 20:49:36 deneb kernel: [   23.060806] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
work@deneb:~$ grep p6p1 /var/log/syslog
Mar  2 20:53:09 deneb NetworkManager[4550]:    SCPluginIfupdown: guessed connection type (p6p1) = 802-3-ethernet
Mar  2 20:53:09 deneb NetworkManager[4550]:    SCPlugin-Ifupdown: update_connection_setting_from_if_block: name:p6p1, type:802-3-ethernet, id:Ifupdown (p6p1), uuid: d2fc7be8-e247-7813-83f3-a63c6bc78013
Mar  2 20:53:10 deneb NetworkManager[4550]:    SCPlugin-Ifupdown: adding p6p1 to iface_connections
Mar  2 20:53:10 deneb NetworkManager[4550]:    SCPlugin-Ifupdown: adding iface p6p1 to well_known_interfaces
Mar  2 20:53:10 deneb NetworkManager[4550]:    SCPlugin-Ifupdown: found bridge ports p6p1 tap0 for br0
Mar  2 20:53:10 deneb NetworkManager[4550]:    SCPlugin-Ifupdown: adding bridge port p6p1 to well_known_interfaces
Mar  2 20:53:10 deneb NetworkManager[4550]:    SCPlugin-Ifupdown: devices added (path: /sys/devices/pci0000:00/0000:00:06.0/0000:01:00.0/net/p6p1, iface: p6p1)
Mar  2 20:53:10 deneb NetworkManager[4550]: <info> (p6p1): carrier is OFF
Mar  2 20:53:10 deneb NetworkManager[4550]: <info> (p6p1): new Ethernet device (driver: 'r8169' ifindex: 2)
Mar  2 20:53:10 deneb NetworkManager[4550]: <info> (p6p1): exported as /org/freedesktop/NetworkManager/Devices/0
Mar  2 20:54:48 deneb kernel: [  335.975814] device p6p1 entered promiscuous mode
Mar  2 20:55:08 deneb kernel: [  355.815790] r8169 0000:01:00.0: p6p1: link down
Mar  2 20:55:08 deneb kernel: [  355.815844] r8169 0000:01:00.0: p6p1: link down
Mar  2 20:55:08 deneb kernel: [  355.819095] IPv6: ADDRCONF(NETDEV_UP): p6p1: link is not ready
Mar  2 20:55:09 deneb kernel: [  357.380320] r8169 0000:01:00.0: p6p1: link up
Mar  2 20:55:09 deneb kernel: [  357.382738] IPv6: ADDRCONF(NETDEV_CHANGE): p6p1: link becomes ready
Mar  2 20:55:09 deneb kernel: [  357.383258] br0: port 3(p6p1) entered forwarding state
Mar  2 20:55:09 deneb kernel: [  357.383305] br0: port 3(p6p1) entered forwarding state
Mar  2 20:55:25 deneb kernel: [  372.429745] br0: port 3(p6p1) entered forwarding state
work@deneb:~$

Здесь запись от 20:54:48 - по видимому, тот момент, когда я вручную выполнял sudo brctl addif br0 p6p1

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28508
    • Просмотр профиля
Re: мост через /etc/network/interfaces
« Ответ #3 : 03 Марта 2013, 00:30:55 »
Ничего не писать в interfaces.
Положить скрипт в if-up, проверяющий имена интерфейсов и распихивающий их по нужным мостам.
Шпора: http://anr-daemon.livejournal.com/2040.html
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн rygoravich

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: мост через /etc/network/interfaces
« Ответ #4 : 03 Марта 2013, 01:03:12 »
Гм, наверное, вариант, но хотелось бы более изящного решения, чтобы по максимуму сохранить родную систему поднятия интерфейсов... К тому же я не очень хорошо знаком со скриптами, поднимающими интерфейс в ubuntu и не факт, что сразу правильно напишу верный скрипт.

Кстати, нашел в /var/log/udev:UDEV  [24.330217] move     /devices/pci0000:00/0000:00:06.0/0000:01:00.0/net/p6p1 (net)
ACTION=move
DEVPATH=/devices/pci0000:00/0000:00:06.0/0000:01:00.0/net/p6p1
DEVPATH_OLD=/devices/pci0000:00/0000:00:06.0/0000:01:00.0/net/eth0
ID_BUS=pci
ID_MM_CANDIDATE=1
ID_MODEL_FROM_DATABASE=RTL8111/8168B PCI Express Gigabit Ethernet controller
ID_MODEL_ID=/sys/devices/pci0000:00/0000:00:06.0/0000:01:00.0
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=p6p1
SEQNUM=2342
SUBSYSTEM=net
UDEV_LOG=3
USEC_INITIALIZED=24192278

Т.е. по видимому, исходная посылка правильная (по записи в сислоге "Mar  2 20:49:36 deneb kernel: [   23.060806] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready" можно предположить, что все-таки переименование произошло позже, чем попытка активации интерфейса).

Вопрос - можно ли как-нибудь отсрочить запуск скрипта поднятия интерфейса, чтобы udev к тому моменту гарантированно успел переименовать интерфейсы?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28508
    • Просмотр профиля
Re: мост через /etc/network/interfaces
« Ответ #5 : 03 Марта 2013, 01:43:14 »
Начни с простого - не морочь себе мозг. Напиши скрипт для того имени интерфейса, которое должно быть. Не будет работать - будем искать причины и решения.
Линуксь - простая штука, не надо искать себе лишних сложностей.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.