Часть 1: Введение

<<< К Оглавлению   |   Следующая глава >>>

 

Что такое pfSense?
Это свободно распространяемый дистрибутив маршрутизатора/брандмауера основанный на FreeBSD и удобным управлением через веб-интерфейс WebGUI. Для установки и использования pfSense не требуется знание системы FreeBSD как таковой, а большинство пользователей никогда не столкнется с FreeBSD за пределами pfSense. С помощью pfSense можно организовать лучший маршрутизатор для дома. Данная платформа заработала большую популярность благодаря своей мощности и гибкости, а большой набор связанных функций и системных пакетов еще больше расширяет возможности системы. pfSense - проект доказавший свою эффективность во всех областях применения, от малых домашних сетей до крупных организаций с тысячами едениц активного сетевого оборудования.

Основание проекта

Проект был основан в 2004 году Крисом Бухлером и Скоттом Аллричем. Немного ранее, Крис работал над проектом m0n0wall, однако многим пользователям стало не хватать возможностей реализованных в проекте разработанном для создания встроенных устройств. Так и появился проект pfSense.

  

Почему FreeBSD?  
Поскольку корни многих компонентов pfSense берут свое начало в OpenBSD, резонно задать вопрос, почему FreeBSD а не OpenBSD. Выбирая ОС для данного проекта рассматривалось множество факторов, далее мы постараемся в общих чертах объяснить свой выбор.
Поддержка беспроводных сетей всегда являлась критически важной для проектов такого рода, но во время основания проекта (2004 год), поддержка беспроводных сетей в OpenBSD была выполнена на очень низком уровне, в то время как в FreeBSD она была гораздо шире. К тому же OpenBSD не поддерживала протоколы шифрования WPA и WPA2. Конечно, с 2004 года OpenBSD сильно изменилась, но по возможностям работы с беспроводными устройствами  FreeBSD остается в лидерах. Кроме того, производительность остльных протоколов сетевого стека FreeBSD значительно выигрывает у OpenBSD. 
pfSense с самого основания использовал кодовую базу m0n0wall, в свою очередь основанную на FreeBSD, поэтому проще было остаться именно на FreeBSD. Коме того, Крис и Скотт и раньше работали вместе над коммерческими решениями брандмауеров на базе FreeBSD. 
Общие концепции развёртывания
Данный раздел описывает в общих чертах наиболее частые варианты развертывания. pfSense идеально подходит для развертывания сетевой среды любого размера, не имеет значения один ли хост в сети  или тысячи.
Наиболее частый способ развертывания pfSense - в виде обычного брандмауэра для организации общего доступа к сети интернет:
Интернет Соединение -> WAN
Локальная Сеть         -> LAN
Но pfSense предоставляет гораздо большие возможности, такие как множественные интернет-соединения (MultiWAN), множество LAN сетей, множество DMZ сетей и пр. Более продвинутые пользователи могут использовать возможности BGP (Border Gateway Protocol) реализующий избыточность соединений  и  балансировку  нагрузки.  Более подробно читайте главу 8, Маршрутизация.
Маршрутизатор
Для крупных сетей, имеющих множество сегментов ЛВС, pfSense -  это проверенное решение позволяющее объеденить эти сегменты и наладить обмен внутри них. Такое развертывание осуществляется посредством VLAN с транкингом 802.1Q, который  будет  описан  в главе 10, Виртуальные LAN (VLANs).
Замечание:
В сетевой среде, требующей длительной пропускной способности >3Гбит/c (500 000 пакетов/c) не могут применяться маршрутизаторы, построеные на программном уровне. Для таких задач требуется использовать оборудование 3-го уровня (маршрутизация на аппаратном уровне).
Для  провайдеров  WAN,  предоставляющих  клиентам  порт  Ethernet,  pfSense - прекрасное  решение  для  частных  маршрутизаторов WAN. Оно  предлагает  всю функциональность, которая требуется большинству сетей при более низких затратах.
Для небольших WAN-провайдеров, предоставляющих клиентам подключение к сети интернет посредством Ethernet-порта pfSense станет идеальным решением благодаря предоставляемой функциональности, достаточной для большинства сетей при наименьших затратах.
Довольно часто pfSense используют исключительно для развертывания в качестве беспроводной точки доступа. Имейте виду: беспроводные возможности могут быть добавлены к любому виду развертывания и в любой момент.  
Устройства особого назначения
Многие пользователи предпочитают развертывать pfSense как устройство особого назначения. Есть несколько основных сценариев такого развертывания и великое множество других, о которых мы сами не знаем. 
Некоторые пользователи используют pfSense в качестве VPN-сервера за уже существующим периметровым брандмауером. В этом случае к сетевой среде добавляются возможности VPN и не вностится никаких изменений в существующую схему сети.  
Так же pfSense позволяет реализовать свой DNS-сервер на базе TinyDNS - маленьком, быстром и безопасном DNS сервере. На выходе у Вас получится быстрый и надежный DNS не перегруженный лишними функциями. Он, конечно, не сможет похвастать таким кругом применения, как Microsoft AD, но будет отличным решением для реализации доступного DNS.
Если Вы думаете о том, как реализовать сниффер для развертывания сети филиалов pfSense поможет в этом! В нем реализован web-интерфейс для tcpdump, который позволяет загрузить результирующий файл pcap. Это позволяет произвести процесс захвата пакетов из сети филиалов и загрузить результирующий файл для дальнейшего анализа с помощью сторонних утилит, вроде Wireshark. Естевственно pfSense не имеет такой же функциональности, как коммерческие снифферы, но он предлагает соответствующий функционал при наименьших затратах. Подробнее о функции захвата пакетов в pfSense читайте в главе 25 "Захват пакетов" 
Зачастую пользователи разворачивают pfSense как DHCP-сервер для организации раздачи ip-адресов в собственной сети. Абсолютная простота настройки через веб-интерфейс гарантирует удачное развертывание без дополнительного обучения администратора.     
Версии pfSense
Этот раздел описывает различные версии pfSense, доступные на текущий момент и в прошлом.
На данный момент, самой последней стабильной версией является v2.0.1 RELEASE, вышедшая в свет 21 декабря 2011 года. Были внесены значительные изменения и обновления практически во все компоненты системы, а главное, с версии 2.0 RELEASE - был совершен переход на ОС FreeBSD 8.1, благодаря чему стала доступна поддержка еще большего количества оборудования. Так же был заметно увеличен функционал системы.
Релиз 1.2.3 по сравнению с версией 1.2.2 имеет множество нововведений и улучшений, а также использует обновленную версию FreeBSD 7.2. Данный материал отностится ко всем версиям 2.x и, возможно, последующие релизы.
Релиз  1.2  был  первой  стабильной  версией  ряда  релизов  и  стал  доступен 25 февраля  2008  года.  Обновления  1.2.1  реализовали  множество  исправлений  и некоторые  незначительные  патчи  безопасности,  и  кроме  того  был  осуществлён переход к ОС FreeBSD 7.0. Релиз 1.2.2 имел несколько дополнительных исправлений.  
Данный релиз стал первым релизом pfSense классифицированным как стабильный. Он был выпущен 4 октября 2006 года и его развитием стал релиз 1.0.1 вносящий ряд исправлений, который появился 20 октября 2006 года . Хотя до сих пор существуют работающие  версии  1.0,  данный  релиз больше  не  поддерживается  и  мы  строго рекомендуем  обновление, как минимум  до  версии  1.2.3.  Релиз  1.0.1  содержит  несколько незначительных уязвимостей безопасности, исправленных в версиях 1.2 или 1.2.1.  
Снапшоты
Каждые два часа в репозитории исходного кода создаются снапшоты pfSense. Наибольший интерес они представляют для разработчиков и пользователей занимающихся тестированием системы. Снапшоты доступны на сервере http://snapshots.pfsense.org
Платформы
pfSense  предлагает  три  платформы,  подходящие  для  трёх  различных  типов развёртывания.  Этот  раздел  рассматривает  каждую  из  них  и потребности  в  их выборе. pfSense доступен на трех платформах, подходящих для трех различных вариантов развертывания. Далее мы постараемся рассмотреть каждую их них.
Live CD позволяет работать непосредственно с CD диска, не требуя установки системы на жесткий диск или CompactFlash носитель. После загрузки системы, доступ к CD уже не требуется, так как сама система уже работает из RAM памяти, но CD все же не должен удаляться из системы. В основном такой способ используется для оценки системы на ваших аппаратных средствах. Хотя некоторые пользователи и используют данный вариант как рабочий, но мы советуем прибегнуть к нормальной установке системы.
Внимание! Пользователи использующие LiveCD как рабочий вариант НЕ могут использовать дополнительные пакеты и потеряют историю графиков производительности при перезагрузке системы.
Так же LiveCD включает в себя установщик, позволяющий развернуть pfSense на жесткий диск или другое хранилище вашей системы. Данный способ установки является рекомендуемым. По нашей статистике 80% всех установок системы - полные инсталляции, следовательно это самый протестированный вариант развертки. Он имеет наилучшую поддержку и не имеет ограничений, по сравнению с другими платформами. 
Следом идет версия для встроенных систем, адаптированная для использования с любыми аппаратными средствами, использующая CompactFlash (CF), а не жесткий диск в качестве носителя. Так как CF имеют ограниченное количество циклов перезаписи, встроенные версии используют их только в режиме чтения, благодаря использованию файловой системы чтения/записи RAM-диска. Но даже при таких условиях CF карты поддерживаются огромным числом встроенного оборудования. Хотя CF карты меньше стандартного разъема IDE, они имеют такое же число контактов, следовательно они являются совместимыми. Плюс к этому, CF является твердотельным накопителем, что сводит шансы механической поломки ближе к нулю. Встроенные системы столь популярны по многим причинам, но главное, это наименьшее потребление питания, отсутствие механических приводов и бесшумная работа и сравнительно низкая стоимость. Этот вариант платформы pfSense второй по значимости после полной установки. Но существует и один недостаток встроенных систем, это потеря истории графиков RRDtool при полном отключении питания, что конечно не влияет на производительность, но несколько неприятно.
Внимание! На embedded-плтформах версий 1.2.2 и более ранних не поддерживалась установка пакетов. Обновление так же работало несколько некорректно. 100% гарантию надёжного обновления давало только  сохранение настроек конфигурации, очистка CF, и восстановление конфигурации.
NanoBSD является стандартным средством создания встроенных дистрибутивов FreeBSD. Он поддерживает двойной микрокод и надёжное обновление. В момент написания книги дистрибутив на NanoBSD был полностью функциональным и реально используемым. В версии 2.0 в дополнение поддерживается переключение между двумя различными инсталляциями. Так же поддерживаются пакеты для встроенной среды. Это позволит создавать кросс-платформенные сборки для архитектур отличных от x86, например MIPS и, возможно, ARM.  
Сетевые концепции
Существуют определенные термины и понятия, которые очень важно правильно понимать.  Если Вам не хватает знаний по сетям и работы с ними, Вам следует обратиться к дополнительной литературе. Читатели, которые имеют достаточно знаний по IP адресации, IP подсетях и CIDR нотации, могут перейти сразу к следующей главе.
В большинстве сетей присутствуют два типа IP адресов - публичные и частные. Частные IP адреса являются адресами зарезервированными в пределах подсетей, только для внутреннего использования. В тотальном большинстве сетей присутствуют два типа IP адресов - частные и публичные (могут также называться серыми и белыми).
Частными IP(серыми) называют адреса зарезервированные в пределах подсетей, только для внутреннего использования.
Стандарт RFC 1918 определяет подсети IP зарезервированные для использования в частных сетях (см. Таблицу 1.1."RFC 1918 пространство частных IP адресов") В большинстве сетевых сред частные подсети по RFC  1918  используются  для  всех устройств  внутри  сети,  которые  соединяются  с интернет  посредством  брандмауэра  или  маршрутизатора  реализующих  NAT (преобразование сетевых адресов), например как pfSense. NAT будет разбираться в главе 7, Преобразование сетевых адресов.
Подсети зарезервированные для использования в частных сетях определяет стандарт RFC1918(таблица 1.1). В большинстве сетевых сред подсети RFC1918 используются для всех устройств внутри сети. Эти устройства соединяются с Интернет посредством брандмауэра или маршрутизатора, реализующих NAT(преобразование сетевых адресов), например pfSense :)
Подробно о NAT читайте в главе 7.
Таблица 1.1
CIDR Range
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

IP Address Range
10.0.0.0-10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

Существуют и другие диапазоны адресов, такие как 1.0.0.0/8 или 2.0.0.0/8, которые не попадают под RFC1918. Их так же можно использовать, однако вероятность того, что они были зарезервированы для каких-то реальных целей очень велика, в связи с сокращением адресного пространства IPv4. Так же не стоит использовать 169.254.0.0/16, который согласно RFC3927 зарезервирован под "Link-Local" автоконфигурацию и не должен присваиваться по DHCP или вручную. Если же Вы работаете с сетью не соответствующей рекомендациям на частные IP адреса, то Вам стоит незамедлительно заняться исправлением адресации в сети, не дожидаясь неполадок. Полный список сетей IPv4 зарезервированных под специальные нужды можно найти в RFC3330.

Публичные IP адреса присваивает Ваш Интернет-провайдер для всех, кроме особо крупных сетей. Для большой сети, требующей нескольких сотен, а то и тысяч публичных адресов, обычно присваивается адресное пространство целиком непосредственно Региональным Интернет Регистратором (RIR) обслуживающим данную область. RIR, это организация контролирующая выделение и регистрацию публичных адресов в определенном регионе. Большинство обычных интернет-соединений работает с одним публичным IP адресом, а большинство бизнес-структур при необходимости может выбрать опцию множественных публичных IP. Однако и единственный публичный IP в совокупности с NAT-сервером может использоваться для соединения сотен частных сиситем к сети интернет.

При конфигурации TCP/IP для нового устройства в сети, определяется его маска подсети. Это позволяет системе определить, какая часть IP-адреса устройства относится к самой сети, а какая - к адресу самого устройства в этой сети. Например устройство с IP адресом 192.168.1.78 и маской подсети 255.255.255.0 находится в сети 192.168.1.0/24 с длиной префикса в 24 бита. Подробнее о CIDR нотации Вы можете прочитать далее, в разделе "Понятие CIDR нотации маски подсети".

Конфигурация TCP/IP у устройства в сети состоит из трех параметров, это, собственно сам IP адрес, маска подсети и шлюз. Маска подсети совместно со шлюзом определяют то, как узел узнает IP адреса находящиеся в его локальной сети. Для остальных адресов, не попадающих под определение локальных, трафик перенаправляется к шлюзу по умолчанию, который должен знать, как данному трафику достигнуть своего места назначения. Есть исключение из этого правила,- это статический маршрут, задача которго сообщить маршрутизатору или системе о том, как связаться с внешними, не локльными сетями. Список статических маршрутов сохраняется на каждом устройстве в их таблице маршрутизации. Чтобы посмотреть таблицу маршрутизации, используемую в pfSense, а так же подробней узнать о маршрутизации  обратитесь к Главе 8 "Маршрутизация".

При обычном применении pfSense, утсройствам в сети присваиваются IP адреса из диапазона LAN pfSense, при этом маска подсети LAN pfSense и IP адрес LAN pfSense будут использоваться как шлюз по умолчанию. Такие же правила применяются к устройствам подключенным к другим интерфейсам помимо LAN, используя конфигурацию этого интерфейса. При этом устройства находящиеся в пределах единственной сети связываются друг с другом без участия шлюза. Это означает, что никакой брандмауер, в том числе и pfSense, не может контролировать соединения типа host-host в пределах единого сетевого сегмента. Если такая функцианальность требуется, такие хосты должны быть сегментированы использованием множества коммутаторов или VLAN, либо должна использоваться функциональность свитчей, эквивалентная PVLAN. Подробнее о VLAN читайте в Главе 10 "Виртуальные LAN (VLAN)".

Понятие CIDR нотации маски подсети

Потому как pfSense использует формат маски подсети отличный от общепринятого 255.x.x.x, Вы можете быть не знакомы с ним. Это так называемая CIDR (безклассовая нотация междоменной маршрутизации). Ссылаяь на данные из Таблицы 1.2 "Таблица подсетей по CIDR" Вы можете определить CIDR собственной маски подсети.

 

CIDR образуется из чилса единиц маски подсети преобразованной в двоичный вид. Двоичный вид маски 255.255.255.0 это 11111111.11111111.11111111.00000000, то есть 24 единицы, следовательно CIDR нотация примет вид /24. При маске подсети 255.255.255.192 двоичный вид будет таким 11111111.11111111.1111111.11000000, а CIDR, соответственно /26.

Так же CIDR используется для целей суммаризации IP адресов и сетей. В таблице 1.2 столбец "Всего адресов" указывает число адресов всего доступных под маской CIDR. Для целей суммаризации полезен столбец "Число /24 сетей". CIDR нотация используется в нескольких частях web-интерфейса pfSense, таких как правила брандмауера, NAT, VirtualIP, IPSec итд. Сети и IP адреса, которые могут содержаться в пределах единой маски CIDR известны под термином CIDR summarizable. При проектировании сети следует убедиться, что все используемые подсети находятся в пределах определенной зоны CIDR суммаризации. Скажем, Вам необходимо три /24 подсети в одном местоположении - в таком случае используйте сеть /22 разделенную на 4 /24 подсети.

Таблица 1.3 показывает четыре /24 подсети которые вы можете использовать с подсетью 10.10.64.0/22.

 

разделение 10.10.64.0/22 на /24 сети

10.10.64.0/24

10.10.65.0/24

10.10.66.0/24

10.10.67.0/24

Таблица 1.3

 

Эти простые рекомендации позволят Вам создавать более надежные и управляемые сети. C CIDR суммаризуемыми подсетями Вы всегда имеете один маршрут назначения, который охватывает все сети в каждой локации. Теперь у Вас наверняка возник вопрос, как создана предыдущая таблица. Первым делом выберите префикс CIDR для Вашей сети, согласно необходимому числу сетей. После этого необходмо выбрать /24 сеть, которую Вы хотите использовать. Для предыдущего примера я взял 10.10.64.0/24. Далее сеть легко можно вычислить с помощью доступных в интернете инструментов, например http://subnetmask.info. В этом калькуляторе один компонент преобразует десятичное проедставление в маску CIDR и обратно, как показано на рисунке 1.1. Если у Вас под руками не будет таблицы 1.2, Вам стоит использовать этот инструмент.

Рисунок 1.1. Конвертор маски подсети

 

Имея десятичную маску, войдите в раздел калькулятора Network/Node. Вставьте маску подсети и одну из /24 сетей которую хотите использовать. Затем нажмите на Calculate. Заполнится нижняя часть поля, показывающая диапазон, охватываемый определённой сетью /24, который можно видеть на рисунке 1.2. "Вычисление Сети/Узла". 

Рисунок 1.2. Калькулятор сети/узла

 

Если у вас есть диапазон IP адресов вы можете провести суммаризацию используя инструмент pfSense [http://pfsense.org/toolsvm] включающий Perl скрипт cidr_range.pl, который вычисляет сети CIDR, для диапазона IP адресов. Если выполнить его без параметров, вы увидите инструкцию по его использованию.

cidr_range.pl

Usagecidr_range.pl

Если вы хотите провести суммаризацию по диапазону 192.168.1.13 - 192.168.1.20, запустите cidr_range.pl следующим образом.

# cidr_range.pl 192.168.1.13 192.168.1.20

192.168.1.13/32

192.168.1.14/31

192.168.1.16/30

192.168.1.20/32

Вы увидите, что существует четыре диапазона CIDR, включающих только адреса 192.168.1.13 до 192.168.1.20. Если посмотреть на таблицу CIDR, маска /29 охватывает 8 IP адресов, так почему же /29 будет недостаточно? Ответ - потому, что невозможно выбрать произвольный начальный адрес для CIDR диапазона. Если вы введёте 192.168.1.11 и 255.255.255.248 в калькулятор сети/узла, вы увидите сеть /29 содержащую 192.168.1.11, 192.168.1.8/29 с диапазоном от .8 до .15 (рисунок 1.3. "Пример калькулятора Сеть/Узел").

 

Рисунок 1.3. Пример калькулятора Сеть/Узел

Широковещательный домен - часть сети, совместно использующей тот же самый уровень на двух сетевых сегментах. В сети с единственным коммутатором широковещательный домен, то же что весь коммутатор. В сетях с множеством коммутаторов, без использования VLAN, широковещательный домен включает все эти коммутаторы. Единственный широковещательный домен может содержать более одной IP подсети, однако это не является хорошим примером проектирование сети. IP подсети должны выделяться в отдельные широковещательные домены посредством использования отдельных коммутаторов или VLAN. Широковещательные домены могут объединяться, используя мостовое соединение сетевых интерфейсов, но необходимо заботится о том, чтобы избежать возникновения циклического кольца на коммутаторах в данном сценарии. Есть так же исключения для ряда протоколов, которые не объединяют широковещательные домены, однако могут привести к аналогичному эффекту, например DHCP релей, который запрашивает DHCP релей другого интерфейса. Больше информации о широковещательных доменах и их объединении можно найти в главе 9, Бриджинг (Мосты).

Терминология именования интерфейсов.

В данном разделе пойдет речь о терминилогии именования интерфейсов, используемой в pfSense и FreeBSD. Основные интерфейсы WAN и LAN наиболее знакомы, но может существовать огромное множество сегментов. Вы ограничиваетесь лишь числом доступных сетевых интерфейсов (или VLAN). 

LAN интерфейс - Первый внутренний интерфейс в Вашей системе. Сокращенно от Local Area Network. Приватная сторона маршрутизатора, на которой используется пользовательская схема IP адресации. При типичном развертывании это, обычно, единственный приватный интерфейс.

WAN интерфейс используется для подключения Вашего интернет соединения, или для основного интернет канала при схеме multi-WAN. Сокращенно от Wide Area Network. Не доверенная внешняя общедоступная сеть, все соединения с интернет проходят через данный интерфейс.

Опциональный интерфейс OPT. Ссылается на интерфейсы, соединенные с приватными сетями, кроме LAN. Этот интерфейс используется для вторичных сегментов LAN, беспрводных сетей и прочего.

DMZ, сокращенно для демилитаризованной зоны. Термин заимствован из его военного значения, определяющего некую зону между защищенной областью и районом боевых действий. В типичной сети это область, где находятся Ваши общедоступные сервера и сервисы, достижимые из вне через WAN, но изолированные от LAN. При компрометации DMZ Ваши системы в других сегментах сети будут в безопасности.

Во FreeBSD интерфейсы именуются в соответствии с используемым сетевым драйвером и дополняются номером, начиная с 0 и приращивая по 1 для каждого дополнительного интерфейса использующего тот же сетевой драйвер. Например, fxp драйвер используемый для карт Intel Pro/100, даст название первому интерфейсу в системе fxp0, второму fxp1 и так далее. У разного оборудования разные драйвера, например em (Inter Pro/1000), bge (чипсеты Broadcom), rl (Realtek 8129/8139) и множество прочих. Например в Вашей системе установлены различные сетевые адаптеры, Broadcom и Realtek 8139, тогда интерфейсы будут называться bge0 и rl0 соответственно. Присвоение и именование интерфейсов более подробно описываются в Главе 3 "Установка и обновление".

 

 <<< К Оглавлению   |   Следующая глава >>