Начинающий администратор, обслуживающий малую сеть, как правило, даже не задумывается о таком понятии как VLAN. В то же время, сложно представить современный средний бизнес, не говоря уже о большом, который бы не использовал при построении своей сети технологию VLAN.
Как правило, все инструкции по VLAN достаточно сложные для понимания новичком и, уж тем более, человеком, у которого отсутствует специальное образование по данному направлению.
Для нативного понимания технологии VLAN требуется наличие определенного понимания базовых процессов, происходящих в локальных сетях. И именно такого материала в подавляющем большинстве инструкций нет вообще как таковых. Если же они и имеются, уровень их описания может оказаться слишком сложным для новичка. Именно по этой причине многие начинающие администраторы обходят эту тему стороной, не уделяя ей должного внимания.
Со своей стороны мы подготовили для читателей публикацию, с помощью которой базовые принципы настройки VLAN сможет освоить даже человек без специального образования.
Некоторые термины и тонкости мы заведомо опустили, для того, чтобы материал был понятен наиболее широкому кругу читателей.
Базовые понятия принципов работы локальных сетей
Подробно рассматривать модель OSI мы не будем, т.к. это отнимет достаточно большое количество времени и усложнит понимание материала. Но в общих чертах понимать модель OSI все же требуется.
Ниже предлагаем вашему вниманию наиболее простую и понятную схему модели OSI.
Первый уровень OSI – физический. Как несложно догадаться, на нем происходит физическая передача данных в виде импульсов. Иными словами это передача битов 0 и 1, независимо от того, какая среда передачи данных используется, будь то витая пара, оптика или даже коаксиал (например, в сетях DOCSIS).
Второй уровень OSI – канальный. На канальном уровне уже появляется такой термин как MAC-адрес.
Вы, наверное, часто встречаете на сайтах производителей сетевого оборудования в описаниях коммутаторов пометку «Layer 2». Это как раз и обозначает то, что коммутатор работает на втором уровне модели OSI.
С понятием MAC-адреса вы сталкиваетесь постоянно, это не что иное, как уникальный физический адрес оборудования, представленный в формате CC:2D:E0:B4:ED:AD. Первые символы МАС-адреса содержат информацию о производителе, именно по этой причине в комплексных мерах повышения безопасности многие администраторы практикуют подмену внешних МАС-адресов на WAN-портах, как один из механизмов маскировки производителя оборудования и усложнения его идентификации. Во избежание конфликтов, МАС-адреса делают уникальными.
Мы сейчас не будем рассматривать хабы (Hub, концентраторы), как устройства, которые окончательно устарели. В то же время вы должны знать, что такие устройства ранее повсеместно использовались. Отличие хаба от коммутатора в том, что хаб всегда дублирует все пакеты на все порты.
На сегодня современные сети строятся с использованием коммутаторов второго уровня (или третьего). Коммутаторы также называют свичами, от английского Switch.
В отличие от хабов, у коммутатора имеется таблица MAC-адресов (MAC-table). В характеристиках коммутатора всегда указан размер данной таблицы, например 2К, 4К или 8К записей. Для более высокоуровневых решений размер таблиц еще больше.
Зачем нужна данная таблица? Во время работы коммутатор анализирует заголовки фреймов (MAC Header) и проверяет, с какого МАС поступил фрейм. После этого МАС отправителя динамически привязывается к конкретному порту.
Если коммутатор получил фрейм с неизвестным ему конечным МАС, он разошлет его на все порты. По сути, это «режим обучения». Затем, после получения ответа от получателя о приеме фрейма, коммутатор привяжет к конкретному порту и МАС получателя. В дальнейшем коммутатор будет слать фреймы только на конкретный порт.
Этим достигается сразу несколько вещей. Во-первых, становится возможным одновременная независимая передача данных на всех портах, она будет ограничена только скоростью порта и возможностями коммутационной матрицы. Во-вторых, повышается безопасность передаваемых данных, т.к. данные будут передаваться только на требуемый порт.
Современные коммутаторы зачастую работают по принципу «Store-and-forward», это так называемая передача с промежуточным хранением. Зачем это нужно и как это работает? Во время получения данных, коммутатор проверяет контрольную сумму, что позволяет избежать передачи поврежденных данных.
Третий уровень OSI – сетевой. Для лучшего понимания, необходимо знать, что на третьем уровне добавляется IP header – заголовок пакета с информацией об IP-адресах. Коммутаторы Layer 2 не обрабатывают IP-заголовки и работают только с «внешним» MAC-заголовком. Для обработки IP header применяются маршрутизаторы Layer 3, которые способны управлять траффиком на основе IP-заголовков.
Существуют также коммутаторы Layer 2 с функциями Layer 3. К примеру, это может быть коммутатор с возможностью статической маршрутизации.
Четвертый уровень OSI – транспортный. На 4-м уровне появляется протоколы TCP и UDP, которые определяют метод доставки информации. Для TCP это доставка пакетов с подтверждением о получении, для UDP – доставка без подтверждения.
Последующие уровни OSI сегодня мы рассматривать не будем, они нам сейчас не интересны. Возвращаемся к Layer 2.
Следующая вещь, которую необходимо знать о коммутаторах это работа с широковещательными пакетами.
Всего в локальной сети существует 3 варианта доставки информации:
-
Unicast
-
Multicast
-
Broadcast
Данные термины вы неоднократно встречали, коротко пройдемся по всем.
Unicast это обычная передача данных от устройства А к устройству Б.
Multicast – передача данных нескольким выборочным устройствам, например от устройства А к устройствам Б и Г.
Broadcast – передача данных всем участникам сети, например от устройства А на устройства Б, В и Г. Бродкаст еще называют широковещательными запросами. Отправляются они с использованием адреса FF:FF:FF:FF:FF:FF, такие фреймы принимаются всеми устройствами, входящими в локальную сеть.
Если рассматривать хаб, в нем присутствует 1 широковещательный домен (broadcast domain) и 1 домен коллизий (collision domain). Что это значит? Это значит, что в пределах хаба, широковещательный запрос (FF:FF:FF:FF:FF:FF) передается всем портам, а одновременная передача данных возможна только по одному интерфейсу.
В коммутаторах также 1 широковещательный домен, а вот доменов коллизий столько, сколько портов. Иными словами, широковещательный запрос передается на все порты, но передача данных возможна по всем портам одновременно.
Вот мы плавно и подошли к VLAN. В случае с применением VLAN, бродкастовых доменов будет столько, сколько создано вланов. Это значит, что устройства, находящиеся в разных VLAN смогут отправлять broadcast FF:FF:FF:FF:FF:FF только в пределах своей виртуальной сети.
Что такое VLAN и как это работает
VLAN является сокращением от английского Virtual Local Area Network, обозначающего виртуальную локальную сеть.
Технология VLAN подробно описана в стандарте IEEE 802.1Q и предоставляет возможность объединения устройств в разные логические сети при использовании единой физической среды передачи данных и единого оборудования. По сути, влан эмулирует несколько каналов передачи данных и несколько физических коммутаторов. Собственно для конечных клиентов это так и выглядит.
За счет использования вланов, предприятия и операторы связи могут экономить ресурсы на прокладку сетей, покупку дополнительного оборудования и сетевое администрирование. К тому же влан позволяет обеспечивать повышенную безопасность передаваемых данных, а также обеспечить удаленное управление по защищенному каналу.
VLAN предоставляет огромные преимущества:
-
виртуализация и деление сети без покупки/установки дополнительного оборудования и линий связи. Вы можете создать 2, 3, 5, 20, сколько угодно подсетей на существующем оборудовании, без прокладки новых кабелей.
-
изоляция подсетей, изоляция подключенных клиентов;
Стандартом предусмотрено до 4096 VLAN’ов, иногда этого может оказаться мало или недостаточно для реализации сложной сети. Оборудование Mikrotik (под управлением RouterOS) поддерживает технологию вложенных VLAN’ов – QinQ.
Следует четко понимать, что QinQ уменьшает размер MTU (размер пакетов), что чревато фрагментацией пакетов. По этой причине QinQ следует использовать только в случае невозможности реализации иного механизма.
Зачем нужен QinQ и где он используется?
QinQ иногда используется интернет-провайдерами для подключения клиентов, при котором может и не хватить 4+ тысяч VLAN’ов.
Также QinQ может быть использован провайдером для транзита клиентских VLAN через свою сеть. К примеру, у провайдера есть клиент с несколькими подключениями, на каждом из которых есть свои VLAN, при этом заказчик не желает менять VLAN ID на своей стороне, но сам провайдер указанные идентификаторы уже использует.
В этом плане QinQ чем-то напоминает проброс портов, только в данном случае пробрасываются VLAN’ы, обеспечивая для клиента «логический транк».
Принцип работы VLAN
При использовании VLAN, в Ethernet-фреймы внедряется дополнительный заголовок-метка, размером 4 байта:
После добавления метки, коммутатор удаляет из фрейма старую контрольную сумму FCS (Frame check sequence), рассчитывает и добавляет новую.
Последующая обработка фреймов осуществляется на основе «меток», именуемых в VLAN тэгами. С метками VLAN работают коммутаторы и маршрутизаторы, для конечных клиентов они остаются незамеченными, потому как на «портах доступа» тег снимается.
VLAN на Mikrotik: варианты реализации
«Микротик микротику рознь», это необходимо всегда помнить, знать и понимать, при реализации VLAN. У Mikrotik, как и у любого другого производителя сетевого оборудования, свое собственное видение реализации настроек VLAN.
На базе оборудования Mikrotik возможна реализация как программных (софтовых) VLAN, так и аппаратных (hardware).
Аппаратный VLAN, как следует из названия, реализуется непосредственно на базе switch-chip. Возможность реализации аппаратного влана зависит от того, какой именно чип коммутации применяется в вашем устройстве.
По этому поводу рекомендуем ознакомиться с официальным руководством Switch Chip Features. Если коротко, аппаратный VLAN (Hardware VLAN) поддерживается следующими чипами:
-
Atheros7240:
-
RB750
-
RB750UP
-
RB751U-2HnD
-
RB951-2n
-
Atheros8227:
-
RB941-2nD (hAP lite)
-
RB951Ui-2nD (hAP)
-
RB952Ui-5ac2nD (hAP ac lite)
-
RB750r2 (hEX lite)
-
RB750UPr2 (hEX PoE lite)
-
RB750P-PBr2 (PowerBox)
-
RB750P r2
-
RBOmniTikU-5HnDr2 (OmniTIK 5)
-
RBOmniTikUPA-5HnDr2 (OmniTIK 5 PoE)
-
RB2011 series (ether6-10)
-
RB951Ui-2HnD
-
Atheros8316:
-
RB493G
-
RB435G
-
RB450G
-
RB750G
-
RB1200
-
RB1100
-
Atheros8327:
-
RB953GS
-
RB850Gx2
-
RB2011 series (ether1-5 + sfp1)
-
RB750GL
-
RB751G-2HnD
-
RB951G-2HnD
-
RBD52G-5HacD2HnD (hAP ac²)
-
cAP ac
-
RB1100AH
-
RB1100AHx2
-
CCR1009 series (ether1-4)
-
RB433GL
-
QCA8337:
-
RB3011 series
-
RB OmniTik ac series
-
RB750Gr2 (hEX)
-
RB962UiGS-5HacT2HnT (hAP ac)
-
RB960PGS (hEX PoE)
-
RB960PGS-PB (PowerBox Pro)
Во всех перечисленных устройствах VLAN можно реализовать средствам чипа коммутации. Преимущество данного метода состоит в том, что обработка тегов, их добавление и снятие выполняется самим чипом, без участия процессора (hardware offload, аппаратная разгрузка).
К этому методу следует прибегать в тех случаях, когда:
-
стоит цель добиться максимальной производительности;
-
производительность VLAN упирается в возможности CPU;
-
реализация некоторых возможностей недостижима средствами программного VLAN;
Hardware VLAN предлагает большое число параметров, опций и правил обработки фреймов. Подробную информацию о настройке аппаратного VLAN вы можете найти в официальной документации по ссылке выше.
В случае, если эта тема будет востребованной, мы опубликуем отдельную инструкцию.
Второй метод реализации – программный / «софтовый» VLAN / Software VLAN. Именно данный метод наиболее часто описывается и встречается на практике. Он не так функционален, зато максимально прост в настройке.
Настройка программного VLAN в RouterOS на оборудовании Mikrotik
Рассматривать процесс настройки мы будем на примере устройств RB750UPr2 (hEX POE lite) и RB750r2 (hEX lite). Оба устройства реализованы на базе платформы MIPSBE (qca9531L). И там и там 64 МБ оперативной памяти, POE-версия отличается поддержкой PoE-out. Есть и другое отличие, в обычных версиях процессор работает на более высокой частоте – 850 МГц против 650 МГц у POE-версии. Такая разница обеспечивает на 30% большую производительность.
RB750UPr2 мы будем использовать в качестве главного шлюза, центрального узла коммутации и источника питания, два оставшиеся устройства RB750r2 будут использованы в качестве коммутаторов.
Оговоримся сразу, вариант не самый оптимальный, немного доплатив, можно приобрести RB260GS (SwOS) с гигабитными интерфейсами. Как вариант это могут быть и недорогие коммутаторы сторонних производителей, например TL-SG105E / TL-GS108E от TP-Link. При этом процесс их настройки будет отличаться.
Также можно рассматривать hAP lite (RB941-2nD), hAP ac lite (RB952Ui-5ac2nD), hAP (RB951Ui-2nD) и прочие модели со встроенным модулем Wi-Fi. Особый интерес будут представлять RB951Ui-2HnD и гигабитный RB951G-2HnD. Оба устройства оснащены радиомодулями повышенной мощности и большим объемом оперативной памяти, что позволяет реализовать беспроводную сеть на предприятии с несколькими SSID, в т.ч. HotSpot. Такой вариант реализации обойдется заметно дешевле, нежели использование, к примеру, CRS109-8G-1S-2HnD-IN.
Чуть ниже предлагаем вашему вниманию условную схему сети, которую мы и будем реализовывать.
В качестве основного устройства выбран Mikrotik hEX POE lite (RB750UPr2), он будет выполнять функции шлюза, маршрутизирующего траффик в локальной сети вымышленного предприятия. На схеме данное устройство обозначено как узел R1.
Допустим, нам требуется реализовать 2 подсети – офисную и гостевую. Для офисной сети мы будем использовать VLAN 20, для гостевой – VLAN 30. Номера вланов особого значения не имеют, главное, чтобы вы четко понимали, какой из них за какую сеть отвечает.
VLAN1 использовать нельзя, т.к. это «нативный» VLAN (native) для большого числа оборудования, в том числе и для Mikrotik.
Для офисной сети с VLAN 20 мы будем использовать подсеть 10.20.0.0/24, а для гостевой – 10.30.0.0/24. Идеальным вариантом является использование разных подсетей из списка:
-
10.0.0.0 — 10.255.255.255
-
172.16.0.0 — 172.31.255.255
-
192.168.0.0 — 192.168.255.255
Например, 10.х.х.х для офиса и 192.168.х.х для гостевой сети. Подсеть 100.64.0.0 — 100.127.255.255 использовать не стоит, т.к. она предназначена для NAT интернет-провайдеров (CGN, Carrier-Grade NAT).
Конфигурация маршрутизатора R1
На узле R1 реализуем следующую конфигурацию:
-
ether1 используется для подключения к сети провайдера;
-
ether2 кидаем в офисную сеть VLAN 20;
-
ether3 кидаем в гостевую сеть VLAN 30;
-
ether4 и ether5 будем использовать в качестве магистральных каналов (trunk) для подключения двух дополнительных hEX lite (RB750r2), на схеме они обозначены как R2 и R3.
Сами R2 и R3 будем использовать вместо управляемых коммутаторов.
Перед настройкой мы выполняем полный сброс устройства и начинаем настройку с нуля. Вы же можете выполнять модификацию существующей конфигурации, правда в этом случае вам потребуется на завершающем этапе удалить некоторые элементы, среди которых бридж, dhcp-сервер и т.п. созданные по-умолчанию.
Поскольку устройств Mikrotik у нас несколько, первым делом задаем имя устройства (identity, alias), чтобы впоследствии не возникало путаницы с управлением. Делаем это командой:
/system identity
set name=R1-POE
Затем, в целях повышения безопасности, отключаем все неиспользуемые сервисы, оставляем только Winbox:
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set ssh disabled=yes
set api disabled=yes
set api-ssl disabled=yes
Для удобства, переименовываем сетевые интерфейсы и добавляем к ним комментарии:
/interface ethernet
set [ find default-name=ether1 ] comment=WAN name=ether1-wan
set [ find default-name=ether2 ] comment="VLAN20 OFFICE"
set [ find default-name=ether3 ] comment="VLAN30 GUEST"
set [ find default-name=ether4 ] comment="TRUNK 1" name=ether4-trunk
set [ find default-name=ether5 ] comment="TRUNK 2" name=ether5-trunk
Это будет особенно актуально, если устройств приличное количество и/или они оснащены большим количеством интерфейсов.
Как видите, ether1 мы переименовали в ether1-wan, а ether4/ether5 в ether4-trunk/ether5-trunk.
На интерфейсе ether1-wan у нас подключение к сети провайдера. Настраиваем динамическое получение IP (от DHCP-сервера):
/ip dhcp-client
add dhcp-options=hostname,clientid disabled=no interface=ether1-wan
При использовании софтового VLAN, существует два основные типа интерфейсов:
-
тегированные (trunk);
-
нетегированные (access);
Тегированные интерфейсы, это интерфейсы, на которых фреймы маркируются при помощи VLAN-меток. На таких интерфейсах можно одновременно передавать несколько VLAN’ов и, как правило, они используются в качестве магистральных каналов. Такие порты называют транками (trunk).
Нетегированные (untagged) интерфейсы используют для подключения конечных устройств и клиентов, их еще можно называть «портами доступа» (access port).
При программной реализации портов доступа VLAN, в RouterOS используются бриджи. Поскольку у нас предполагается выделение 2 портов под офисную и гостевую сеть, создаем для них соответствующие бриджи:
/interface bridge
add comment=OFFICE fast-forward=no name=bridge-vlan20-office
add arp=reply-only comment=GUEST fast-forward=no name=bridge-vlan30-guest
Как вы могли заметить, для гостевого бриджа мы используем дополнительный параметр arp=reply-only, он будет использоваться совместно с ARP для того, чтобы сделать невозможным использование самоназначенных IP в гостевой сети. Иными словами, маршрутизатор не будет отвечать на запросы устройств, на которых назначен статический IP.
Перед настройкой DHCP, заранее, для каждой подсети необходимо создать пулы адресов:
/ip pool
add comment=OFFICE name=pool-vlan20-office ranges=10.20.0.11-10.20.0.253
add comment=GUEST name=pool-vlan30-guest ranges=10.30.0.11-10.30.0.253
Если в сети больше 250+ устройств, необходимо создавать дополнительные пулы. Затем они выбираются в параметре «next pool» (следующий пул, который будет задействован после исчерпания предыдущего).
В нашем случае это 10.20.0.11-10.20.0.253 для офисных устройств и 10.30.0.11-10.30.0.253 для гостевых. Первые и последний IP-адрес в обоих диапазонах мы резервируем для будущих возможных сервисов (делать это вовсе не обязательно).
Назначать все IP мы будем средствами Mikrotik, при помощи DHCP-серверов:
/ip dhcp-server
add address-pool=pool-vlan20-office disabled=no interface=\
bridge-vlan20-office name=dhcp-vlan20-office
add add-arp=yes address-pool=pool-vlan30-guest disabled=no interface=\
bridge-vlan30-guest name=dhcp-vlan30-guest
Обратите внимание! Создано 2 сервера, по одному на каждый бридж. Каждый сервер будет выдавать IP из своего пула, таким образом, для VLAN 20 и VLAN 30 будут выдаваться адреса с разных подсетей (10.20.х и 10.30.х).
Для гостей мы дополнительно используем параметр add-arp=yes, он будет добавлять ARP для всех выданных аренд (DHCP leases). Если этого не сделать, гостевая сеть не будет работать, т.к. гостевой бридж не будет отвечать на запросы клиентов – ранее в настройках бриджа мы уже задали параметр arp=reply-only (только отвечать).
В каждой из подсетей назначаем маршрутизатору свой отдельный IP:
/ip address
add address=10.20.0.1/24 comment=OFFICE interface=bridge-vlan20-office \
network=10.20.0.0
add address=10.30.0.1/24 comment=GUEST interface=bridge-vlan30-guest network=\
10.30.0.0
Затем для каждой подсети указываем DNS и шлюз, используемые по-умолчанию:
/ip dhcp-server network
add address=10.20.0.0/24 comment=OFFICE dns-server=10.20.0.1 gateway=\
10.20.0.1 netmask=24
add address=10.30.0.0/24 comment=GUEST dns-server=10.30.0.1 gateway=10.30.0.1 \
netmask=24
Поскольку к интерфейсам ether4 и ether5 будут подключены другие маршрутизаторы/коммутаторы (R2 и R3), их необходимо превратить в транки, выдав по 2 vlan в каждый порт:
/interface vlan
add interface=ether4-trunk name=vlan20-trunk-to-R2 vlan-id=20
add interface=ether5-trunk name=vlan20-trunk-to-R3 vlan-id=20
add interface=ether4-trunk name=vlan30-trunk-to-R2 vlan-id=30
add interface=ether5-trunk name=vlan30-trunk-to-R3 vlan-id=30
Делать это можно как с вкладки Interfaces/VLAN, так и с основного раздела.
VLAN’ы созданы, но порты ether2 и ether3 все еще ни к чему не привязаны.
Порт ether2 необходимо закинуть в bridge-vlan20-office и туда же закинуть 20-й влан с интерфейсов ether4 и ether5. Те же действия выполняем для ether3 и vlan 30 на транковых портах.
Иными словами, при помощи бриджа мы объединили каждый vlan в свой бридж, и туда же закинули соответствующие порты доступа. Как видите, ничего сложного здесь нет.
/interface bridge port
add bridge=bridge-vlan20-office comment="OFFICE access port" interface=ether2
add bridge=bridge-vlan30-guest comment="GUEST access port" interface=ether3
add bridge=bridge-vlan20-office comment="VLAN 20" interface=\
vlan20-trunk-to-R2
add bridge=bridge-vlan20-office comment="VLAN 20" interface=\
vlan20-trunk-to-R3
add bridge=bridge-vlan30-guest comment="VLAN 30" interface=vlan30-trunk-to-R2
add bridge=bridge-vlan30-guest comment="VLAN 30" interface=vlan30-trunk-to-R3
Собственно по части VLAN на устройстве R1 все готово.
Далее, для удобства работы с правилами Firewall, фильтрами и ограничениями, создаем 2 списка интерфейсов:
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
После чего распределяем интерфейсы по группам:
/interface list member
add interface=ether1-wan list=WAN
add interface=bridge-vlan20-office list=LAN
add disabled=yes interface=bridge-vlan30-guest list=LAN
В группу WAN (внешние интерфейсы) добавляем ether1-wan, т.к. он используется для подключения к сети провайдера. Если вы используете PPPoE, в WAN следует добавлять и ether1, и pope-client. То же самое применимо и к другим типам подключения с VPN. Использование групп интерфейсов позволяет оптимизировать правила Firewall.
bridge-vlan20-office с офисной подсетью добавляем в список LAN-интерфейсов. Во-первых, нам нужно в этой сети иметь доступ к Интернет. Во-вторых, мы хотим сохранить возможность управления Mikrotik из этой подсети.
bridge-vlan30-guest в список LAN-интерфейсов не добавляем (disabled=yes). Почему? Потому, что последующими правилами мы запретим маршрутизатору принимать входящие соединения (input) с гостевой сети. Из гостевой сети разрешать будем только транзитный траффик (forward) в сеть Интернет. Иными словами, зайти в настройки RouterOS гости не смогут, даже если будут знать логин и пароль администратора.
Чтобы Mikrotik не обнаруживался в Winbox Neighbor, задаем соответствующие ограничения, указав доступ для группы LAN:
/ip neighbor discovery-settings
set discover-interface-list=LAN
Дополнительно устанавливаем ограничения для подключения к Mikrotik по MAC:
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
Подключения будут разрешены только с интерфейсов, входящих в LAN-группу.
Чтобы пользователи обеих подсетей могли выходить в интернет, необходимо разрешить запросы к DNS-серверу и настроить маскарадинг:
/ip dns
set allow-remote-requests=yes
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
ipsec-policy=out,none out-interface-list=WAN
Бывают случаи, когда одному из VLAN доступ к Интернет необходимо запретить. В этом случае в правилах маскарадинга следует явно указать src.address, для которого выполнять обработку траффика. Например, для vlan 20 необходимо указать src.address 10.20.0.0/24. Пользователи, находящиеся в vlan 30 имеют адреса 10.30.0.0/24, поэтому правило на них распространяться не будет и, соответственно, доступ в Интернет они не получат.
Если вы используете стандартные (defconf) правила Firewall, клиенты в гостевой сети не смогут использовать локальный DNS.
Правила необходимо привести до следующего вида:
/ip firewall filter
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="DNS for VLAN 30" dst-port=53 \
in-interface=bridge-vlan30-guest protocol=udp
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
connection-state=established,related
add action=accept chain=forward comment=\
"defconf: accept established,related, untracked" connection-state=\
established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
add action=drop chain=forward comment=\
"defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
connection-state=new in-interface-list=WAN
Почему так происходит?
Все дело в наличии правила:
action=drop chain=input in-interface-list=!LAN
Данное правило будет отбрасывать все пакеты, приходящие в цепочку input (входящий траффик) с интерфейсов, не входящих в LAN.
Для снятия данного ограничения, чуть выше соответствующего запрещающего правила, мы добавили специальное разрешающее правило:
action=accept chain=input dst-port=53 in-interface=bridge-vlan30-guest protocol=udp
Это правило будет разрешать входящие соединения на Mikrotik из гостевого бриджа по протоколу UDP на 53-порт, который используется для DNS-сервера.
Казалось бы, вот и все… но нет. Есть нюансы, о которых во многих инструкциях не сказано ни слова. Дело в том, что на устройствах Layer 2, VLANы между собой изолированы полностью.
В случае с Layer 3 не все так просто. Маршрутизатор знает все адреса и подсети, поэтому может возникнуть ситуация, когда устройства из одного VLAN смогут увидеть устройства из другого VLAN. Тут все зависит от маршрутов, правил и фильтров.
Для того, чтобы запретить маршрутизатору обрабатывать траффик между VLAN 20 и VLAN 30 можно написать соответствующее правило Firewall для цепочки forward. Но мы реализуем это более эстетично – через правила маршрутизации:
/ip route rule
add action=unreachable dst-address=10.30.0.0/24 src-address=10.20.0.0/24
add action=unreachable dst-address=10.20.0.0/24 src-address=10.30.0.0/24
Иными словами, мы явно запрещаем маршрутизировать траффик из 10.30.0.0/24 в 10.20.0.0/24 и наоборот.
Настройка маршрутизаторов R2 и R3
Для маршрутизаторов R2 и R3 настроек куда меньше, т.к. по сути, они у нас выполняют функции управляемых коммутаторов. Далее мы приведем конфигурацию для R2, для R3 она будет идентична, так что вы спокойно сможете сделать выгрузку-загрузку файла-конфигурации.
Выгрузка:
export file=conf2.rsc
Загрузка
import file=conf2.rsc
Где conf2.rsc – название файла конфигурации.
Как и ранее, первым делом отключаем ненужные сервисы, создаем новую учетку, задаем идентификатор устройства. Полагаем, данные операции вы можете выполнить самостоятельно.
Для того, чтобы распределить наши вланы, создаем все те же 2 бриджа:
/interface bridge
add comment=OFFICE fast-forward=no name=bridge-vlan20-office
add comment=GUEST fast-forward=no name=bridge-vlan30-guest
Для удобства, к интерфейсам можно добавить комментарии:
/interface ethernet
set [ find default-name=ether1 ] comment="UPLINK TRUNK" name=ether1-trunk
set [ find default-name=ether2 ] comment=OFFICE
set [ find default-name=ether4 ] comment=GUEST
Интерфейс ether1 при этом мы также немного переименовали, добавив приставку «trunk». После этого вешаем на него наши VLANы:
/interface vlan
add interface=ether1-trunk name=vlan20-uplink vlan-id=20
add interface=ether1-trunk name=vlan30-uplink vlan-id=30
В R2 и R2 транковый порт всего один, оставшиеся 4 интерфейса разделены в две группы, vlan 20 и vlan 30.
Соответствующим образом (согласно схеме) распределяем интерфейсы по ранее созданным бриджам:
/interface bridge port
add bridge=bridge-vlan20-office comment="UPLINK OFFICE" interface=\
vlan20-uplink
add bridge=bridge-vlan30-guest comment="UPLINK GUEST" interface=vlan30-uplink
add bridge=bridge-vlan20-office comment=OFFICE interface=ether2
add bridge=bridge-vlan20-office interface=ether3
add bridge=bridge-vlan30-guest comment=GUEST interface=ether4
add bridge=bridge-vlan30-guest interface=ether5
С аплинка vlan’ы необходимо раскинуть каждый в свой бридж, 20-й в bridge-vlan20-office, 30-й в bridge-vlan20-guest.
Далее в эти же бриджи добавляем требуемые порты. В нашем случае 2 и 3 порт добавлены в офисную сеть, а 4 и 5 – в гостевую.
Следующий момент касается ограничения доступа к маршрутизатору из гостевой сети. Механизм блокировки доступа используем тот же, что и на R1. Создаем новый список интерфейсов:
/interface list
add comment="OFFICE Subnet" name=LAN
После чего заносим в этом список 20-й влан с аплинка и офисный бридж:
/interface list member
add interface=bridge-vlan20-office list=LAN
add interface=vlan20-uplink list=LAN
Для ограничения доступа добавляем правило в файрволл:
/ip firewall filter
add action=drop chain=input in-interface-list=!LAN
После этого маршрутизатор перестанет принимать входящие (input) соединения с сетей, не входящих в список «LAN», при этом пересылка пакетов (forward) останется как есть.
Для удобства, самому маршрутизатору можно назначить IP-адрес:
/ip dhcp-client
add add-default-route=no dhcp-options=clientid,hostname disabled=no \
interface=bridge-vlan20-office
Как видите, IP мы будем получать только в 20-м VLAN непосредственно от DHCP-сервера. В 30-м VLAN устройству IP-адрес не нужен, на пересылку пакетов это никак не влияет.
Вот собственно и все. Можно приступать к проверке портов.
10.20.0.1 это главный шлюз в 20-м vlan, 10.20.0.251/252 – маршрутизаторы R2/R3. HP-NC360T это тестовый ПК, выполняющий сканирование подсети.
Если вы выполните сканирование подсети 10.30.0.0/24, устройства отображаться не будут, хотя они там есть:
10.30.0.252/253 это IP маршрутизаторов, которые мы добавляли для удобства управления из vlan 30 на этапе начальной конфигурации, у вас они отображаться не будут в виду отсутствия dhcp-client на R2 и R3 в VLAN 30.
Теперь что касается производительности. Как вы помните, мы уже упоминали о том, что программные VLAN отнимают ресурсы процессора. Чтобы изучить взаимосвязь, выполняем небольшой тест скорости между двумя ПК. Первый ПК подключен к R2, второй – к R3.
Обычная пересылка пакетов в локальной сети приводит к использованию ресурсов CPU. В конкретном примере сгенерирован дуплексный траффик с суммарной скоростью около 180 Мбит/сек (100 Мбит FDX), при этом загрузка процессора QCA9531 (650 МГц) составляет в среднем до 20%.
Как видим, даже для столь бюджетного решения не составляет особых проблем обрабатывать траффик в софтовой конфигурации VLAN. Где это и будет ощущаться, так это в больших сетях, с большим числом соединений между устройствами, например, при наличии NAS и гостевых HotSpot. Впрочем, такие решения как RB750Gr3, RB3011, RB450Gx4 с подобной задачей справляются отлично, не говоря уже о старших моделях.
Не забывайте, в сложных сетях со сложной конфигурацией стоит применять соответствующее более высокоуровневое оборудование, а при необходимости, и вовсе, использовать Hardware VLAN.
Для предприятий VLAN является весьма оправданным решением, позволяющем повысить защищенность сети в целом. К примеру, если у вас есть торговые залы, вполне логичным шагом будет поместить все кассовые ПК и POS-системы в VLAN, отличный от офисного. Если же вы используете IP-видеонаблюдение, для него также стоит выделить отдельный VLAN. В конечном итоге, даже если в вашем программном обеспечении и будет уязвимость, она будет изолирована в отдельной подсети. Вспомните сколько проблем доставил «Petya». Именно технология VLAN позволила многим предприятиям понести «минимальные потери» и ограничить распространение вредоносного ПО.
Дополнительная справочная информация по теме VLAN:
Авторизуйтесь, чтобы добавить отзыв