В Linux эта команда используется для создания и управления мостом Ethernet.
Обычно это используется, когда на ваших серверах имеется несколько сетей ethernet, и вы хотите их объединить и представить как одну логическую сеть.
Например, если у вас есть eth0 и eth1, вы можете объединить их и представить их как просто br0, которые будут использовать как eth0, так и eth1 для сетевого трафика.
1. Создайте новый мост Ethernet с помощью addbr
Используя brctl addbr, мы можем создать новый мост Ethernet.
В следующем примере мы создали три сетевых моста на этом сервере: dev, stage и prod.
brctl addbr dev
brctl addbr stage
brctl addbr prod
Обратите внимание, что на данном этапе это всего лишь пустой мост Ethernet, на котором нет другой сети Ethernet.
2. Показать доступный мост Ethernet с использованием show
Используя brctl show, мы можем просмотреть все доступные сетевые мосты на вашем сервере.
В следующем примере будут отображаться все текущие экземпляры трех мостов, которые мы только что создали.
# brctl show
bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no stage 8000.000000000000 no
Если вы заметите, что последний столбец «interfaces» не имеет значений. Это означает, что ни один из этих мостов в настоящее время не имеет связанного с ним Ethernet-устройства.
3. Удалите существующий мост Ethernet с помощью delbr
Используя brctl delbr, мы можем удалить существующий мост ethernet.
В следующем примере удаляется экземпляр «stage» моста ethernet.
brctl delbr stage
Как вы видите из команды show, мы больше не видим «stage» моста ethernet.
# brctl show
bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
Обратите внимание, что когда мост активен (т.е. поднят), его можно удалить. Сначала нужно снести мост, а затем удалить его.
Также обратите внимание, что ранее команда brctl называлась brcfg.
4. Добавьте интерфейс к существующему мосту
Используя brctl addif, мы можем добавить интерфейс к существующему мосту Ethernet.
Следующий пример добавит сеть ethernet eth0 к мосту «dev», который мы только что создали.
Предупреждение. Не пытайтесь использовать это на каких-либо критичных машинах, так как вы можете потерять сетевое соединение с этой машиной, когда что-то пойдет не так. Попробуйте это только в тестовом экземпляре, где у вас есть доступ к консоли.
brctl addif dev eth0
В приведенном выше:
- Это действительно сделает eth0 как порт моста «dev».
- Таким образом, все пакеты, которые поступают на eth0, будут обрабатываться так, как будто они действительно прибывают на мост.
- Кроме того, когда пакеты отправляются на мост «dev», он будет использовать eth0. Когда несколько интерфейсов являются частью моста «dev», eth0 будет потенциальным кандидатом для отправки исходящих кадров с моста.
После добавления моста eth0 к «dev» команда brctl show отобразит следующее.
# brctl show
bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 prod 8000.000000000000 no
Как видно из приведенного выше вывода, последний столбец «interfaces» имеет значение eth0 для моста «dev».
Примечание. Если что-то пойдет не так, добавив eth0 на мост «dev», выполните следующую команду с консоли, чтобы удалить мост dev.
# brctl delbr dev
Обратите внимание, что если вы попытаетесь добавить интерфейс loopback к мосту, вы получите следующую команду недопустимого аргумента.
# brctl addif dev lo
can’t add lo to bridge dev: Invalid argument
Как вы можете себе представить, вы не можете добавить интерфейс, который не существует в системе для моста.
# brctl addif dev eth2
interface eth2 does not exist!
5. Добавьте несколько интерфейсов в существующий мост.
В приведенном выше примере мы добавили к мосту только одно Ethernet-устройство (eth0).
Но вся идея использования моста заключается в добавлении дополнительных интерфейсов к мосту.
В следующем примере мы добавляем как eth0, так и eth1 к мосту «dev».
# brctl addif dev eth0 eth1
Как видно из следующего вывода, для dev-моста мы видим две строки. В последнем столбце «interfaces» мы видим как eth0, так и eth1 для «dev» ethernet-моста.
# brctl show
bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 eth1 prod 8000.000000000000 no
Примечание
Если конкретный интерфейс Ethernet уже является частью моста, вы не можете добавить его на другой мост.
В принципе, одна сеть может быть частью только одного моста. Если нет, мы получим следующее сообщение об ошибке при попытке добавить его на другой мост.
# brctl addif prod eth1
device eth1 is already a member of a bridge; can't enslave it to bridge prod
6. Отслеживание MAC-адреса моста
Используя brctl showmacs, мы можем видеть все MAC-адреса моста.
В следующем примере, на данный момент, следующие два адреса mac, которые подключены к мосту ethernet «prod». Эти данные будут меняться в зависимости от текущего состояния того, что связано с мостом.
# brctl show
macs prod port no mac addr is local? ageing timer 1 00:50:56:89:54:bc yes 0.00 2 00:60:50:46:bc:40 no 0.00
7. Установите время старения для Mac-адреса на мосту
В следующем примере мы устанавливаем время старения адреса mac на 120 секунд на модеме «dev».
brctl setaging dev 120
В приведенном выше:
- dev – это имя моста, где мы устанавливаем это значение
- 120 секунд
- Итак, если пакет не отображается для моста «dev» за 120 секунд, тогда мост «dev» удалит адрес mac из базы данных пересылки.
8. Установка связующего дерева на мосте Ethernet
Используя brctl stp, мы можем установить связующее дерево на мосте Ethernet.
Но по умолчанию, spanning tree не включен, когда мы создаем мост.
Spanning tree полезно, когда у вас несколько мостов в вашей сети, и все они могут сотрудничать, чтобы найти кратчайший путь между двумя ethernets.
В следующем примере мы включаем связующее дерево на ethernet-мосте «dev».
Мы можем использовать on или yes для включения spanning tree. Таким образом, обе следующие команды будут делать то же самое.
brctl stp dev on
brctl stp dev yes
Как видно из следующего вывода на экране, значения в столбце «STP enabled» для моста «dev» теперь «yes».
# brctl show
bridge name bridge id STP enabled interfaces dev 8000.000000000000 yes prod 8000.000000000000 no
Чтобы отключить связующее дерево на мосту Ethernet, выполните следующие действия:
# brctl stp dev off
# brctl show
bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
9. Отображение значений параметра STP для моста
STP обозначает протокол Spanning Tree.
После того, как вы включили stp на вашем мосту, вы можете использовать showstp, как показано ниже, для просмотра всех значений параметра stp вашего моста.
Ниже будет показан параметр stp и его текущее значение для моста «dev».
# brctl show stp dev
dev
bridge id 000a.000000000000
designated root 000a.000000000000
root port 0
path cost 0
max age 19.99
bridge max age 19.99
hello time 1.99
bridge hello time 1.99
forward delay 14.99
bridge forward delay 14.99
ageing time 299.95
hello timer 0.00
tcn timer 0.00
topology change timer 0.00
gc timer 0.00
hash elasticity 4
hash max 512
mc last member count 2
mc init query count 2
mc router 1
mc snooping 1
mc last member timer 0.99
mc membership timer 259.96
mc querier timer 254.96
mc query interval 124.98 mc
response interval 9.99
mc init query interval 31.24
flags
10. Изменение значения параметров моста
Значения по умолчанию для параметра spanning tree для конкретного моста могут быть изменены. Вы также можете изменить другие значения параметров созданного моста.
Все следующие команды набора, упомянутые в таблице ниже, начинаются с brctl. Например:
brctl setageing dev 100
В следующей таблице показаны доступные команды набора для brctl. Значение времени находится в секундах.