LINUX.ORG.RU
ФорумAdmin

Объединение сетей. Сегментирование сети.

 , ,


0

1

Здравствуйте. Появилось у меня 3 задачи. И куча вопросов...

Сначала задачи. Первая задача. Объединить несколько приходящих ко мне vlan-ов в единую сеть с единым адресным пространством. Т.е., образно выражаясь, «воткнуть» их в один коммутатор.

В общем есть интерфейсы eth1.3000, eth1.3001, eth1.3002 и т. д. Где eth1.3001, eth1.3002… - это приходящие vlan. А eth1.3000 это, так сказать, центральная сеть, где находится DHCP-сервер и маршрутизатор.

Решилось все просто, а именно созданием бриджа br0. В него были добавлены все перечисленные выше интерфейсы. Ip-адреса у него нет, ибо не нужен.

Вторая задача чуть сложнее. Сделать так, чтобы пользователи в vlan-ах, т.е за интерфейсами eth1.3001 … 1.300n, не видели друг друга, а видели только «центральный» vlan eth1.3000. Другими словами изолировать порты нашего виртуального ком-ра друг от друга и сделать так, чтобы они видели только условный uplink. На ком-рах D-Link это реализуется через traffic_segmentation, у Cisco - switchport protected, а у SNR- port isolation. Сначала я нашел в просторах Интернета такое:
ebtables -A FORWARD --logical-in br0 --logical-out br0 -j DROP.
Ходить-то между интерфейсами перестало, но я потом долго думал как разрешить хождение пакетов на eth1.3000.

В итоге сделал иначе. Сначала просто ebtables -P FORWARD DROP

А затем:
ebtables -A FORWARD --logical-out br0 -i eth1.3000 -j ACCEPT
ebtables -A FORWARD --logical-out br0 -o eth1.3000 -j ACCEPT

Работать то работает, но правильно ли я сделал? И не будет ли у меня трафик внутри железа лишние «круги нарезать»? Подскажите, пожалуйста, новичку.

Задача третья. Сделать на одной железке несколько таких бриджей, у каждого из которых свой «uplink» и свои «порты». Адресное пространство у каждого, соответственно, своё. Пересекаться пользователи с этих бриджей будут, только через маршрутизацию на другом железе… а может и на этом.

И вот вопрос: а сработает ли такая настройка ebtables с несколькими бриджами, т. е. если просто для каждого бриджа добавлять правила
ebtables -A FORWARD --logical-out brX -i ethX -j ACCEPT
ebtables -A FORWARD --logical-out brX -o ethX -j ACCEPT

И будет ли подобное работать, если в качестве «uplink» к бриджу добавить bond интерфейс? Например, brctl addif br0 bond0
А на ebtables:
ebtables -A FORWARD --logical-out br0 -i bond0 -j ACCEPT
ebtables -A FORWARD --logical-out br0 -o bond0 -j ACCEPT
Или есть какие-то тонкости в ebtables, например?

И еще куча вопросов возникла. Если кто-то знает ответы на них, подскажите, пожалуйста. Я буду тестировать по мере возможностей, но надо сориентироваться побыстрее, так как времени мало.

1) Насколько безопасна такая схема в плане обеспечения стабильной работы сети. (Т.е. защиты ее от колец, штормов, хакеров, вирусов и т. п.) На конечных коммутаторах, куда подключены пользователи, включена защита от колец на порту и настроен storm control. Порты пользователей на ком-рах изолированы друг от друга. Размер одной сети (в одном бридже) до /19, хотя была мысль, все же уменьшить размер сети до /22 или /23.

Нужны ли текущей схеме какие-либо настройки ещё и на iptables, если ни у бриджей, ни у входящих в них интерфейсов нет ip-адресов. По логике я понимаю, что нет... Но мало ли, я совсем не имею опыта работы с ebtables.

2)Какая предположительно будет нагрузка на железо (процессор, память) при пропуске трафика 6-7 Гбит/с. Пользователей во всех бриджах будет 7-8 тысяч.

И при 15-20 Гбит/с (пользователей 20 тысяч)? Как Вы думаете, можно ли будет для этого использовать Intel Celeron J3455 4x1.5 ГГц?

И как вырастет нагрузка, если все же добавить ip адреса и настроить маршрутизацию между сетями прямо на этой машине? Т.е. если прогонять трафик не просто на канальном уровне, а еще что-то маршрутизировать. Трафик между сетями ожидается небольшой. Как минимум на порядок ниже, чем на uplink.



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

для изоляции можно делать так:

/sbin/ifconfig br0 addm vlan10
/sbin/ifconfig br0 private vlan10
/sbin/ifconfig br0 addm vlan20
/sbin/ifconfig br0 private vlan20

ZeroNight
()

А Вам не кажется, что Ваши задачи противоречат друг другу? Вы сначала объединяете три сегмента в одну сеть (что само по себе является весьма сомнительным делом, учитывая озвученное Вами количество пользователей - вся сеть будет броадкастами и arp-запросами/ответами забита), а потом доблестно решаете строго противоположную задачу - изоляцию сетей друг от друга.

IMHO, гораздо логичнее было бы не объединять существующие vlans, а настроить маршрутизацию между теми vlans, которые должны видеть друг друга. В Вашем случае это маршрутизация между vlan1.3000 и vlan1.3001 и между vlan1.3000 и vlan1.3002. При таких настройках машины из vlan1.3001 не будут видеть машины из vlan1.3002 и наоборот, тогда как компьютеры центрального сегмента (vlan1.3000) будут доступны в обоих подсетях (3001 и 3002).

Если Вы хотите, чтобы dhcp-сервер из vlan1.3000 раздавал также настройки машинам в vlan1.3001 и vlan1.3002, то эта задача решается установкой dhcp-relay на маршрутизаторе.

Ну и последнее - если Вы планируете задействовать iptables для управления трафиком на маршрутизаторе, то названия для сетевых интерфейсов Вы выбрали неудачное - iptables не понимают такой формат (ethx.y).

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

Успел уже обрадоваться, что все так легко и даже без ebtables можно обойтись. А теперь стесняюсь спросить, а это в linux? Подскажите, что надо делать, чтобы появилась опция private.

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

«2)Какая предположительно будет нагрузка на железо (процессор, память) при пропуске трафика 6-7 Гбит/с.» модуль бридж ядра столько не вытянет. к тому же он однопоточный - прилипнет к одному ядру. Это будет главным узким местом Вашей схемы
Лучше через L3 сделать, много конечно не вытянете на 1,5ГГц, но думаю что этот проц отфорвардит больше чем откоммутирует на обычном Linux.
«И при 15-20 Гбит/с (пользователей 20 тысяч)? Как Вы думаете, можно ли будет для этого использовать Intel Celeron J3455 4x1.5 ГГц?» только если использовать спец софт типа Soft switch/router VPP
не юзал его только читал.
Помимо процессора должна быть предназначенная для таких нагрузок сетевая карта, встроенная отвалится от перегрева на 15 секунде. + норм сетевушки и дрова должны поддерживать распределение очередей по ядрам процессора. полоса трафика это ни о чем, важнее мерить PPS ом производительность системы.
Схема объединить VLANы (широковещательные домены) одного коммутатора через br linux в один (глобальный для вашей схемы) широковещательный домен кривая, по крайне мере для коммутаторов cisco, у меня были в такой схеме глюки правда с использованием mikrotik, а не linux box. Трафик между VLAN пусть ходит через L3 форвардинг. в каждом VLAN своя сеть

Vlad-76 ★★★★
()
Последнее исправление: Vlad-76 (всего исправлений: 2)
Ответ на: комментарий от anonymous

Всё он прекрасно понимает.

Давно? Несколько лет назад, когда приходилось играться с vlans, не понимал.

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

В годах сложно сказать и с какой версии iptables, но на память, если не совру, года 1,5 работает.

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

но на память, если не совру, года 1,5 работает.

Ясно, спасибо за информацию.

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

А Вам не кажется, что Ваши задачи противоречат друг другу?

Да не, здесь-то как раз все норм. Я же просто хочу объединить, но с функцией traffic_segmentation. А он нужен, в т.ч. и потому, что

вся сеть будет броадкастами и arp-запросами/ответами забита.


гораздо логичнее было бы не объединять существующие vlans, а настроить маршрутизацию между теми vlans, которые должны видеть друг друга.

Да сейчас так и есть, разве что, vlans другие и их много. В каждом своя сеть. Сети маршрутизируются между собой, и там уже смысла нет изолировать их друг от друга. Изолировать я хотел, если будет единая сеть.

Если Вы хотите, чтобы dhcp-сервер из vlan1.3000 раздавал также настройки машинам в vlan1.3001 и vlan1.3002, то эта задача решается установкой dhcp-relay на маршрутизаторе.

У меня сейчас около 1000 устройств с dhcp-relay. И при переходе на новый софт они мне уже один раз устроили экшен. Хотелось бы совсем избавиться от relay. Да и не в этом краеугольный камень.

Изначально у меня другая цель. Все дело в том, что я не могу включить на центральном коммутаторе traffic_segmentation. Почему, я в другом сообщении (ниже) опишу. Может подскажете что-нибудь.

aleksey808
() автор топика
Ответ на: комментарий от Vlad-76

много конечно не вытянете на 1,5ГГц

Я могу и мощнее что-то поставить. Просто захотел поставить что-нибудь тихое, экономичное (в плане эл-ва) и с маленьким тепловыделением.

У меня сейчас в другом месте стоит несколько машин с двумя Intel Corporation 82574L и с одной двухголовой, например, Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06). Т.е. получается 4 интерфейса eth0-eth3. Объединены по две штуки в bond0 и bond1. У bond1 пара десятков vlanов (bond1.11, bond1.12… ). Bond0 и bond1 пропускают через машину около полутора и больше гигабит. Но там бриджа нет, а как раз маршрутизация, причем quagga. И еще кое-что по мелочам. Нагрузка в пике меньше 25 процентов и раскидана по 2 ядрам. Процессор там простенький Pentium(R) CPU G3420 @ 3.20GHz. Вот я и решил попробовать Celeron J3455.

Сетевую сейчас поставил Melanox CX311A (10 Гигабитную). Debian 9 определил как Mellanox Technologies MT27500 Family [ConnectX-3]. Про нее написано, что есть такая опция «Управление траффиком между множеством ядер». Интересно в случае с бриджом, она будет работать? А еще там пишут про аппаратную разгрузку TCP/IP. В общем в дальнейшем я думал купить двухголовую Mellanox ConnectX-3 или SNR-E2P10GS-M (1 порт на «uplink», а 1 на другие vlans).

Схема объединить VLANы (широковещательные домены) одного коммутатора через br linux в один (глобальный для вашей схемы) широковещательный домен кривая, по крайне мере для коммутаторов cisco, у меня были в такой схеме глюки правда с использованием mikrotik, а не linux box.

Cisco уже почти нет. Я думал на цисках 7600 (огромная «шумелка») серии с VBI поработать, но там свои проблемы. Причем там, как я понимаю, не как на mikrotik. Интерфейсы и так друг друга видят, как на L2 коммутаторе.

Трафик между VLAN пусть ходит через L3 форвардинг. в каждом VLAN своя сеть

Сейчас все так и есть, но очень хочется упростить схему, я бы даже сказал, что есть необходимость. Все дело в том, что пользователи в vlan, как на конечных коммутаторах, так и на промежуточных отделены друг от друга traffic_segmentation (в случае с dlink или другими настройками в зависимости от коммутатора). Опция весьма полезная для больших сетей. Она была еще на неуправляемых коммутаторах. Но проблема в том, что не могу на центральном коммутаторе включить ее. Потому что есть пользователи, которые должны видеть друг друга. Они в отдельном vlan, но если включить опцию на портах, перестанут видеть друг друга. А если не включать, то получится, что они не видят десятков «соседей», но видят пару тысяч других пользователей. Вот и пришлось делать кучу отдельных сетей в отдельных vlan.

У меня была мысли завернуть vlans с этими пользователями на отдельную железку и объединить, но разделить между собой приходящие vlans. Ну не выводить же их на отдельный коммутатор, напротив которого ставить другой, чтобы включить порт в порт. Согласитесь схемка еще та…

Может Вам еще какая-нибудь мысль в голову придет. Дробить адресное пространство для меня проблема, так как слишком много ip теряется. Плюс к новому ПО такую схему прикрутить сложно.

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

ip unnumbered на cisco для экономии IP адресов. каждый комп в отдельном VLAN. трафик между VLAN фильтруем ACL.

Vlad-76 ★★★★
()
Ответ на: комментарий от aleksey808

82599ES Gigabit Ethernet чип умеет фильтры аппаратно. насколько круто и насколько много ХЗ https://www.stableit.ru/2015/03/blog-post.html Этот чип хорош, дрова стабильные.
«Про нее написано, что есть такая опция «Управление траффиком между множеством ядер». Интересно в случае с бриджом, она будет работать?» Видимо имеется ввиду разбрасывание потоков трафика по ядрам. как это будет работать с бриджом - тестируйте!
С одной стороны вы хотите экономить IP адреса - тогда Вам нужен один широковещательный домен и одна сеть/19, если хотите изолировать компы - тогда каждый комп в отдельном VLAN.
Попробуйте ВАшу задачу опубликовать на nag.ru. там спецов по сетям очень много, может что подскажут/посоветуют/поругают.

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