LINUX.ORG.RU
решено ФорумAdmin

бридж между vlan транками.

 , , ,


1

1

Всем доброго времени! Помогите разобраться с задачкой: суть в том, что нужно заворачивать трафик из сети VLAN 5 на прокси. Для этого построен бридж из двух сетевых интерфейсов:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto br0
iface br0 inet static
address 172.16.11.15
netmask 255.255.255.0
gateway 172.16.11.1
bridge-ports eth0 eth1
bridge_stp off
dns-nameservers 217.195.65.9 8.8.4.4

Созданы правила ebtables и iptables:
ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 \
--ip-destination-port 80 -j redirect --redirect-target ACCEPT
iptables -t nat -A PREROUTING -s 172.16.11.0/12 -i br0 -p tcp -m tcp --dport 80
-j REDIRECT --to- ports 3128
При таком раскладе, при втыкании моста одним интерфейсом в акцесный порт свитча, а другим в ПК все нормально работает, трафик с компа заворачивается на прокси.

Когда мост ставится в разрыв между транковыми портами, сеть продолжает работать так, словно моста нет.
Трафик на прокси не заворачивается.

Я установил на мост пакет vlan, но не понимаю каким образом мне настраивать vlan-ы. Сразу все (3шт.), или только один, трафик из которого надо заруливать на прокси. И каким образом настраивать vlan... Помогите разобраться...



Последнее исправление: borschov (всего исправлений: 1)

Когда мост ставится в разрыв между транковыми портами, сеть
продолжает работать так, словно моста нет. Трафик на прокси
не заворачивается.

Логично. В транке трафик тэгированный. А, вообще, сложная затея какая-то...

AS ★★★★★
()
Ответ на: комментарий от borschov

роутер нельзя по своему вкусу конфигурить.

Почему ? И даже если нет доступа к нему по невероятной причине, всё равно можно упростить наверняка.

AS ★★★★★
()

В /proc есть параметр bridge-nf-filter-vlan-tagged, возможно, он вам нужен в ″1″. И смотрите счётчики правил в eb- и iptables, чтобы понять, попадают ли нужные вам пакеты.

Как правильно настривать vlan'ы в вашем случае точно не скажу, вроде нужно поднять vlan5 (br0.5) на интерфейсе br0. И всю работу с сетью 172.16.11.0/12 строить через этот vlan5 — назначать ip-адрес не на br0, а на br0.5.

mky ★★★★★
()
Ответ на: комментарий от mky

Как правильно настривать vlan'ы в вашем случае точно не скажу, вроде нужно поднять vlan5 (br0.5) на интерфейсе br0. И всю работу с сетью 172.16.11.0/12 строить через этот vlan5 — назначать ip-адрес не на br0, а на br0.5.

В точку.

+ что-то навроде

ip link add link br0 name br0.5 type vlan id 5

для поднятия влана с бриджа.

если iproute2 совсем старый (centos5)

vconfig add br0 5
ifconfig br0.5 какой-то-адрес up

animechaos
()
Последнее исправление: animechaos (всего исправлений: 1)
Ответ на: комментарий от anonymous

кстати было замечено, что бриджу пофиг на форвардинг, включен он или нет. работает и так и так.

borschov
() автор топика
Ответ на: комментарий от borschov

А ещё интересно, ведь во вланах обычно разные ip-адреса делают, чтобы маршрутизация между ними работала, а как бридж это осилит?

anonymous
()
Ответ на: комментарий от borschov

такова политика компании

Если политика компании предусматривает сильно замороченную сеть, что-то тут не так. За роутер кто-то же отвечает ? Или эта заморочка с редиректом - самостоятельный замысел одного отдела по-тихому ?

AS ★★★★★
()
Ответ на: комментарий от anonymous

а как бридж это осилит ?

А какая ему разница ? Он на L2 работает, а не L3.

AS ★★★★★
()
Ответ на: комментарий от borschov

такова политика компании

В общем, если хочется стоя, и в гамаке, то, думаю, заработать должен вариант с кучей бриджей. То есть, для всех VLAN, описанных в транке, делать пары интерфейсов «eth0.1 eth1.1», «eth0.2 eth1.2», «eth0.5 eth1.5» и их между собой бриджить. Бридж для основных интерфейсов, «eth0 eth1», убрать. Это если там нетегированный трафик вообще не предусмотрен.

Еще можно попробовать проще, но тут я не уверен: оставить бридж «eth0 eth1» и, дополнительно, сделать только «eth0.5 eth1.5».

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

пока решил идти по «простому сценарию» - добавил vlan в /etc/network/interfaces так:

auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto eth0.10
iface eth0.10 inet manual
vlan_raw_device eth0
auto eth1.10
iface eth1.10 inet manual
vlan_raw_device eth1

перепустил интерфейсы, получил:

Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
Added VLAN with VID == 7 to IF -:eth0:-
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
Added VLAN with VID == 7 to IF -:eth1:-

но в ifconfig этих интерфесов нет, это норм?

borschov
() автор топика
Ответ на: комментарий от borschov

но в ifconfig этих интерфесов нет, это норм?

Я не пользуюсь Ubuntu и не знаю, как настраивается сеть в дебианоподобных. Судя по «Added VLAN with VID == 7» что-то не так, так как в вышеприведённом конфиге я ничего, что напоминало бы 7, не вижу. Но VLAN-интерфейсы ifconfig показывает, даже те, которые в бридже:

# ifconfig eth0.904
eth0.904  Link encap:Ethernet  HWaddr 90:E2:BA:23:77:2F
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Хотя, сам по себе, ifconfig устарел и следует использовать ip:
# ip a show dev eth0.904
11: eth0.904@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 90:e2:ba:23:77:2f brd ff:ff:ff:ff:ff:ff

AS ★★★★★
()
Ответ на: комментарий от AS

«eth0.1 eth1.1», «eth0.2 eth1.2», «eth0.5 eth1.5» и их между собой бриджить

в один бридж вы имеете в виду, или для каждого тэга свой?

borschov
() автор топика

на данный момент достиг следующего:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto eth0.7
iface eth0.7 inet manual
vlan_raw_device eth0
auto eth1
iface eth1 inet manual

auto eth1.7
iface eth1.7 inet manual
vlan_raw_device eth1

auto br0
iface br0 inet static
address 172.16.11.15
netmask 255.255.255.0
gateway 172.16.11.1
bridge-ports eth0.7 eth1.7
bridge_stp off
dns-nameservers 217.195.65.9 8.8.4.4

при таких интерфейсах трафик бегает в сети VLAN7, на прокси траф заворачивается c остальными
сетями пока затык.
Пробовал добавлять в bridge-ports br0 другие VLAN (разумеется предварительно скофигурировав интерфейсы), так: bridge-ports eth0.7 eth1.7 eth0.11 eth1.11 eth0.17 eth1.17
эффекта нет 11 и 17 VLAN не работают.

Есть у кого-нибудь мысли, как сконфигурить остальные VLAN?

borschov
() автор топика
Ответ на: комментарий от borschov

«eth0.1 eth1.1», «eth0.2 eth1.2», «eth0.5 eth1.5» и их между собой бриджить

в один бридж вы имеете в виду, или для каждого тэга свой?

В этом виде - для каждого свой. Обязано работать, но не будет проходить нетегированный трафик, если он есть.

Пробовал добавлять в bridge-ports br0 другие VLAN
(разумеется предварительно скофигурировав интерфейсы), так:
bridge-ports eth0.7 eth1.7 eth0.11 eth1.11 eth0.17 eth1.17

Так точно не надо. Можно попробовать, что получится, если добавить br1 с «eth0 eth1». Но, как я раньше писал, уверенности в работоспособности этого варианта у меня нет.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 3)
Ответ на: комментарий от AS

спасибо за поддержку, заработало.
теперь проблема с заворотом трафика на прокси.
сейчас интерфейс моста (с нужным VLAN-ном) такой:
auto br1
iface br1 inet static
address 172.16.11.15
netmask 255.255.255.0
gateway 172.16.11.1
bridge-ports eth0.7 eth1.7
bridge_stp off
dns-nameservers 217.195.65.9 8.8.4.4


я несколько теряюсь каким он должен быть, возможно таким:
auto br1
iface br1 inet static
address 0.0.0.0
bridge-ports eth0.7 eth1.7
bridge_stp off #?
dns-nameservers #? 217.195.65.9 8.8.4.4


в сквиде так:
http_port 172.16.11.15:3128 transparent


тут тоже не ясно как должно быть,так:
http_port 3128 transparent
или м.б. вообще так:
http_port 127.0.0.1:3128 transparent
заворачиваю трафик на сквид так:
ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 \
--ip-destination-port 80 -j redirect --redirect-target ACCEPT



iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 \
-j REDIRECT --to-port 3128
эти правила работали, и траф заворачиался когда было без VLAN-ов, и был прописан адрес бриджа в интерфесах (172.16.11.15), и сквиде (http_port 172.16.11.15:3128 transparent).
посоветуйте плз.

borschov
() автор топика
Ответ на: комментарий от borschov

посоветуйте плз.

Дальше не знаю. Задачи редиректа трафика из бриджа у меня не стояло никогда. Но, думаю, никто не должен расстрелять за "-t nat -A PREROUTING -i eth1.7" без ebtables (или eth0.7, смотря откуда трафик идёт). Вдруг сработает...

AS ★★★★★
()
Ответ на: комментарий от AS

На работу бриджа с vlan-ами сильно влияет /proc/sys/net/bridge/bridge-nf-filter-vlan-tagged, если там 0, то тегированный трафик дропается.

Вообще, а что мешает поднять нужный vlan на br1 ( в которой подключены eth0 и eth1 ) и редиректить уже на него сначала через ebtables, а потом уже iptables-ом ?

brctl addbr br1
brctl addif br1 eth0
brctl addif br1 eth1
brctl setfd br1 0
ip li set br1 up
vconfig add br1 7
ifconfig br1.7 ....
vel ★★★★★
()
Ответ на: комментарий от vel

к сожалению /proc/sys/net/bridge/bridge-nf-filter-vlan-tagget
смогу проверить только в понедельник.
но если я правильно вас понял, вы предлагаете, поднять бридж
между физическими интерфейсами при /proc/sys/net/bridge/bridge-nf-filter-vlan-tagget 1,
назначить ему тэг, и пытаться заруливать нужную сеть на сквид,
без поднятия бриджей с остальными vlan-ами?
и вообще не описывать интефейсы для остальных vlan?

borschov
() автор топика
Ответ на: комментарий от AS

остановился на предложенном вами варианте. мост предложенный ниже vel-ом не поднялся. т.е. сейчас три моста между тегированными интерфейсами. Спасибо.

borschov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.