vlad11 Posted December 7, 2015 · Report post Здравствуйте. Появилась задача объединить несколько сетевых карт. Система Дебиан. auto lo iface lo inet loopback iface eth0 inet manual iface eth1 inet manual auto bond0 iface bond0 inet static address 10.0.1.3 netmask 255.255.255.0 network 10.0.1.0 gateway 10.0.1.254 slaves eth0 eth1 mtu 9000 bond_miimon 100 # bond_mode balance-xor bond_mode 802.3ad bond-lacp-rate 1 bond_xmit_hash_policy layer2 auto vmbr0 iface vmbr0 inet static address YYY.XXX.ZZZ.193 netmask 255.255.255.0 gateway YYY.XXX.ZZZ.1 bridge_ports bond0 bridge_stp off bridge_fd 0 После рестарта сети IP 10.0.1.3 не присваивается. Присваивается только в ручном режиме. #ifconfig bond0 inet 10.0.1.3/24 Но все равно нет ответа на пинг и ARP. Хотя траффик из сети 10.0.1.0/24 на бонде виден tcpdump. Вланов нет! Вопросы: Как правильно повесить несколько IP алиасов на bond0? Как заставить работать пинг на эти IP? Спасибо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted December 7, 2015 · Report post А не факт, что на засунутый в бридж интерфейс вы можете повешать адреса. Вешайте на бридж. Если же бридж не нужен - вешайте на бонд адреса (строка up ip a a addr/net dev $IFACE) или так: auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 192.168.1.43 netmask 255.255.255.0 auto eth0:1 allow-hotplug eth0:1 iface eth0:1 inet static address 192.168.1.44 netmask 255.255.255.0 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 7, 2015 · Report post С vmbr0 как раз работает. Переводить bond0 в режим мануал? iface bond0 inet manual up /sbin/ip link set dev bond0 mtu 9000 up up /sbin/ifenslave bond0 eth0 eth1 up /sbin/ip addr add 10.0.1.3/24 brd + dev bond0 Не сильно хочется конвертировать все опции bond в консольные команды... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdc Posted December 7, 2015 · Report post Забудьте ifconfig - в линуксе его больше нет. Ипы добавляются серией строчек up ip addr add Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 7, 2015 · Report post Забудьте ifconfig - в линуксе его больше нет. Ипы добавляются серией строчек up ip addr add Из ifenslave --help: ... - assign an IP address to the bond device : # ifconfig bond0 <addr> netmask <mask> broadcast <bcast> По второму вопросу насчет неработающих ARP запросов, а соответственно и неработающий пинг? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Megas Posted December 7, 2015 · Report post В свое время столкнулся, может и вам понадобится auto bond0.13 iface bond0.13 inet static address 192.168.1.150 netmask 255.255.255.0 up ip route add default via 192.168.1.254 table vlan13 up ip rule add from 192.168.1.254 table vlan13 pref 113 up ip addr add 192.168.1.1/32 dev bond0.13 up ip addr add 192.168.1.2/32 dev bond0.13 up ip addr add 192.168.1.3/32 dev bond0.13 up ip addr add 192.168.1.4/32 dev bond0.13 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 7, 2015 · Report post У вас вообще через дополнительную таблицу роутинга vlan13 назначаются. Вланы по-другому назначаются на bond0: auto bond0.103 iface bond0.103 inet manual vlan-raw-device bond0 или через up: up vconfig add bond0 103 up ip link set dev bond0.103 up Мне помогло вручную назначение IP адреса на vmbr0 ip addr add 10.0.1.3/24 dev vmbr0 Не совсем понятна логика, зачем еще мост использовать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Megas Posted December 7, 2015 · Report post Извините, тут кописат с действующего тазика был, на нем несколько вланов с внешними адресами и на одном из интерфейсов порядка 40 алиасов, используется для внутрених нужд. Если делать через eth0:0 то там кажется начинается затирание адресов на интерфейсе, выход был только через if up Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
^rage^ Posted December 7, 2015 · Report post Если делать через eth0:0 это еще что за анахронизм? не делайте так. вообще, в linux сейчас всё идет к тому, что bridge-utils/ifenslave-2.6/vconfig станут не нужными(они и сейчас уже). всё управляется через iproute2. Но все равно нет ответа на пинг и ARP. Хотя траффик из сети 10.0.1.0/24 на бонде виден tcpdump. не будет работать. вешайте адреса на сам bridge(в вашем случае vmbr0) или через up: up vconfig add bond0 103 up ip link set dev bond0.103 up лучше так: ip link add link eth0 name vlan122 type vlan id 122 на eth0 вешается vlan с vid=122 и именем интерфейса vlan122. имя может быть произвольным. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted December 8, 2015 · Report post Не сильно хочется конвертировать все опции bond в консольные команды... Зачем все? Сугубо добавление доп. адресов. Не совсем понятна логика, зачем еще мост использовать? Т.е. вы создали мост, включили в него бондинг, и просите других объяснить зачем вы это сделали? 0_о это еще что за анахронизм? не делайте так. Не анахронизм, а создание алиасов штатными средствами дистрибутива. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
^rage^ Posted December 8, 2015 · Report post это еще что за анахронизм? не делайте так. Не анахронизм, а создание алиасов штатными средствами дистрибутива. The above configuration is the previous traditional method that reflects the traditional use of ifconfig to configure network devices. ifconfig has introduced the concept of aliased or virtual interfaces. Those types of virtual interfaces have names of the form interface:integer and ifconfig treats them very similarly to real interfaces. Nowadays ifupdown uses ip utility from the iproute2 package instead of ifconfig. The newer ip utility does not use the same concept of aliases or virtual interfaces. However, it supports assigning arbitrary names to the interfaces (they're called labels). ifupdown uses this feature to support aliased interfaces while using ip. отсюда т.е. старая схема была от убогости ifconfig и хардкода 1 интерфейс - 1 адрес. на самом деле можно сделать так, что адреса нигде на интерфейсе нет, но система этот адрес считает локальным. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted December 8, 2015 · Report post Не анахронизм, а создание алиасов штатными средствами дистрибутива. Если хочется действовать в концепции штатных средств, то лучше сделать как-то так: /etc/network/if-up.d/ip_aliases: #!/bin/sh NETW_DIR=/usr/local/etc/network if [ -z "${PHASE}" ]; then echo this script should be started as interface script exit 0 fi test ${PHASE} = post-up || exit 0 # Try to add IP v4 or v6 to interface if [ -f ${NETW_DIR}/${IFACE}_addr.lst ]; then grep -v ^"#" ${NETW_DIR}/${IFACE}_addr.lst | while read inet_ad oth; do ip addr add $inet_ad dev ${IFACE} done fi Ну и потом добавляем нужный файл: /usr/local/etc/network/eth0_addr.lst: 192.168.1.15 192.168.1.16 192.168.1.17 192.168.1.18 192.168.1.19 192.168.1.20 192.168.1.21 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 8, 2015 · Report post Не сильно хочется конвертировать все опции bond в консольные команды... Зачем все? Сугубо добавление доп. адресов. Up и post-up - костыли, когда штатные средства свойств объекта (bond) не работают. Не совсем понятна логика, зачем еще мост использовать? Т.е. вы создали мост, включили в него бондинг, и просите других объяснить зачем вы это сделали? 0_о Хорошо, перефразирую по-другому. Почему вложенный объект vmbr блокируют добавление других свойств (алиасов IP) родительского объекта (bond0)? Почему вложенные объекты bond0 и vmbr0 не наследуют родительские свойства (qlen 10000 и qdisc mq) объектов eth0 и eth1? Почему вложенный объект vmbr не наследует родительские свойства (state UP) объекта bond0 ? P.S. У меня стойкое ощущение, что в ip только сделали косметические улучшения и добавили функционал нескольких утилит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted December 8, 2015 · Report post Про наследование вообще не понял. Почему там вообще должно быть наследование? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 8, 2015 · Report post Почему там вообще должно быть наследование? Должно наследоваться и при необходимости меняться, в меньшую сторону. Раздел ООП - наследование :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted December 8, 2015 · Report post т.е. старая схема была от убогости ifconfig и хардкода 1 интерфейс - 1 адрес. таки да, там ниже пример есть как это правильно делать сейчас: auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 iface eth0 inet static address 192.168.1.43 netmask 255.255.255.0 iface eth0 inet static address 192.168.1.44 netmask 255.255.255.0 Если хочется действовать в концепции штатных средств, то лучше сделать как-то так: с каких это пор велосипед с квадратными колесами уже стал штатным средством? :) штатное средство - выше. Почему вложенный объект vmbr блокируют добавление других свойств (алиасов IP) родительского объекта (bond0)? Да потому, что на физические интерфейсы моста никто в здравом уме ип вешать не будет, и работать оно в общем случае не должно. Почему вложенные объекты bond0 и vmbr0 не наследуют родительские свойства (qlen 10000 и qdisc mq) объектов eth0 и eth1? А почему они должны что-либо наследовать? Интерфейс создается вообще отдельно, при загрузке модуля. А потом уже ему добавляются подчиненные интерфейсы. Почему вложенный объект vmbr не наследует родительские свойства (state UP) объекта bond0 ? См. выше. P.S. У меня стойкое ощущение, что в ip только сделали косметические улучшения и добавили функционал нескольких утилит. Открою секрет: что ip, что ifconfig, что прочие утилиты - обвязка системных вызовов. И ничего из того, о чем их не просят, они делать не будут и не должны. Не винда же, где пользователю по умолчанию тыкается соска, правда не всегда в нужное место :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted December 8, 2015 (edited) · Report post Должно наследоваться и при необходимости меняться, в меньшую сторону. Раздел ООП - наследование :) Объектно-ориентированное программирование. А что вы программируете? Если хочется действовать в концепции штатных средств, то лучше сделать как-то так: с каких это пор велосипед с квадратными колесами уже стал штатным средством? :) штатное средство - выше. Коллега, ну вы уж штатные средства с концепцией не путайте. :) Концепция позволяет навесить 2-5 сотен адресов без излишнего раздувания единого конфигурационного файла через предусмотренный штатными средствами скриптовый механизм. Edited December 8, 2015 by vop Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 9, 2015 · Report post Почему вложенный объект vmbr блокируют добавление других свойств (алиасов IP) родительского объекта (bond0)? Да потому, что на физические интерфейсы моста никто в здравом уме ип вешать не будет, и работать оно в общем случае не должно. Отделим мух от котлет. И на объединенном линке (bond) и на мосте (vmbr) могут быть IP. Вот, виртуалки и KVM и OpenVZ требуют явно указанного моста для "проброса" вовнутрь сетевой карты. Почему вложенные объекты bond0 и vmbr0 не наследуют родительские свойства (qlen 10000 и qdisc mq) объектов eth0 и eth1? А почему они должны что-либо наследовать? Интерфейс создается вообще отдельно, при загрузке модуля. А потом уже ему добавляются подчиненные интерфейсы. Нет. Создается пустая оболочка bond и в нее уже "заталкиваются" подчиненные интерфейсы со своими свойствами. После добавления этих интерфейсов пропущена логика применения этих свойств на bond и последующих объектов. В результате в интернете куча хаутушек, как оттюнинговать физические интерфейсы, но ни чего не сказано о других объектах - мостах, объединенных интерфейсах и вланах. Почему вложенный объект vmbr не наследует родительские свойства (state UP) объекта bond0 ? См. выше. Не-а. Вот как явным образом сказать в конфигурации сети, что при добавлении на мост IP адресов надо поднимать состояния моста? P.S. У меня стойкое ощущение, что в ip только сделали косметические улучшения и добавили функционал нескольких утилит. Открою секрет: что ip, что ifconfig, что прочие утилиты - обвязка системных вызовов. И ничего из того, о чем их не просят, они делать не будут и не должны. Не винда же, где пользователю по умолчанию тыкается соска, правда не всегда в нужное место :) Я хотел потроллить предыдущего оратора :) За то, что Кузнецов в свое время переделал сетевой стек Линукса - честь и хвала, но много времени прошло и осталось много подводных камней. И я не рекламирую Netgraph :) Должно наследоваться и при необходимости меняться, в меньшую сторону. Раздел ООП - наследование :) Объектно-ориентированное программирование. А что вы программируете? Я программирую сеть. В данном случае для ноды кластера виртуалок. Причем эта нода должна понимать LACP, NFS и iSCSI не только для 1G интерфейсов, но и 10G. А там свой тюнинг как внутри ДЦ, так и вне ДЦ. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
^rage^ Posted December 9, 2015 · Report post И на объединенном линке (bond) и на мосте (vmbr) могут быть IP. быть они могут, но это ещё ничего не значит. по разным причинам. Вообще, в случае с bridge стоит посмотреть сюда в правый нижний угол и увидеть что код бриджа вызывается чуть ли не сразу в netif_receive_skb() Нет. Создается пустая оболочка bond и в нее уже "заталкиваются" подчиненные интерфейсы со своими свойствами. это не так. root@rgs0:~# ip link add name lagg0 txqueuelen 8192 numtxqueues 4 numrxqueues 4 type bond mode balance-rr xmit_hash_policy layer3+4 root@rgs0:~# ifconfig lagg0 lagg0 Link encap:Ethernet HWaddr 06:4a:09:b5:7f:47 BROADCAST MASTER 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:8192 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@rgs0:~# ls /sys/class/net/lagg0/queues/ rx-0 rx-1 rx-2 rx-3 tx-0 tx-1 tx-2 tx-3 root@rgs0:~# Вот как явным образом сказать в конфигурации сети, что при добавлении на мост IP адресов надо поднимать состояния моста? вы сначала определите что такое "добавлении на мост IP адресов" Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted December 9, 2015 · Report post И на объединенном линке (bond) и на мосте (vmbr) могут быть IP. Ну вы сами же убедились, что не могут, не работает :) После добавления этих интерфейсов пропущена логика применения этих свойств на bond и последующих объектов. А с какой радости что-либо должно применяться? С какой радости qdisc со всеми дочерними классами должен удаляться и заменяться таким же, как на подчиненном интерфейсе??? Вот как явным образом сказать в конфигурации сети, что при добавлении на мост IP адресов надо поднимать состояния моста? Какие такие состояния поднимать? Этот конфиг же у вас поднимает бридж и ип на нем: auto vmbr0 iface vmbr0 inet static address YYY.XXX.ZZZ.193 netmask 255.255.255.0 gateway YYY.XXX.ZZZ.1 bridge_ports bond0 bridge_stp off bridge_fd 0 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ollsanek Posted December 9, 2015 · Report post >> Почему вложенные объекты bond0 и vmbr0 не наследуют родительские свойства (qlen 10000 и qdisc mq) объектов eth0 и eth1? удивлён такому вопросу от ТС, у меня стойкое ощущение, что об этом написано на каждом углу. или это такой изящный троллинг? а если порассуждать почему так... С одной стороны тот же микротик наследует. с другой стороны в бондинг/бридж вы добавляете объект из 2го уровня модели OSI, т.о. наследовать свойства 3го уровня - неоднозначное решение. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 9, 2015 · Report post Какие такие состояния поднимать? Этот конфиг же у вас поднимает бридж и ип на нем: auto vmbr0 iface vmbr0 inet static address YYY.XXX.ZZZ.193 netmask 255.255.255.0 gateway YYY.XXX.ZZZ.1 bridge_ports bond0 bridge_stp off bridge_fd 0 2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP qlen 10000 link/ether 00:30:48:c9:f9:40 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP qlen 10000 link/ether 00:30:48:c9:f9:40 brd ff:ff:ff:ff:ff:ff 4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP qlen 10000 link/ether 00:30:48:c9:f9:40 brd ff:ff:ff:ff:ff:ff 5: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UNKNOWN qlen 10000 ... state UNKNOWN очень смущает. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Megas Posted December 9, 2015 · Report post brctl show vmbr0 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SABRE Posted December 10, 2015 · Report post state UNKNOWN очень смущает. А UP,LOWER_UP не смущают? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted December 10, 2015 · Report post state UNKNOWN очень смущает. А UP,LOWER_UP не смущают? Не смущаеют, эти флаги понятны. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...