Интерфейс br0 что это
Интерфейсы Bridge являются виртуальными сетевыми интерфейсами, которые объединяют несколько физических сетевых интерфейсов для выполнения функций коммутатора (физические интерфейсы, добавленные в коммутатор, становятся портами коммутатора).
Запрещено добавлять в один Bridge интерфейс физические интерфейсы, входящие в разные группы – доверенные и недоверенные (например, запрещено одновременно добавлять интерфейсы из LAN и WAN сегментов), так как физические интерфейсы, добавленные в Bridge , становятся неконтролируемыми с точки зрения СКЗИ и МЭ. Соответственно, политику СКЗИ и правила МЭ нужно применять на виртуальном Bridge интерфейсе, который является логическим объединением физических интерфейсов.
Bridge интерфейсы описываются в файлах /etc/network/interfaces.d/bridgeN.
Cisco-like консоль не поддерживает изменение сетевых параметров (MTU/IP адрес/состояние) для Bridge интерфейсов.
Рассмотрим пример создания программного коммутатора bridge0 на основе физических интерфейсов eth1/eth2:
Если в файле /etc/network/interfaces или в файлах директории /etc/network/interfaces.d/ присутствуют строки с настройками для интерфейсов eth1 и eth2 , то необходимо их удалить (изменять файл /etc/ifaliases.cf относительно данных интерфейсов не нужно).
1. Отредактируйте файл /etc/network/interfaces.d/bridge0 , добавив в него описание для Bridge интерфейса, например:
root@sterragate:~# vim.tiny /etc/network/interfaces.d/bridge0
iface bridge0 inet static
bridge_ports eth1 eth2
pre-up ip link set dev eth1 mtu 1500
pre-up ip link set dev eth2 mtu 1500
• address – IP адрес логического интерфейса bridge0;
• netmask – сетевая маска для IP адрес логического интерфейса bridge0;
• mtu – параметр для задания MTU интерфейса bridge0; з начение по умолчанию – 1500; при изменении MTU интерфейса bridge0 значение MTU физических интерфейсов eth1 и eth2 не меняется;
• bridge_ports – имена физических интерфейсов, входящих в коммутатор;
• pre-up ip link set dev ethN mtu – выставление MTU для физических интерфейсов.
2. Чтобы Bridge интерфейс bridge0 появился в системе, выполните команду ifup bridge0 , после чего убедитесь, что данный интерфейс действительно доступен в системе, и он выступает коммутатором, а интерфейсы eth1/eth2 добавлены в bridge0:
root@sterragate:~# ifup bridge0
root@sterragate:~# ip address show bridge0
26: bridge0: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:50:56:9e:bf:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global bridge0
valid_lft forever preferred_lft forever
root@sterragate:~# brctl show bridge0
bridge name bridge id STP enabled interfaces
bridge0 8000.0050569ebf69 no eth1
root@sterragate:~# ip address show eth1
3: eth1: mtu 1500 qdisc pfifo_fast master bridge0 state UP group default qlen 1000
link/ether 00:50:56:9e:bf:69 brd ff:ff:ff:ff:ff:ff
root@sterragate:~# ip address show eth2
4: eth2: mtu 1500 qdisc pfifo_fast master bridge0 state UP group default qlen 1000
link/ether 00:50:56:9e:f5:ec brd ff:ff:ff:ff:ff:ff
Видно, что Bridge интерфейс bridge0 присутствует в системе и сконфигурирован, а также интерфейсы eth1/eth2 добавлены в bridge0. Расширенную информацию о bridge0 можно посмотреть при помощи утилиты brctl.
3. Добавьте Bridge интерфейс bridge0 в файл /etc/ifaliases.cf:
root@sterragate:~# vim.tiny /etc/ifaliases.cf
interface (name=»GigabitEthernet0/0″ pattern=»eth0″)
interface (name=»GigabitEthernet0/1″ pattern=»eth1″)
interface (name=»GigabitEthernet0/2″ pattern=»eth2″)
interface (name=»Bridge0″ pattern=»bridge0″)
interface (name=»default» pattern=»*»)
• значение параметра name должно быть задано в виде BridgeN.
• значение параметра pattern должно соответствовать имени Bridge интерфейса в нотации Linux.
4. Пересчитайте контрольную сумму файлa /etc /ifaliases .cf :
root@sterragate:~# integr_mgr calc -f /etc/ifaliases.cf
SUCCESS: Operation was successful.
5. Перезапустите VPN сервис:
root@sterragate:~# systemctl restart vpngate.service
Теперь для интерфейса Bridge0 можно задать политику СКЗИ и правила МЭ посредством cisco-like консоли или LSP, также настроить его средствами ОС.
unixforum.org
Как поднять и настроить Интерфейс br0 в Debian 4 Linux для Openvpn?
На сервере Openvpn OS Linyx Gentoo при выводе ifconfig обнаружил еще один сетевой интерфейс br0
К нему был привязан IP -adress карты внутренней сети.
Я сейчас поднял openvpn Debian 4 Linux и там этого интерфейса нет . Есть tap0 и eth0, 1 2
Расскажите в чем его смысл и как и для чего пользоваться.
Спасибо сказали:
AG4 Сообщения: 47 ОС: Mandriva 2010.0
Re: Интерфейс br0
Сообщение AG4 » 28.06.2008 23:44
вопрос какой-то неправильный. почему br0, а не tun0, tap0 ?
ну что там было на генте — это понятно только гентушнику, настраивающему ее (как мне показалось это мост к чему-то).
в чем смысл br0? а кто его знает.. может служил мостом между виртуальной машиной и локалкой.. ) это просто предположения)
а вообще, вопрос жутко непонятен 🙁
Спасибо сказали:
vei Сообщения: 102 ОС: debian 4.0
Re: Интерфейс br0
Сообщение vei » 29.06.2008 10:48
28.06.2008 23:44
вопрос какой-то неправильный. почему br0, а не tun0, tap0 ?
ну что там было на генте — это понятно только гентушнику, настраивающему ее (как мне показалось это мост к чему-то).
в чем смысл br0? а кто его знает.. может служил мостом между виртуальной машиной и локалкой.. ) это просто предположения)
а вообще, вопрос жутко непонятен 🙁
Я понял что есть 2 типа туннелей ROUTED и BRIDGE C первым типом все хорошо описано и там есть tun0, tap0
А вот как построить туннель 2-го типа я нигде не нашел и анализируя сервер с ГЕНТОО наткнулся в конфиге на строку server bridge . и интерфейс br0 думаю что и в ДЕБИАН это можно реализовать. Я захотел попробовать но споткнулся на br0 Пришлось плюнуть и сделать ROUTED с UDP и TUN. Все получилось, но интерес к BRIDGE остался отсюда и мой вопрос. Может быть неграмотный, ивиняет возможно то что я с Линух столкнулся первый раз, так как мне пришлось разбираться в оставшемся мне в наследство от старого админа ГЕНТОО. Вот я и вынужден был хоть как
то освоить Линух и ОВПН чтобы в сучае чего суметь установить(восстановить) Ну и пошли вопросы
Резюме Как построить туннель bridge Server Debian 4, Ovpn? Client Windows XP) Где посмотреть конфиги и обязателен в этом случае интерфейс br0, Если да, то как его получить?
Linux Bridge
Бридж (англ. bridge, мост) — это способ соединения двух сегментов Ethernet на канальном уровне, т.е. без использования протоколов более высокого уровня, таких как IP. Пакеты передаются на основе Ethernet-адресов, а не IP-адресов (как в маршрутизаторе). Поскольку передача выполняется на канальном уровне (уровень 2 модели OSI), все протоколы более высокого уровня прозрачно проходят через мост.
Термины коммутатор, мост и бридж могут использоваться на данной странице как взаимозаменяемые.
Код bridge в Linux является частичной реализацией стандарта ANSI/IEEE 802.1d [2]. Впервые бриджинг в Linux появился в 2.2, затем код был переписан Леннертом Буйтенхеком (Lennert Buytenhek). Код bridge интегрирован в ядра серий 2.4 и 2.6.
[править] Коммутация и фильтрация
Linux-мосты более мощные чем простые аппаратные мосты и коммутаторы, поскольку они могут ещё фильтровать и регулировать трафик. Комбинация коммутатора и брандмауэра выполняется с помощью родственного проекта ebtables.
[править] Состояние
Код обновляется как часть ядра Linux 2.4 и 2.6, доступного на kernel.org.
Возможные будущие усовершенствования:
- Описать фильтрацию STP
- Использовать Netlink interface для управление бриджами (прототип в 2.6.18)
- Добавить поддержку в user space
- Сделать поддержку RSTP и других расширений 802.1d STP
[править] Установка
Поддержка бриджинга есть в текущих ядрах 2.4 и 2.6 всех основных дистрибутивов Linux. Администрирование осуществляется утилитой brctl из пакета bridge-utils который есть практически во всех дистрибутивах,или в соверменных дистрибутивах утилитами ip и bridge из пакета iproute.
Инсталляция утилит выполняется стандартным для дистрибутива способом.
Например, в Debian GNU/Linux:
# apt-get install bridge-utils
Исходный код последнего релиза утилит можно получить со страницы Download.
Как вариант можно сделать свою самую последнюю сборку кода с kernel.org и собрать утилиты bridge-utils из GIT-репозитория.
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git $ cd bridge-utils $ autoconf $ ./configure
[править] Ручная конфигурация
[править] Сетевые карты
Перед тем как вы приступите к настройке коммутатора, убедитесь, что сетевые карты работают нормально. Не устанавливайте на них IP-адресов, и не позволяйте начальным скриптам выполнять DHCP-запрос с них. IP-адреса должны устанавливаться уже после того, как бридж сконфигурирован.
Команда ifconfig должна показывать обе (или больше, если их больше) сетевые карты, и они должны быть выключены, т.е. находиться в состоянии DOWN (это на момент начала настройки, дальше они будут переведены в UP).
[править] Загрузка модуля
В большинстве случаев код коммутатора оформляется в виде модуля. Если модуль сконфигурирован и установлен корректно, он автоматически загружается при первом вызове команды brctl.
Если ваши утилиты bridge-utilities корректно установлены, и ядро и его модуль bridge в порядке, вызовом команды brctl можно будет просмотреть маленькую сводку о синтаксисе команды:
# brctl # commands: addbr add bridge delbr delete bridge addif add interface to bridge delif delete interface from bridge setageing set ageing time setbridgeprio set bridge priority setfd set bridge forward delay sethello set hello time setmaxage set max message age setpathcost set path cost setportprio set port priority show show a list of bridges showmacs show a list of mac addrs showstp show bridge stp info stp turn stp on/off
[править] Создание и удаление коммутатора
brctl addbr "bridgename"
создаёт экземпляр логического коммутатора с именем bridgename. Для того чтобы выполнять коммутацию пакетов, нужно создать хотя бы один коммутатор. Можно воспринимать логический бридж как контейнер интерфейсов, принимающих участие в коммутации. Каждый экземпляр коммутатора представлен новым сетевым интерфейсом.
Соответствующая команда для удаления коммутатора:
brctl delbr bridgename
[править] Включение устройства в коммутатор
brctl addif bridgename device
включает сетевое устройство device в коммутатор с именем «bridgename.» Все устройства, включенные в один мост, работают как одна большая сеть. Нельзя добавить устройство в несколько бриджей одновременно, поскольку это не имеет никакого смысла. Коммутатору потребуется небольшое время после того как устройство подключено, для того чтобы узнать его Ethernet-адрес, а затем он начинает передачу (forward).
Соответствующая команда для выключения устройства из коммутатора:
brctl delif bridgename device
[править] Просмотр устройств
Команда brctl show показывает состояние всех работающих коммутаторов:
# brctl addbr br549 # brctl addif br549 eth0 # brctl addif br549 eth1 # brctl show bridge name bridge id STP enabled interfaces br549 8000.00004c9f0bd2 no eth0 eth1
Если выполнить команду brctl showmacs, будет показана информация о сетевых адресах источников трафика, прошедшего через коммутатор (и самого коммутатора тоже):
# brctl showmacs br549 port no mac addr is local? ageing timer 1 00:00:4c:9f:0b:ae no 17.84 1 00:00:4c:9f:0b:d2 yes 0.00 2 00:00:4c:9f:0b:d3 yes 0.00 1 00:02:55:1a:35:09 no 53.84 1 00:02:55:1a:82:87 no 11.53 .
Время жизни (ageing time) — это количество секунд, которое MAC-адрес будет находиться в таблице forwarding database после получения пакета с этим адресом. Записи в таблице периодически удаляются по тайм-ауту, для того чтобы не получилось, что они будут находиться там вечно. В нормальной ситуации, не понадобится менять данные параметры, но это сделать можно (время указывается в секундах)
# brctl setageing bridgename time
Если установить время в ноль, запись становится постоянной.
[править] Spanning Tree Protocol
Если используется несколько коммутаторов, для того чтобы избежать петель коммутации, нужно включить поддержку протокола Spanning Tree Protocol (Протокол остовного дерева).
# brctl stp br549 on
Посмотреть параметры STP можно так:
# brctl showstp br549 br549 bridge id 8000.00004c9f0bd2 designated root 0000.000480295a00 root port 1 path cost 104 max age 20.00 bridge max age 200.00 hello time 2.00 bridge hello time 20.00 forward delay 150.00 bridge forward delay 15.00 ageing time 300.00 gc interval 0.00 hello timer 0.00 tcn timer 0.00 topology change timer 0.00 gc timer 0.33 flags eth0 (1) port id 8001 state forwarding designated root 0000.000480295a00 path cost 100 designated bridge 001e.00048026b901 message age timer 17.84 designated port 80c1 forward delay timer 0.00 designated cost 4 hold timer 0.00 flags eth1 (2) port id 8002 state disabled designated root 8000.00004c9f0bd2 path cost 100 designated bridge 8000.00004c9f0bd2 message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.00 flags
[править] Настройка STP
Конфигурироваться может несколько параметров, имеющих отношение к Spanning Tree Protocol. Код автоматически определяет скорость соединения и другие параметры, поэтому, как правило, вручную их менять не нужно.
[править] Приоритет коммутатора
У каждого коммутатора есть относительный приоритет (priority) и стоимость (cost). Каждый интерфейс коммутатора ассоциируется с номером порта в коде STP. У каждого есть приоритет и стоимость, на основе которых принимается решение о том, какой путь для передачи пакета является кратчайшим. Всегда используется путь с наименьшей стоимостью (за исключением случая, когда этот путь разорван). Если коммутаторов и интерфейсов несколько, может понадобиться отрегулировать приоритеты, чтобы достичь максимальной производительности.
# brctl setbridgeprio bridgename priority
Бридж с наименьшим приоритетом избирается как корневой. Корневой бридж является центром остовного дерева (spanning tree) коммутационных связей.
[править] Приоритет и стоимость
У каждого интерфейса моста может быть своя собственная скорость, и её величина учитывается при принятии решения о том, какое соединение должно использоваться. У более быстрых интерфейсов должна быть более низкая стоимость.
# brctl setpathcost bridge port cost
Для выбора между разными портами, имеющими одинаковую стоимость, существует ещё приоритет.
[править] Задержка передачи (Forwarding delay)
Задержка передачи (forwarding delay) это время в течение которого порт находится в состояниях Listening и Learning, прежде чем перейти в состояние Forwarding. Это время нужно для того чтобы мост, когда он включается в сеть, прежде чем включаться в работу, сначала ознакомился с трафиком:
# brctl setfd bridgename time
[править] Время Hello
Время от времени корневой мост (Root Bridge) и выделенные мосты (Designated Bridges) отправляют пакет hello. Пакеты hello нужны для обмена информацией о топологии всей коммутируемой локальной сети.
# brctl sethello bridgename time
[править] max age — таймаут hello
Если другой коммутатор в дереве spanning tree не отправляет пакет hello в течение долгого времени, считается, что он не в порядке (dead). Таймаут устанавливается командой:
# brctl maxage bridgename time
[править] Пример настройки
Базовая настройка моста выполняется так:
# ifconfig eth0 0.0.0.0 # ifconfig eth1 0.0.0.0 # brctl addbr mybridge # brctl addif mybridge eth0 # brctl addif mybridge eth1 # ifconfig mybridge up
Хост настраивается как обычный мост. У него самого нет IP-адреса, поэтому к нему нельзя получить доступ (или взломать) удалённо по TCP/IP.
Опционально можно настроить виртуальный интерфейс mybridge на доступ по локальной сети. Он будет работать как обычный интерфейс — как сетевая карта. Процесс настройки полностью совпадает с вышеописанным, за тем исключением, что нужно заменить последнюю команду на такую:
# ifconfig mybridge 192.168.100.5 netmask 255.255.255.0
Если вы хотите чтобы мост автоматически получал IP-адрес у ADSL-модема по DHCP (или в другой похожей ситуации), сделайте так:
# ifconfig eth0 0.0.0.0 # ifconfig eth1 0.0.0.0 # brctl addbr mybridge # brctl addif mybridge eth0 # brctl addif mybridge eth1 # dhclient mybridge
Если делать это много раз, процессов dhclient может расплодиться великое множество. Или безжалостно убейте их, или почитайте об omshell.
[править] Конфигурирование через /etc/net
Сначала в /etc/net настраиваются два ethernet-устройства port0 и port1:
# cat >> /etc/net/iftab port0 mac 00:13:46:66:01:5e port1 mac 00:13:46:66:01:5f ^D # mkdir /etc/net/ifaces/port0 # cat > /etc/net/ifaces/port0/options TYPE=eth MODULE=via-rhine # mkdir /etc/net/ifaces/port1 # cat > /etc/net/ifaces/port1/options TYPE=eth MODULE=via-rhine ^D
После этого описывается мост:
# mkdir /etc/net/ifaces/mybridge # cat > /etc/net/ifaces/mybridge/options TYPE=bri HOST='port0 port1' ^D # cat > /etc/net/ifaces/mybridge/brctl stp AUTO on ^D
После этого можно поднять бридж командой ifup mybridge. Устройства port0 и port1 поднимутся автоматически.
[править] Конфигурирование в Debian
В файл /etc/network/interfaces мост прописывается в виде:
auto mybridge iface mybridge inet static bridge_ports eth0 eth1 address 192.168.10.10 netmask 255.255.255.0 network 192.168.10.0 broadcast 192.168.10.255
[править] FAQ
[править] Что делает мост/коммутатор?
Мост прозрачно пересылает трафик между несколькими сетевыми интерфейсами. На простом языке это означает, что коммутатор соединяет два или более интерфейсов Ethernet между собой, для того чтобы получилась большая Ethernet-сеть.
[править] Это как-нибудь зависит от используемых протоколов?
Нет. Коммутатор ничего не знает о протоколах высокого уровня, он только видит кадры Ethernet. Поэтому функциональность моста является протоколонезависимой, и проблем с передачей протоколов таких как IPX, NetBEUI, IP, IPv6 и других быть не должно.
[править] Чем этот код лучше чем аппаратный коммутатор?
Пожалуйста, имейте в виду, что этот код не писался с целью заменить Linux-боксами выделенное сетевое оборудование. Не надо воспринимать Linux с этим кодом как замену аппаратным коммутаторам. Это скорее расширение сетевых возможностей Linux. Как бывает, что Linux-маршрутизатор лучше чем аппаратный маршрутизатор (и наоборот), есть ситуации, когда Linux-мост лучше чем выделенный мост (и наоборот).
Основная сила кода моста Linux это его гибкость. И так есть уже огромнейшее количество всяких интересных вещей, которые можно делать с Linux (см. например, Linux Advanced Routing and Traffic Control), и мосты — ещё одно добавление к этой гремучей смеси.
Одним из главных преимуществ решения, базирующегося на Linux, в сравнении с выделенным коммутатором являются разнообразные возможности по фильтрации трафика. Можно использовать всю функциональность netfilter (iptables) в комбинации с мостами, что даёт больший функционал, чем проприетарные решения.
[править] Чем этот код хуже чем аппаратный коммутатор?
Для того чтобы работать в качестве моста, устройство должно быть переведено в неразборчивый (promiscuous) режим, в котором оно получает весь трафик, приходящий на интерфейс. В действительно загруженных сетях это может занять значительную часть процессора, замедляя работу системы. Выход — или использовать выделенную Linux-систему в качестве моста, или использовать аппаратный коммутатор.
[править] Какова производительность моста?
Производительность ограничивается используемыми сетевыми картами и процессором. Джеймс Ю (James Yu) из университета DePaul провёл исследование, в котором выполнил сравнение Linux моста и коммутатора Catalyst Yu-Linux-TSM2004.pdf
[править] Моего моста не видно в трассе traceroute’а!
И не должно быть видно. Работа моста является полностью прозрачной для сети (по крайней мере должна); сети, которые мост соединяет между собой, должны видеться как одна большая сеть. Именно поэтому мост и не виден в traceroute; пакеты и не думают о том, что они пересекают границы подсети.
Дополнительная информация об этом в книгах по сетям TCP/IP.
[править] Ничего не работает!
Когда я пытаюсь добавить мост, система говорит: «br_add_bridge: bad address»!
Или ваше ядро слишком старое (2.2 или более ранее), или вы забыли включить поддержку бриджей в ядро.
[править] Работает ли бриджинг на ядре 2.2?
Изначально разработка велась на 2.2, есть патчи для этого ядра. Но сейчас эти патчи уже не поддерживаются и не развиваются.
[править] Есть ли в планах поддержка RSTP (802.1w)?
Да. Ведётся работа по включению поддержки RSTP в будущий релиз для ядра 2.6. Код делался для ядра 2.4 и нуждается в доработке, тестировании и обновлении.
[править] Что можно соединять с помощью моста?
Мосты Linux очень гибкие; можно соединять как традиционные ethernet-устройства, так и псевдоустройства такие как PPP, VPN или VLANы.
Ограничения, которые накладываются на соединяемые устройства:
- У всех должен быть одинаковый максимальный размер пакета (MTU). Мост не выполняет фрагментирование пакетов.
- Устройства должны выглядеть как Ethernet, т.е. у них должны быть 6-байтные адреса отправителя и получателя.
- Должен поддерживаться неразборчивый (promiscuous) режим. Мост должен получать не только трафик, адресованный ему, но и весь сетевой трафик.
- Должен быть разрешён спуфинг адресов. У моста должна быть возможность отправлять данные по сети, как если бы они пришли от другого хоста.
[править] Можно ли выполнять коммутацию в сочетании с netfilter/iptables?
Да. Соответствующий код включен в большинство ядер. Смотрите проект ebtables.
[править] Работает ли он с Token Ring, FDDI и Firewire?
Нет. У этих протоколов отличается адресация и размер кадра.
[править] Я продолжаю получать сообщение retransmitting tcn bpdu!
Это означает, что ваш Linux-мост ретранслирует сообщение Topology Change Notification Bridge Protocol Data Unit (теперь хотя бы известно, что означают эти хитрые буквы :). Если серьёзно, это означает что где-то есть коммутатор (или другой Linux-мост), который не согласен с правилами STP.
В каждой коммутируемой сети есть один «главный коммутатор», который также называется корневым (root). Какой именно мост является корневым, можно узнать с помощью brctl.
Когда топология коммутируемой сети меняется (например, кто-то выдернул кабель между коммутаторами), коммутатор, который это обнаружил, отправляет сообщение корневому коммутатору. Корневой коммутатор устанавливает бит ‘topology changed’ в пакеты hello, которые будут отправляться в течение следующих X секунд (обычно X равно 30). В результате, все мосты узнают об изменении топологии, и они могут работать с учётом этого — например, могут удалить устаревшие MAC-записи.
После того как коммутатор отправляет сообщение об изменении топологии, он ждёт что в hello-сообщении будет установлен бит ‘»topology changed». Если его нет (бит в данном случае играет роль подтверждения получения информации о смене топологии), коммутатор решает, что сообщение было потеряно. Поэтому пересылает сообщение повторно. Однако, в некоторых коммутаторах реализация STP немного недоделанная, и они не отправляют подтверждение получения сообщения об изменении топологии. Если один из таких коммутаторов — корневой, все остальные коммутаторы будут постоянно повторно пересылать информацию об изменении топологии. В результате чего и будут появляться такие сообщения.
Список вещей, которые можно сделать:
- Найти, какой коммутатор является корневым, где он находится и под управлением какого программного обеспечения работает. Пожалуйста, сообщите о таком коммутаторе в список рассылки, чтобы можно было его добавить в blacklist.
- Заставить Linux-мост быть корневым. Найдите какой приоритет у коммутатора, который сейчас является корневым, и с помощью команды brctl ‘setbridgeprio’ установите приоритет линуксового моста на 1 меньше (Мост с наименьшим приоритетом всегда становится корневым).
- Вообще отключите STP на Linux-мосте. Только смотрите чтобы не появилось петель коммутации! Если у вас есть петли, и не работает STP, пакеты зациклятся и будут гулять по сети вечно, что сделает её нерабочей.
[править] Оно не работает с моей обычной ethernet-карточкой!
К сожалению, у некоторых сетевых карт глючные драйверы, которые сбоят во время загрузки. Ситуация улучшается, поэтому может помочь установка текущего ядра и сетевых драйверов. Ещё можно попробовать устройства другого производителя.
Пожалуйста, сообщайте обо всех проблемах в список рассылки «Bridge mailing list»: bridge@osdl.org. Если ваша сетевая карта не работает даже без бриджинга, попробуйте обратиться в список рассылки «Linux networking mailing list» linux-net@vger.kernel.org.
[править] Оно не работает с моей wireless-карточкой!
Это известная проблема, и она не связана с кодом моста. Большое количество wireless-карт не позволяет делать подмену (spoofing) адреса источника. В некоторых чипсетах это ограничение на уровне прошивки (firmware). Дополнительная информация может быть найдена в архивах списков рассылки.
Удалось ли кому-нибудь обойти проблему связанную с тем, что Wavelan не позволяет использовать никакие MAC-адреса за исключением своего собственного?
(Отвечает Michael Renzmann, mrenzmann at compulan.de)
99% пользователей никогда не смогут избавиться от этой проблемы. Для такой функции нужна специальная прошивка. Её нужно загрузить в память WaveLAN-карточки и тогда карточка сможет выполнять бриджинг. Но нет общедоступной документации интерфейса. Единственный выход — иметь полную версию библиотеки hcf, которая контролирует все действия карты, и в частности, доступ к памяти карты. Для получения этой библиотеки нужно убедить компанию Lucent, что это ей будет выгодно и, кроме всего прочего, подписать NDA. Поэтому, скорее всего, пока Lucent не передумает, вам не удастся получить доступ к коду (а в том, что Lucent передумает, есть большие сомнения).
Если вам срочно нужна wireless-карта которая может работать в мосте, нужно использовать те, что построены на базе чипсета prism (изготавливает Harris Intersil). Драйверы для этой карты есть на www.linux-wlan.com (веб-сайт от Absoval), и в одном из сообщений говорится, что общедоступна необходимая прошивка и программа для загрузки для Linux. Если вам нужны какие-то дополнительные возможности, нужно разговаривать с Absoval.
[править] И всё же я не понимаю!!
Полноценный мост для беспроводных сетей (802.11) требует поддержки WDS. В текущей реализации её нет.
Можно сделать ограниченную функциональность с некоторыми драйверами. Для этого обязательно чтобы устройство поддерживало разные адреса отправителя и получателя. Что и обеспечивает WDS.
Есть способы добиться чтобы оно заработало, но они достаточно запутанные, и их сложно понять без досконального знания 802.11, режимов его работы и формата заголовка кадра.
[править] Я получаю ошибку ‘too much work in interrupt’
Это связано с тем, что сетевая карта теряет пакеты. Можно попробовать несколько вещей. Во-первых, собрать драйвер с поддержкой NAPI (если он по умолчанию, не включен). NAPI делает так чтобы получал управление по программному прерыванию, не по прерыванию низкого уровня.
Если драйвер не поддерживает NAPI, можно попробовать увеличить объём работы, который драйвер может делать в течение обработки прерывания. Для 3c59x это делается с помощью опции max_interrupt_work (поэтому нужно добавить опцию ‘options 3c59x max_interrupt_work=10000’ в файл /etc/modules.conf). У других сетевых карт похожие опции.
[править] Работает ли DHCP через/поверх моста?
Мост передаёт DHCP-трафик (широковещательный) и ответы на него. Также можно использовать DHCP для установки локального IP-адреса на псевдо-интерфейс моста.
Одна из распространённых ошибок при использовании DHCP является установка задержки передачи (forwarding delay) на порту коммутатора равной 30 секунд. При такой задержке интерфейс когда он подключился к мосту не может посылать через него данные в течении первых 30 секунд. Причина в том, что при использовании моста в сложной топологии он должен сначала обнаружить остальные мосты дабы не создавать петель. Проблема была одной из причин создания протокола Rapid Spanning Tree Protocol (RSTP).
Если мост используется в одиночку (т.е. поблизости нет мостов) можно спокойно отключить задержку передачи (установить её равной 0) перед тем как подключать интерфейс к мосту. После этого сразу же можно вызывать dhclient:
# brctl setfd br0 0 # brctl addif br0 eth0 # dhclient eth0
[править] Как отключить фильтрацию и прочую обработку трафика netfilter, проходящего через мост?
Для того чтобы виртуальные мосты работали более приближенно к простому железу, нужно отключить применение правил iptables на самом мосту.
%# sysctl net.bridge.bridge-nf-filter-pppoe-tagged=0 %# sysctl net.bridge.bridge-nf-filter-vlan-tagged=0 %# sysctl net.bridge.bridge-nf-call-ip6tables=0 %# sysctl net.bridge.bridge-nf-call-iptables=0 %# sysctl net.bridge.bridge-nf-call-arptables=0
Это, в частности, помогает справиться с проблемой, когда трафик домена Xen, уходящий через внешний интерфейс обрабатывается правилом MASQUERADE некорректно.
[править] Контактная информация
[править] Дополнительная информация
- Ethernet VPN bridging
- Ebtables firewalling
- Ethernet-bridge + netfilter HOWTO
- Linux-bridge STP HOWTO
- Spanning Tree Protocol на Wikipedia
- Understanding Spanning-Tree Protocol (Cisco)
| Канальный уровень | ||
|---|---|---|
| Основные понятия | Коммутация • MAC-адрес • Сетевой интерфейс • CAM-таблица • VLAN • Broadcast • Multicast • Unicast • ifconfig • QinQ | |
| Петли коммутации и борьба с ними | ||
| Ключевые понятия | Широковещательный шторм • Петля коммутации • Остовное дерево | |
| Протоколы | STP • RSTP • MSTP • PVST • PVST+ | |
| Настройка STP на | коммутаторах Cisco • коммутаторах ProCurve | |
| Агрегирование каналов | ||
| Ключевые понятия | Агрегирование каналов • EtherChannel | |
| Протоколы | LACP • PAgP | |
| Настройка в | Linux • FreeBSD • NetBSD • OpenBSD • Mac OS X • Solaris • Windows • маршрутизаторах Cisco • коммутаторах Cisco • коммутаторах ProCurve | |
| Протокол ARP | ||
| Ключевые понятия | Протокол ARP • ARP-таблица • Статический ARP • Proxy ARP | |
| Программы | arp • arping • arp-sk • arpmap | |
| Виртуальные и программные коммутаторы, мосты и сетевые интерфейсы | ||
| Компоненты | tap-интерфейс • dummy-интерфейс • Мост в Linux • Мост в FreeBSD • vde • OpenVPN Bridge | |
| Программы | brctl (man) • ebtables | |
| Безопасность | ||
| Программы и библиотеки | Wireshark • Scapy | |
| MAC | MAC-spoofing • Port security • Поиск по MACу • MAC-spoofing в виртуальной машине | |
| ARP | ARP-spoofing • ettercap • arpwatch (man) • remarp • Dynamic ARP Protection | |
Интерфейс br0 что это
Здравствуйте! Основной вопрос: как в Linux создать bridge-интерфейс, который бы не имел мак-адреса ? Между собой требуется связать физический интерфейс vlan + интерфейс xen-виртуальной машины. В хост-машине интерфейсы vlan01 и br0 не нуждаются в мак-адресах, требуется максимально тупой свич.
Более подробно. Имеется следующая ситуация: сервер на хостинговой площадке. От провайдера транком на сервер приходят два vlan. Имеется привязка к мак-адресу на коммутаторах-маршрутизаторах провайдера. исходная конфигурация примерно такая: vlan01 Link encap:Ethernet HWaddr 00:1c:c0:4b:75:26
inet addr: Bcast: Mask:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:896710 errors:0 dropped:0 overruns:0 frame:0
TX packets:2592141 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:57959526 (55.2 MiB) TX bytes:3279930727 (3.0 GiB) vlan13 Link encap:Ethernet HWaddr 00:1c:c0:4b:75:26
inet addr: Bcast: Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:283496136 errors:0 dropped:0 overruns:0 frame:0
TX packets:425127979 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2248197200 (2.0 GiB) TX bytes:272220563 (259.6 MiB)
— На сервере потребовалось создать виртуальную машину Xen, отдав ей IP интерфейса vlan01.
Виртуальная машина создана-запущена, нужно прокинуть в неё сеть.
Логично, что для этого требуется создать br0-интерфейс. Для этого прописываю в интерфейсы: auto vlan01
iface vlan01 inet manual
up ifconfig $IFACE up
down ifconfig $IFACE down auto br0
iface br0 inet manual
up brctl addbr br0 && brctl addif br0 vlan01 && ifconfig br0 up Поскольку у провайдера имеется привязка, то в конфиге виртмашины пишу: vif = [ ‘ip=,mac=00:1c:c0:4b:75:26,bridge=br0’ ] —— Интерфейсы успешно подымаются, но вот незадача:
при поднятии интерфейса внутри виртмашины получаю ошибки: хост машина ругается:
[7216205.895504] vif3.0: received packet with own address as source address и еще вот такое сообщение: xen duplicate address detected Сеть в вирт машине не работает. После поднятия интерфейсов на хост машине, команда brctl showmacs br0 успешно показывает мак-адрес интерфейса vlan01 в списке мак-адресов, с флагом «локальный». попытки сделать ifconfig vlan01 -arp && ifconfig br0 -arp , в т.ч. и с последующим пересозданием интерфейса br0, успеха не принесли. Выходом оказалось изменение мак-адреса на интерфейсе vlan01 командой ifconfig vlan01 hw ether fe:ff:ff:ff:ff:ff но и этот мак адрес тем не менее присутствует в мак-таблице интерфейса br0. Собственно остается повторить вопрос: как в Linux создать bridge-интерфейс, который бы не имел мак-адреса ? Ну или другое решение вышеописанной задачи.
| Оглавление |
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PxeL, 22:23 , 13-Мрт-09, (1)
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PavelR, 22:48 , 13-Мрт-09, (2)
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , Аноним, 08:48 , 14-Мрт-09, (3)
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PavelR, 09:40 , 14-Мрт-09, (4)
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , cirus, 09:38 , 15-Мрт-09, ( 5 )
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PavelR, 10:01 , 15-Мрт-09, ( 6 )
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , cirus, 10:58 , 15-Мрт-09, ( 8 )
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PavelR, 12:55 , 15-Мрт-09, ( 9 )
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , den, 17:54 , 16-Мрт-09, ( 11 )
Сообщения по теме [Сортировка по времени | RSS] brctl
интерфейса без мака не может существовать по природе строения сетей>brctl
>интерфейса без мака не может существовать по природе строения сетейне совсем понял, почему именно ?
да и мне он не нужен как интерфейс, он мне нужен как свич.>>brctl
>>интерфейса без мака не может существовать по природе строения сетей
>
>не совсем понял, почему именно ?
>да и мне он не нужен как интерфейс, он мне нужен как
>свич.Интерфейса без МАС неможет быть .
Читай маны до просветления .
Модель OSI .>>>brctl
>>>интерфейса без мака не может существовать по природе строения сетей
>>
>>не совсем понял, почему именно ?
>>да и мне он не нужен как интерфейс, он мне нужен как
>>свич.
>
>Интерфейса без МАС неможет быть .
>Читай маны до просветления .
>Модель OSI .1. Интересно, как работают интерфейсы ppp. Очень интересно, как там передается MAC. надо подумать на досуге. Маны не посоветуете?
2. Мне не нужен этот интерфейс как интерфейс хост-системы.
Прошу прочитать и понять смысл моего вопроса и цель, которую пытаюсь достигнуть.Рекомендую
http://ru.wikipedia.org/wiki/ARP
совместно с tcpdump>Рекомендую
>http://ru.wikipedia.org/wiki/ARP
>совместно с tcpdumpЧто посоветуешь в ответ на второй вопрос ?
Хорошо, я понял что неправильно сформулировал название топика.
Мне нужен bridge без интерфейса в хост системе.
>Что посоветуешь в ответ на второй вопрос ?
Давайте что-нибудь возьмем за основу. Типа:
http://wiki.xensource.com/xenwiki/XenNetworking>>Что посоветуешь в ответ на второй вопрос ?
>
>Давайте что-нибудь возьмем за основу. Типа:
>http://wiki.xensource.com/xenwiki/XenNetworkingну допустим оно и лежит в основе.
noarp и выставление мака fe:ff:ff:ff:ff:ff основному интерфейсу делается тоже в соответствии с тем документом.
Просто не совсем понятно, будет ли машина откликаться на мак fe:ff:ff:ff:ff:ff,
поскольку имеем такой вывод:
host:~# brctl showmacs br0
port no mac addr is local? ageing timer
1 zz:zz:zz:zz:zz:zz no 76.19
. куча мак-адресов оборудования в вилане
1 yy:yy:yy:yy:yy:yy no 54.21
#мак адрес вирт машины
2 00:1c:c0:4b:75:26 no 0.00
#любимый и ненаглядный fe:ff:ff:ff:ff:ff
1 fe:ff:ff:ff:ff:ff yes 0.00протестировать со стороны в настоящее время возможности нет.
Что имеется сейчас:
host:~# ifconfig br0
br0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:298409 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:36288120 (34.6 MiB) TX bytes:468 (468.0 B)host:~# ifconfig vlan01
vlan01 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff
inet6 addr: fe80::21c:c0ff:fe4b:7526/64 Scope:Link
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:99067702 errors:0 dropped:0 overruns:0 frame:0
TX packets:163004561 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1656339003 (1.5 GiB) TX bytes:3726931430 (3.4 GiB)host:~# ifconfig vif14.0
vif14.0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:144706596 errors:0 dropped:0 overruns:0 frame:0
TX packets:98206390 errors:0 dropped:1 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:2027710148 (1.8 GiB) TX bytes:2511269918 (2.3 GiB)host:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.feffffffffff no vif14.0
vlan01PS: да, и ifconfig br0 noarp сделал уже вручную, на поднятом и живом интерфейсе br0.
Подымается всё это дело так(Debian):
auto vlan01
iface vlan01 inet manual
up ifconfig $IFACE up -arp hw ether fe:ff:ff:ff:ff:ff
down ifconfig $IFACE down
vlan-raw-device eth0auto br0
iface br0 inet manual
up brctl addbr br0 && brctl addif br0 vlan01 && ifconfig br0 up
down ifconfig br0 down && brctl delbr br0>[оверквотинг удален]
>>>да и мне он не нужен как интерфейс, он мне нужен как
>>>свич.
>>
>>Интерфейса без МАС неможет быть .
>>Читай маны до просветления .
>>Модель OSI .
>
>1. Интересно, как работают интерфейсы ppp. Очень интересно, как там передается MAC.
>надо подумать на досуге. Маны не посоветуете?
>Если среда передачи ethernet то имеем pppoe, протокол который базируется на ethernet фреймах —> снова приходим к mac 🙂
>>>brctl
>>>интерфейса без мака не может существовать по природе строения сетей
>>
>>не совсем понял, почему именно ?
>>да и мне он не нужен как интерфейс, он мне нужен как
>>свич.
>
>Интерфейса без МАС неможет быть .
>Читай маны до просветления .
>Модель OSI .неужеле? )))
а какже хабы и свичи? )))
Serial port (com) это тоже интерфейс и без мака)))
ненадо бросатся терминамиИмеется следующая ситуация:
сервер на хостинговой площадке. От провайдера транком на сервер приходят два vlan. Имеется привязка к мак-адресу на коммутаторах-маршрутизаторах провайдера.
Где ты видешь serial link ? Коммутатор строит таблицы mac-port.
Архив | Удалить
Индекс форумов | Темы | Пред. тема | След. темаОцените тред (1=ужас, 5=супер)? [ Рекомендовать для помещения в FAQ]
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , cirus, 10:58 , 15-Мрт-09, ( 8 )
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PavelR, 10:01 , 15-Мрт-09, ( 6 )
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , cirus, 09:38 , 15-Мрт-09, ( 5 )
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PavelR, 09:40 , 14-Мрт-09, (4)
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , Аноним, 08:48 , 14-Мрт-09, (3)
- Как в Linux создать bridge-интерфейс, который бы не имел MAC. , PavelR, 22:48 , 13-Мрт-09, (2)