Бридж (англ. bridge, мост) - это способ соединения двух сегментов Ethernet на канальном уровне, т.е. без использования протоколов более высокого уровня, таких как IP. Пакеты передаются на основе Ethernet-адресов, а не IP-адресов (как в маршрутизаторе). Поскольку передача выполняется на канальном уровне (уровень 2 модели OSI), все протоколы более высокого уровня прозрачно проходят через мост.
Термины коммутатор, мост и бридж могут использоваться на данной странице как взаимознаменяемые.
Код bridge в Linux является частичной реализацией стандарта ANSI/IEEE 802.1d. Впервые бриджинг в Linux появился в 2.2, затем код был переписан Леннертом Буйтенхеком (Lennert Buytenhek). Код bridge интегрирован в ядра серий 2.4 и 2.6.
Железо
- Intel Pentum 133
- RAM 32 mb
- hdd 1024 mb
- 2 сетевые карты 100 Mbps или 1000 Mbps (можно и больше, но желательно одинаковые).
Установка ПО
Ставим Linux Debian с минимумом пакетов, сеть не настраиваем. После установки Debian ставим несколько необходимых пакетов:
Код: Выделить всё
# apt-get mc
# apt-get install bridge-utils
# apt-get install iproute
# apt-get install iftop
# apt-get install bmon
# apt-get install openssh-server
# apt-get install iperf
Узнаем где наши сетевые карты
Код: Выделить всё
# ifconfig
eth1 Link encap:Ethernet HWaddr 00:19:5B:88:B2:85
inet6 addr: fe80::219:5bff:fe88:c287/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3871824 errors:0 dropped:0 overruns:0 frame:0
TX packets:4707022 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1031462268 (983.6 MiB) TX bytes:1375550080 (1.2 GiB)
Interrupt:10 Base address:0x6200
eth2 Link encap:Ethernet HWaddr 00:19:5B:88:C7:86
inet6 addr: fe80::219:5bff:fe88:c288/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4707923 errors:0 dropped:0 overruns:0 frame:0
TX packets:3855788 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1377378066 (1.2 GiB) TX bytes:1020322438 (973.0 MiB)
Interrupt:9 Base address:0x6300
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:56 errors:0 dropped:0 overruns:0 frame:0
TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4396 (4.2 KiB) TX bytes:4396 (4.2 KiB)
У меня на мосте он имеет такой вид:
Код: Выделить всё
# The loopback network interface
auto lo
iface lo inet loopback
Код: Выделить всё
#!/bin/sh
# Чистим настройки от предыдущего запуска скрипта
ifconfig br0 down # Отключаем интерфейс моста
ifconfig eth1 down # Отключаем сетевую карту eth1
ifconfig eth2 down # Отключаем сетевую карту eth2
brctl delbr br0 # Удаляем имя моста
# Запускаем бридж
brctl addbr br0 # Задаём имя бриджу
brctl addif br0 eth1 # Указываем какие интерфейсы
brctl addif br0 eth2 # работают в режиме моста.
brctl stp br0 off # Отключаем режим STP
# brctl setfd br0 15 # Актуально только при
# brctl setageing br0 60 # использовании STP
# Задаём IP моста, для дальнейшего управления им через ssh
ifconfig br0 192.168.110.251 netmask 255.255.0.0 broadcast 192.168.255.255
# Удаляем IP сетевых карт
ifconfig eth1 0.0.0.0
ifconfig eth2 0.0.0.0
# Поднимаем интерфейсы сетевых карт и моста
ifconfig eth1 up
ifconfig eth2 up
ifconfig br0 up
Код: Выделить всё
# chgrp root /etc/network/if-up.d/bridge
# chown root /etc/network/if-up.d/bridge
# chmod 774 /etc/network/if-up.d/bridge
Может возникнуть необходимость указать с какой стороны находится тот или иной компьютер. Дописываем в наш скрипт следующие команды:
# Сообщаем что ip 192.168.110.200 находится со стороны eth1
Код: Выделить всё
route add -host 192.168.110.200 dev eth1
Код: Выделить всё
route add -host 192.168.88.250 dev eth2
Код: Выделить всё
route add -net 192.168.55.0/24 dev eth1
Код: Выделить всё
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.110.200 * 255.255.255.255 UH 0 0 0 eth1
192.168.88.250 * 255.255.255.255 UH 0 0 0 eth2
192.168.55.0 * 255.255.255.0 U 0 0 0 eth1
localnet * 255.255.0.0 U 0 0 0 br0
Входим на мост удалённо как пользователь root (под root лучше не работать):
Код: Выделить всё
# ssh root@192.168.110.251
Мониторинг и управление
# Удобная утилита для просмотра загрузки сети и мостаю
Код: Выделить всё
bmon
Код: Выделить всё
iftop -i br0
Код: Выделить всё
ifconfig
Код: Выделить всё
ifconfig eth1 up (down)
Код: Выделить всё
brctl show
Код: Выделить всё
brctl showmacs br0
Код: Выделить всё
arp -a
Код: Выделить всё
tcpdump host 192.168.110.100
Код: Выделить всё
mc
http://xgu.ru/wiki/Linux_Bridge