diff --git a/documentation/content/ru/articles/filtering-bridges/_index.adoc b/documentation/content/ru/articles/filtering-bridges/_index.adoc new file mode 100644 --- /dev/null +++ b/documentation/content/ru/articles/filtering-bridges/_index.adoc @@ -0,0 +1,235 @@ +--- +authors: + - + author: 'Alex Dupre' + email: ale@FreeBSD.org +description: 'Настройка межсетевых экранов и фильтрации на хостах FreeBSD, выступающих в роли мостов, а не маршрутизаторов' +tags: ["network", "filtering", "bridges", "FreeBSD"] +title: 'Фильтрующие мосты' +trademarks: ["freebsd", "3com", "intel", "general"] +--- + += Фильтрующие мосты +:doctype: article +:toc: macro +:toclevels: 1 +:icons: font +:sectnums: +:sectnumlevels: 6 +:source-highlighter: rouge +:experimental: +:images-path: articles/filtering-bridges/ + +ifdef::env-beastie[] +ifdef::backend-html5[] +include::shared/authors.adoc[] +include::shared/mirrors.adoc[] +include::shared/releases.adoc[] +include::shared/attributes/attributes-{{% lang %}}.adoc[] +include::shared/{{% lang %}}/teams.adoc[] +include::shared/{{% lang %}}/mailing-lists.adoc[] +include::shared/{{% lang %}}/urls.adoc[] +:imagesdir: ../../../images/{images-path} +endif::[] +ifdef::backend-pdf,backend-epub3[] +include::../../../../shared/asciidoctor.adoc[] +endif::[] +endif::[] + +ifndef::env-beastie[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] + +[.abstract-title] +Аннотация + +Часто бывает полезно разделить одну физическую сеть (например, Ethernet) на два отдельных сегмента без необходимости создания подсетей и использовать маршрутизатор для их соединения. Устройство, которое соединяет две сети таким образом, называется мостом. Система FreeBSD с двумя сетевыми интерфейсами достаточна для работы в качестве моста. + +Мост работает, сканируя адреса на MAC-уровне (Ethernet-адреса) устройств, подключённых к каждому из его сетевых интерфейсов, и затем пересылая трафик между двумя сетями только в том случае, если источник и получатель находятся в разных сегментах. Во многих аспектах мост аналогичен Ethernet-коммутатору с двумя портами. + +''' + +toc::[] + +[[filtering-bridges-why]] +== Зачем использовать фильтрующий мост? + +Всё чаще, благодаря снижению стоимости широкополосных подключений к Интернету (xDSL), а также из-за сокращения доступных IPv4-адресов, многие компании подключены к Интернету 24 часа в сутки и имеют мало (иногда даже не степень двойки) IP-адресов. В таких ситуациях часто возникает желание иметь межсетевой экран, который фильтрует входящий и исходящий трафик из Интернета и в него, но решение для фильтрации пакетов на основе маршрутизатора может быть неприменимо — из-за проблем с подсетями, потому что маршрутизатор принадлежит поставщику услуг (ISP) или потому что он не поддерживает такие функции. В таких сценариях настоятельно рекомендуется использовать фильтрующий мост. + +Межсетевой экран на основе моста может быть настроен и установлен между xDSL-маршрутизатором и вашим Ethernet-концентратором/коммутатором без каких-либо проблем с IP-адресацией. + +[[filtering-bridges-how]] +== Как установить + +Добавление функциональности моста в систему FreeBSD не является сложной задачей. Начиная с версии 4.5, появилась возможность загружать такие функции как модули, вместо необходимости пересборки ядра, что значительно упрощает процедуру. В следующих подразделах я объясню оба способа установки. + +[IMPORTANT] +==== +_Не_ следуйте обеим инструкциям: одна процедура _исключает_ другую. Выберите наиболее подходящий вариант в соответствии с вашими потребностями и возможностями. +==== + +Прежде чем продолжить, убедитесь, что у вас есть как минимум две Ethernet-карты, поддерживающие режим promiscuous как для приёма, так и для передачи, поскольку они должны уметь отправлять Ethernet-пакеты с любым адресом, а не только с собственным. Кроме того, для обеспечения хорошей пропускной способности карты должны поддерживать управление шиной PCI. Наилучшим выбором по-прежнему остаются Intel EtherExpress(TM) Pro, за которыми следуют карты серии 3Com(R) 3c9xx. Для упрощения настройки межсетевого экрана может быть полезно иметь две карты от разных производителей (использующие разные драйверы), чтобы чётко различать, какой интерфейс подключён к маршрутизатору, а какой — к внутренней сети. + +[[filtering-bridges-kernel]] +=== Настройка ядра + +Итак, вы решили использовать старый, но хорошо проверенный метод установки. Для начала вам нужно добавить следующие строки в файл конфигурации ядра: + +[.programlisting] +.... +options BRIDGE +options IPFIREWALL +options IPFIREWALL_VERBOSE +.... + +Первая строка компилирует поддержку моста, вторая — межсетевой экран, а третья — функции логирования межсетевого экрана. + +Теперь необходимо собрать и установить новое ядро. Подробные инструкции можно найти в разделе extref:{handbook}[Сборка и установка пользовательского ядра, kernelconfig-building] руководства FreeBSD. + +[[filtering-bridges-modules]] +=== Загрузка модулей + +Если вы выбрали использование нового и более простого метода установки, единственное, что нужно сделать сейчас, это добавить следующую строку в [.filename]#/boot/loader.conf#: + +[.programlisting] +.... +bridge_load="YES" +.... + +Таким образом, во время загрузки системы модуль [.filename]#bridge.ko# будет загружен вместе с ядром. Не требуется добавлять аналогичную строку для модуля [.filename]#ipfw.ko#, так как он будет загружен автоматически после выполнения шагов из следующего раздела. + +[[filtering-bridges-finalprep]] +== Окончательная подготовка + +Прежде чем перезагрузиться для загрузки нового ядра или необходимых модулей (в соответствии с выбранным ранее методом установки), необходимо внести некоторые изменения в конфигурационный файл [.filename]#/etc/rc.conf#. Правило по умолчанию для межсетевого экрана — отклонять все IP-пакеты. Изначально мы настроим `открытый` межсетевой экран, чтобы проверить его работу без каких-либо проблем, связанных с фильтрацией пакетов (если вы выполняете эту процедуру удалённо, такая конфигурация позволит избежать изоляции от сети). Добавьте следующие строки в [.filename]#/etc/rc.conf#: + +[.programlisting] +.... +firewall_enable="YES" +firewall_type="open" +firewall_quiet="YES" +firewall_logging="YES" +.... + +Первая строка включит межсетевой экран (и загрузит модуль [.filename]#ipfw.ko#, если он не встроен в ядро), вторая настроит его в режиме `open` (как описано в [.filename]#/etc/rc.firewall#), третья отключит отображение загрузки правил, а четвёртая включит поддержку логирования. + +О конфигурации сетевых интерфейсов: наиболее распространённый способ — назначить IP только одной из сетевых карт, но мост будет работать одинаково, даже если оба интерфейса или ни один из них не имеют настроенного IP. В последнем случае (без IP) машина с мостом останется более скрытой, так как будет недоступна из сети: для её настройки потребуется войти с консоли или через третий сетевой интерфейс, отделённый от моста. Иногда во время запуска системы некоторым программам требуется доступ к сети, например, для разрешения доменных имён: в этом случае необходимо назначить IP внешнему интерфейсу (тому, который подключён к интернету, где находится DNS-сервер), так как мост будет активирован в конце процедуры запуска. Это означает, что интерфейс [.filename]#fxp0# (в нашем случае) должен быть указан в разделе ifconfig файла [.filename]#/etc/rc.conf#, тогда как [.filename]#xl0# — нет. Назначение IP обеим сетевым картам не имеет особого смысла, за исключением случаев, когда во время запуска приложения должны получать доступ к сервисам на обоих сегментах Ethernet. + +Есть ещё один важный момент. При работе IP поверх Ethernet фактически используются два протокола Ethernet: один — это IP, другой — ARP. ARP выполняет преобразование IP-адреса хоста в его Ethernet-адрес (уровень MAC). Чтобы обеспечить связь между двумя хостами, разделёнными мостом, необходимо, чтобы мост передавал ARP-пакеты. Этот протокол не включён в уровень IP, так как он существует только при работе IP поверх Ethernet. Межсетевой экран FreeBSD фильтрует исключительно на уровне IP, поэтому все не-IP пакеты (включая ARP) будут передаваться без фильтрации, даже если межсетевой экран настроен на запрет всего. + +Вот теперь пришло время перезагрузить систему и использовать её как прежде: будут появляться некоторые новые сообщения о мосте и межсетевом экране, но мост не будет активирован, а межсетевой экран, находясь в режиме `open`, не будет препятствовать никаким операциям. + +Если возникли какие-либо проблемы, их следует решить сейчас, прежде чем продолжить. + +[[filtering-bridges-enabling]] +== Включение моста + +На этом этапе, чтобы включить мост, необходимо выполнить следующие команды (с учётом замены имён двух сетевых интерфейсов [.filename]#fxp0# и [.filename]#xl0# на ваши собственные): + +[source, shell] +.... +# sysctl net.link.ether.bridge.config=fxp0:0,xl0:0 +# sysctl net.link.ether.bridge.ipfw=1 +# sysctl net.link.ether.bridge.enable=1 +.... + +Первая строка указывает, какие интерфейсы должны быть активированы мостом, вторая включает межсетевой экран на мосту, а третья активирует сам мост. + +На этом этапе вы должны быть способны разместить машину между двумя группами хостов, не нарушая их способности к взаимодействию. Если это так, следующим шагом будет добавление строк `net.link.ether.bridge._[blah]_=_[blah]_` в файл [.filename]#/etc/sysctl.conf#, чтобы они выполнялись при запуске системы. + +[[filtering-bridges-ipfirewall]] +== Настройка межсетевого экрана + +Время создать собственный файл с правилами межсетевого экрана для защиты внутренней сети. Это будет несколько сложно, так как не все функции межсетевого экрана доступны для мостовых пакетов. Кроме того, есть разница между пакетами, которые перенаправляются, и пакетами, которые принимаются локальной машиной. В целом, входящие пакеты проходят через межсетевой экран только один раз, а не два, как обычно; фактически они фильтруются только при получении, поэтому правила с `out` или `xmit` никогда не сработают. Лично я использую `in via` — это более старый синтаксис, но он интуитивно понятен при чтении. Ещё одно ограничение заключается в том, что для пакетов, фильтруемых мостом, можно использовать только команды `pass` или `drop`. Более сложные действия, такие как `divert`, `forward` или `reject`, недоступны. Такие опции всё ещё можно использовать, но только для трафика, направленного на саму машину моста или исходящего от неё (если у неё есть IP-адрес). + +В FreeBSD 4.0 появилась концепция фильтрации с сохранением состояния. Это значительное улучшение для UDP-трафика, который обычно представляет собой запрос, отправляемый наружу, за которым вскоре следует ответ с тем же набором IP-адресов и номеров портов (но, конечно, с поменянными местами источником и назначением). Для межсетевых экранов без сохранения состояния практически нет возможности обрабатывать такой трафик как единую сессию. Однако, если межсетевой экран может «запоминать» исходящий UDP-пакет и в течение нескольких минут разрешать ответ, обработка UDP-сервисов становится тривиальной. В следующем примере показано, как это сделать. То же самое можно проделать и с TCP-пакетами. Это позволяет избежать некоторых атак типа «отказ в обслуживании» и других неприятных трюков, но также обычно приводит к быстрому росту таблицы состояний. + +Рассмотрим пример настройки. Обратите внимание, что в начале файла [.filename]#/etc/rc.firewall# уже есть стандартные правила для loopback-интерфейса (интерфейса обратной петли) [.filename]#lo0#, поэтому нам не нужно о них заботиться. Пользовательские правила следует поместить в отдельный файл (например, [.filename]#/etc/rc.firewall.local#) и загружать его при старте системы, изменив строку в [.filename]#/etc/rc.conf#, где мы определили `open` для межсетевого экрана: + +[.programlisting] +.... +firewall_type="/etc/rc.firewall.local" +.... + +[IMPORTANT] +==== +Вы должны указать _полный_ путь, иначе он не будет загружен с риском остаться изолированным от сети. +==== + +Для нашего примера представим, что интерфейс [.filename]#fxp0# подключён к внешней сети (Интернет), а [.filename]#xl0# — к внутренней (ЛВС). У машины с мостом IP-адрес `1.2.3.4` (ваш провайдер вряд ли выдаст вам такой адрес, но для нашего примера он подходит). + +[.programlisting] +.... +# Things that we have kept state on before get to go through in a hurry +add check-state + +# Throw away RFC 1918 networks +add drop all from 10.0.0.0/8 to any in via fxp0 +add drop all from 172.16.0.0/12 to any in via fxp0 +add drop all from 192.168.0.0/16 to any in via fxp0 + +# Allow the bridge machine to say anything it wants +# (if the machine is IP-less do not include these rows) +add pass tcp from 1.2.3.4 to any setup keep-state +add pass udp from 1.2.3.4 to any keep-state +add pass ip from 1.2.3.4 to any + +# Allow the inside hosts to say anything they want +add pass tcp from any to any in via xl0 setup keep-state +add pass udp from any to any in via xl0 keep-state +add pass ip from any to any in via xl0 + +# TCP section +# Allow SSH +add pass tcp from any to any 22 in via fxp0 setup keep-state +# Allow SMTP only towards the mail server +add pass tcp from any to relay 25 in via fxp0 setup keep-state +# Allow zone transfers only by the secondary name server [dns2.nic.it] +add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state +# Pass ident probes. It is better than waiting for them to timeout +add pass tcp from any to any 113 in via fxp0 setup keep-state +# Pass the "quarantine" range +add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state + +# UDP section +# Allow DNS only towards the name server +add pass udp from any to ns 53 in via fxp0 keep-state +# Pass the "quarantine" range +add pass udp from any to any 49152-65535 in via fxp0 keep-state + +# ICMP section +# Pass 'ping' +add pass icmp from any to any icmptypes 8 keep-state +# Pass error messages generated by 'traceroute' +add pass icmp from any to any icmptypes 3 +add pass icmp from any to any icmptypes 11 + +# Everything else is suspect +add drop log all from any to any +.... + +Те из вас, кто ранее настраивал межсетевые экраны, могут заметить некоторые отсутствующие элементы. В частности, здесь нет правил защиты от спуфинга, и фактически мы _не_ добавили: + +[.programlisting] +.... +add deny all from 1.2.3.4/8 to any in via fxp0 +.... + +То есть, отбрасывать пакеты, которые поступают извне, утверждая, что они из нашей сети. Это стандартная мера для предотвращения попыток обхода межсетевого экрана путем генерации вредоносных пакетов, которые выглядят так, будто они из внутренней сети. Проблема в том, что есть _как минимум_ один хост на внешнем интерфейсе, который нельзя игнорировать: маршрутизатор. Однако обычно интернет-провайдер применяет антиспуфинг на своем маршрутизаторе, так что нам не нужно слишком беспокоиться об этом. + +Последнее правило кажется точной копией правила по умолчанию, то есть не пропускать ничего, что явно не разрешено. Однако есть разница: весь подозрительный трафик будет записываться в журнал. + +Существует два правила для пропуска SMTP и DNS-трафика к почтовому серверу и серверу имен, если они у вас есть. Очевидно, весь набор правил должен быть адаптирован под личные предпочтения — это лишь конкретный пример (формат правил подробно описан на man:ipfw[8]). Обратите внимание, что для работы "relay" и "ns" разрешение имен должно работать _до_ включения моста. Это пример того, как убедиться, что IP-адрес установлен на правильной сетевой карте. Альтернативно можно указать IP-адрес вместо имени хоста (это требуется, если у машины нет IP-адреса). + +Люди, привыкшие настраивать межсетевые экраны, вероятно, также привыкли использовать правило `reset` или `forward` для идентификационных пакетов (TCP-порт 113). К сожалению, это не применимо при использовании моста, поэтому лучше всего просто передавать их целевому устройству. Пока на этом устройстве не запущен идентификационный демон, это относительно безопасно. Альтернативой является сброс соединений на порту 113, что создает проблемы с такими сервисами, как IRC (запрос идентификации будет ожидать таймаута). + +Единственное, что может показаться немного странным — это наличие правила, разрешающего общение для мостовой машины, и другого правила для внутренних хостов. Помните, что это связано с тем, что два типа трафика проходят разные пути через ядро и попадают в пакетный фильтр. Трафик внутренней сети проходит через мост, в то время как локальная машина использует обычный IP-стек для общения. Поэтому и нужны два правила для обработки разных случаев. Правила `in via fxp0` работают для обоих путей. В общем случае, если вы используете правила `in via` во всём фильтре, вам потребуется сделать исключение для локально сгенерированных пакетов, так как они не поступают через какие-либо из наших интерфейсов. + +[[filtering-bridges-contributors]] +== Участники + +Многие части этой статьи были взяты, обновлены и адаптированы из старого текста о мостах, отредактированного Ником Сайером. Пара вдохновений обязана введению в мосты от Стива Петерсона. + +Огромная благодарность Луиджи Риццо за реализацию кода моста в FreeBSD и за время, которое он уделил мне, отвечая на все мои вопросы по этой теме. + +Благодарность также выражается Тому Родсу, который проверил мою работу по переводу с итальянского (оригинального языка этой статьи) на английский. diff --git a/documentation/content/ru/articles/filtering-bridges/_index.po b/documentation/content/ru/articles/filtering-bridges/_index.po new file mode 100644 --- /dev/null +++ b/documentation/content/ru/articles/filtering-bridges/_index.po @@ -0,0 +1,824 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# Vladlen Popolitov , 2025. +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2025-09-23 18:56+0300\n" +"PO-Revision-Date: 2025-09-23 04:45+0000\n" +"Last-Translator: Vladlen Popolitov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. type: Yaml Front Matter Hash Value: description +#: documentation/content/en/articles/filtering-bridges/_index.adoc:1 +#, no-wrap +msgid "Configuring firewalls and filtering on FreeBSD hosts acting as bridges rather than routers" +msgstr "Настройка межсетевых экранов и фильтрации на хостах FreeBSD, выступающих в роли мостов, а не маршрутизаторов" + +#. type: Title = +#: documentation/content/en/articles/filtering-bridges/_index.adoc:1 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:11 +#, no-wrap +msgid "Filtering Bridges" +msgstr "Фильтрующие мосты" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:44 +msgid "Abstract" +msgstr "Аннотация" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:48 +msgid "" +"Often it is useful to divide one physical network (like an Ethernet) into " +"two separate segments without having to create subnets, and use a router to " +"link them together. The device that connects the two networks in this way " +"is called a bridge. A FreeBSD system with two network interfaces is enough " +"to act as a bridge." +msgstr "" +"Часто бывает полезно разделить одну физическую сеть (например, Ethernet) на " +"два отдельных сегмента без необходимости создания подсетей и использовать " +"маршрутизатор для их соединения. Устройство, которое соединяет две сети " +"таким образом, называется мостом. Система FreeBSD с двумя сетевыми " +"интерфейсами достаточна для работы в качестве моста." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:51 +msgid "" +"A bridge works by scanning the addresses of MAC level (Ethernet addresses) " +"of the devices connected to each of its network interfaces and then " +"forwarding the traffic between the two networks only if the source and the " +"destination are on different segments. Under many points of view a bridge " +"is similar to an Ethernet switch with only two ports." +msgstr "" +"Мост работает, сканируя адреса на MAC-уровне (Ethernet-адреса) устройств, " +"подключённых к каждому из его сетевых интерфейсов, и затем пересылая трафик " +"между двумя сетями только в том случае, если источник и получатель находятся " +"в разных сегментах. Во многих аспектах мост аналогичен Ethernet-коммутатору " +"с двумя портами." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:53 +msgid "'''" +msgstr "'''" + +#. type: Title == +#: documentation/content/en/articles/filtering-bridges/_index.adoc:57 +#, no-wrap +msgid "Why use a filtering bridge?" +msgstr "Зачем использовать фильтрующий мост?" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:62 +msgid "" +"More and more frequently, thanks to the lowering costs of broad band " +"Internet connections (xDSL) and also because of the reduction of available " +"IPv4 addresses, many companies are connected to the Internet 24 hours on 24 " +"and with few (sometimes not even a power of 2) IP addresses. In these " +"situations it is often desirable to have a firewall that filters incoming " +"and outgoing traffic from and towards Internet, but a packet filtering " +"solution based on router may not be applicable, either due to subnetting " +"issues, the router is owned by the connectivity supplier (ISP), or because " +"it does not support such functionalities. In these scenarios the use of a " +"filtering bridge is highly advised." +msgstr "" +"Всё чаще, благодаря снижению стоимости широкополосных подключений к " +"Интернету (xDSL), а также из-за сокращения доступных IPv4-адресов, многие " +"компании подключены к Интернету 24 часа в сутки и имеют мало (иногда даже не " +"степень двойки) IP-адресов. В таких ситуациях часто возникает желание иметь " +"межсетевой экран, который фильтрует входящий и исходящий трафик из Интернета " +"и в него, но решение для фильтрации пакетов на основе маршрутизатора может " +"быть неприменимо — из-за проблем с подсетями, потому что маршрутизатор " +"принадлежит поставщику услуг (ISP) или потому что он не поддерживает такие " +"функции. В таких сценариях настоятельно рекомендуется использовать " +"фильтрующий мост." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:64 +msgid "" +"A bridge-based firewall can be configured and inserted between the xDSL " +"router and your Ethernet hub/switch without any IP numbering issues." +msgstr "" +"Межсетевой экран на основе моста может быть настроен и установлен между xDSL-" +"маршрутизатором и вашим Ethernet-концентратором/коммутатором без каких-либо " +"проблем с IP-адресацией." + +#. type: Title == +#: documentation/content/en/articles/filtering-bridges/_index.adoc:66 +#, no-wrap +msgid "How to Install" +msgstr "Как установить" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:71 +msgid "" +"Adding bridge functionalities to a FreeBSD system is not difficult. Since " +"4.5 release it is possible to load such functionalities as modules instead " +"of having to rebuild the kernel, simplifying the procedure a great deal. In " +"the following subsections I will explain both installation ways." +msgstr "" +"Добавление функциональности моста в систему FreeBSD не является сложной " +"задачей. Начиная с версии 4.5, появилась возможность загружать такие функции " +"как модули, вместо необходимости пересборки ядра, что значительно упрощает " +"процедуру. В следующих подразделах я объясню оба способа установки." + +#. type: delimited block = 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:76 +msgid "" +"_Do not_ follow both instructions: a procedure _excludes_ the other one. " +"Select the best choice according to your needs and abilities." +msgstr "" +"_Не_ следуйте обеим инструкциям: одна процедура _исключает_ другую. Выберите " +"наиболее подходящий вариант в соответствии с вашими потребностями и " +"возможностями." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:82 +msgid "" +"Before going on, be sure to have at least two Ethernet cards that support " +"the promiscuous mode for both reception and transmission, since they must be " +"able to send Ethernet packets with any address, not just their own. " +"Moreover, to have a good throughput, the cards should be PCI bus mastering " +"cards. The best choices are still the Intel EtherExpress(TM) Pro, followed " +"by the 3Com(R) 3c9xx series. To simplify the firewall configuration it may " +"be useful to have two cards of different manufacturers (using different " +"drivers) to distinguish clearly which interface is connected to the router " +"and which to the inner network." +msgstr "" +"Прежде чем продолжить, убедитесь, что у вас есть как минимум две Ethernet-" +"карты, поддерживающие режим promiscuous как для приёма, так и для передачи, " +"поскольку они должны уметь отправлять Ethernet-пакеты с любым адресом, а не " +"только с собственным. Кроме того, для обеспечения хорошей пропускной " +"способности карты должны поддерживать управление шиной PCI. Наилучшим " +"выбором по-прежнему остаются Intel EtherExpress(TM) Pro, за которыми следуют " +"карты серии 3Com(R) 3c9xx. Для упрощения настройки межсетевого экрана может " +"быть полезно иметь две карты от разных производителей (использующие разные " +"драйверы), чтобы чётко различать, какой интерфейс подключён к " +"маршрутизатору, а какой — к внутренней сети." + +#. type: Title === +#: documentation/content/en/articles/filtering-bridges/_index.adoc:84 +#, no-wrap +msgid "Kernel Configuration" +msgstr "Настройка ядра" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:88 +msgid "" +"So you have decided to use the older but well tested installation method. " +"To begin, you have to add the following rows to your kernel configuration " +"file:" +msgstr "" +"Итак, вы решили использовать старый, но хорошо проверенный метод установки. " +"Для начала вам нужно добавить следующие строки в файл конфигурации ядра:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:94 +#, no-wrap +msgid "" +"options BRIDGE\n" +"options IPFIREWALL\n" +"options IPFIREWALL_VERBOSE\n" +msgstr "" +"options BRIDGE\n" +"options IPFIREWALL\n" +"options IPFIREWALL_VERBOSE\n" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:97 +msgid "" +"The first line is to compile the bridge support, the second one is the " +"firewall and the third one is the logging functions of the firewall." +msgstr "" +"Первая строка компилирует поддержку моста, вторая — межсетевой экран, а " +"третья — функции логирования межсетевого экрана." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:100 +msgid "" +"Now it is necessary to build and install the new kernel. You may find " +"detailed instructions in the extref:{handbook}[Building and Installing a " +"Custom Kernel, kernelconfig-building] section of the FreeBSD Handbook." +msgstr "" +"Теперь необходимо собрать и установить новое ядро. Подробные инструкции " +"можно найти в разделе extref:{handbook}[Сборка и установка пользовательского " +"ядра, kernelconfig-building] руководства FreeBSD." + +#. type: Title === +#: documentation/content/en/articles/filtering-bridges/_index.adoc:102 +#, no-wrap +msgid "Modules Loading" +msgstr "Загрузка модулей" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:105 +msgid "" +"If you have chosen to use the new and simpler installation method, the only " +"thing to do now is add the following row to [.filename]#/boot/loader.conf#:" +msgstr "" +"Если вы выбрали использование нового и более простого метода установки, " +"единственное, что нужно сделать сейчас, это добавить следующую строку в " +"[.filename]#/boot/loader.conf#:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:109 +#, no-wrap +msgid "bridge_load=\"YES\"\n" +msgstr "bridge_load=\"YES\"\n" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:113 +msgid "" +"In this way, during the system startup, the [.filename]#bridge.ko# module " +"will be loaded together with the kernel. It is not required to add a " +"similar row for the [.filename]#ipfw.ko# module, since it will be loaded " +"automatically after the execution of the steps in the following section." +msgstr "" +"Таким образом, во время загрузки системы модуль [.filename]#bridge.ko# будет " +"загружен вместе с ядром. Не требуется добавлять аналогичную строку для " +"модуля [.filename]#ipfw.ko#, так как он будет загружен автоматически после " +"выполнения шагов из следующего раздела." + +#. type: Title == +#: documentation/content/en/articles/filtering-bridges/_index.adoc:115 +#, no-wrap +msgid "Final Preparation" +msgstr "Окончательная подготовка" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:121 +msgid "" +"Before rebooting to load the new kernel or the required modules (according " +"to the previously chosen installation method), you have to make some changes " +"to the [.filename]#/etc/rc.conf# configuration file. The default rule of " +"the firewall is to reject all IP packets. Initially we will set up an " +"`open` firewall, to verify its operation without any issue related to packet " +"filtering (in case you are going to execute this procedure remotely, such " +"configuration will avoid you to remain isolated from the network). Put " +"these lines in [.filename]#/etc/rc.conf#:" +msgstr "" +"Прежде чем перезагрузиться для загрузки нового ядра или необходимых модулей " +"(в соответствии с выбранным ранее методом установки), необходимо внести " +"некоторые изменения в конфигурационный файл [.filename]#/etc/rc.conf#. " +"Правило по умолчанию для межсетевого экрана — отклонять все IP-пакеты. " +"Изначально мы настроим `открытый` межсетевой экран, чтобы проверить его " +"работу без каких-либо проблем, связанных с фильтрацией пакетов (если вы " +"выполняете эту процедуру удалённо, такая конфигурация позволит избежать " +"изоляции от сети). Добавьте следующие строки в [.filename]#/etc/rc.conf#:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:128 +#, no-wrap +msgid "" +"firewall_enable=\"YES\"\n" +"firewall_type=\"open\"\n" +"firewall_quiet=\"YES\"\n" +"firewall_logging=\"YES\"\n" +msgstr "" +"firewall_enable=\"YES\"\n" +"firewall_type=\"open\"\n" +"firewall_quiet=\"YES\"\n" +"firewall_logging=\"YES\"\n" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:131 +msgid "" +"The first row will enable the firewall (and will load the module " +"[.filename]#ipfw.ko# if it is not compiled in the kernel), the second one to " +"set up it in `open` mode (as explained in [.filename]#/etc/rc.firewall#), " +"the third one to not show rules loading and the fourth one to enable logging " +"support." +msgstr "" +"Первая строка включит межсетевой экран (и загрузит модуль " +"[.filename]#ipfw.ko#, если он не встроен в ядро), вторая настроит его в " +"режиме `open` (как описано в [.filename]#/etc/rc.firewall#), третья отключит " +"отображение загрузки правил, а четвёртая включит поддержку логирования." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:137 +msgid "" +"About the configuration of the network interfaces, the most used way is to " +"assign an IP to only one of the network cards, but the bridge will work " +"equally even if both interfaces or none has a configured IP. In the last " +"case (IP-less) the bridge machine will be still more hidden, as inaccessible " +"from the network: to configure it, you have to login from console or through " +"a third network interface separated from the bridge. Sometimes, during the " +"system startup, some programs require network access, say for domain " +"resolution: in this case it is necessary to assign an IP to the external " +"interface (the one connected to Internet, where DNS server resides), since " +"the bridge will be activated at the end of the startup procedure. It means " +"that the [.filename]#fxp0# interface (in our case) must be mentioned in the " +"ifconfig section of the [.filename]#/etc/rc.conf# file, while the " +"[.filename]#xl0# is not. Assigning an IP to both the network cards does not " +"make much sense, unless, during the start procedure, applications should " +"access to services on both Ethernet segments." +msgstr "" +"О конфигурации сетевых интерфейсов: наиболее распространённый способ — " +"назначить IP только одной из сетевых карт, но мост будет работать одинаково, " +"даже если оба интерфейса или ни один из них не имеют настроенного IP. В " +"последнем случае (без IP) машина с мостом останется более скрытой, так как " +"будет недоступна из сети: для её настройки потребуется войти с консоли или " +"через третий сетевой интерфейс, отделённый от моста. Иногда во время запуска " +"системы некоторым программам требуется доступ к сети, например, для " +"разрешения доменных имён: в этом случае необходимо назначить IP внешнему " +"интерфейсу (тому, который подключён к интернету, где находится DNS-сервер), " +"так как мост будет активирован в конце процедуры запуска. Это означает, что " +"интерфейс [.filename]#fxp0# (в нашем случае) должен быть указан в разделе " +"ifconfig файла [.filename]#/etc/rc.conf#, тогда как [.filename]#xl0# — нет. " +"Назначение IP обеим сетевым картам не имеет особого смысла, за исключением " +"случаев, когда во время запуска приложения должны получать доступ к сервисам " +"на обоих сегментах Ethernet." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:144 +msgid "" +"There is another important thing to know. When running IP over Ethernet, " +"there are actually two Ethernet protocols in use: one is IP, the other is " +"ARP. ARP does the conversion of the IP address of a host into its Ethernet " +"address (MAC layer). To allow the communication between two hosts separated " +"by the bridge, it is necessary that the bridge will forward ARP packets. " +"Such protocol is not included in the IP layer, since it exists only with IP " +"over Ethernet. The FreeBSD firewall filters exclusively on the IP layer and " +"therefore all non-IP packets (ARP included) will be forwarded without being " +"filtered, even if the firewall is configured to not permit anything." +msgstr "" +"Есть ещё один важный момент. При работе IP поверх Ethernet фактически " +"используются два протокола Ethernet: один — это IP, другой — ARP. ARP " +"выполняет преобразование IP-адреса хоста в его Ethernet-адрес (уровень MAC). " +"Чтобы обеспечить связь между двумя хостами, разделёнными мостом, необходимо, " +"чтобы мост передавал ARP-пакеты. Этот протокол не включён в уровень IP, так " +"как он существует только при работе IP поверх Ethernet. Межсетевой экран " +"FreeBSD фильтрует исключительно на уровне IP, поэтому все не-IP пакеты " +"(включая ARP) будут передаваться без фильтрации, даже если межсетевой экран " +"настроен на запрет всего." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:146 +msgid "" +"Now it is time to reboot the system and use it as before: there will be some " +"new messages about the bridge and the firewall, but the bridge will not be " +"activated and the firewall, being in `open` mode, will not avoid any " +"operations." +msgstr "" +"Вот теперь пришло время перезагрузить систему и использовать её как прежде: " +"будут появляться некоторые новые сообщения о мосте и межсетевом экране, но " +"мост не будет активирован, а межсетевой экран, находясь в режиме `open`, не " +"будет препятствовать никаким операциям." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:148 +msgid "" +"If there are any problems, you should sort them out now before proceeding." +msgstr "" +"Если возникли какие-либо проблемы, их следует решить сейчас, прежде чем " +"продолжить." + +#. type: Title == +#: documentation/content/en/articles/filtering-bridges/_index.adoc:150 +#, no-wrap +msgid "Enabling the Bridge" +msgstr "Включение моста" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:153 +msgid "" +"At this point, to enable the bridge, you have to execute the following " +"commands (having the shrewdness to replace the names of the two network " +"interfaces [.filename]#fxp0# and [.filename]#xl0# with your own ones):" +msgstr "" +"На этом этапе, чтобы включить мост, необходимо выполнить следующие команды " +"(с учётом замены имён двух сетевых интерфейсов [.filename]#fxp0# и " +"[.filename]#xl0# на ваши собственные):" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:159 +#, no-wrap +msgid "" +"# sysctl net.link.ether.bridge.config=fxp0:0,xl0:0\n" +"# sysctl net.link.ether.bridge.ipfw=1\n" +"# sysctl net.link.ether.bridge.enable=1\n" +msgstr "" +"# sysctl net.link.ether.bridge.config=fxp0:0,xl0:0\n" +"# sysctl net.link.ether.bridge.ipfw=1\n" +"# sysctl net.link.ether.bridge.enable=1\n" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:162 +msgid "" +"The first row specifies which interfaces should be activated by the bridge, " +"the second one will enable the firewall on the bridge and finally the third " +"one will enable the bridge." +msgstr "" +"Первая строка указывает, какие интерфейсы должны быть активированы мостом, " +"вторая включает межсетевой экран на мосту, а третья активирует сам мост." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:165 +msgid "" +"At this point you should be able to insert the machine between two sets of " +"hosts without compromising any communication abilities between them. If so, " +"the next step is to add the `net.link.ether.bridge._[blah]_=_[blah]_` " +"portions of these rows to the [.filename]#/etc/sysctl.conf# file, to have " +"them execute at startup." +msgstr "" +"На этом этапе вы должны быть способны разместить машину между двумя группами " +"хостов, не нарушая их способности к взаимодействию. Если это так, следующим " +"шагом будет добавление строк `net.link.ether.bridge._[blah]_=_[blah]_` в " +"файл [.filename]#/etc/sysctl.conf#, чтобы они выполнялись при запуске " +"системы." + +#. type: Title == +#: documentation/content/en/articles/filtering-bridges/_index.adoc:167 +#, no-wrap +msgid "Configuring The Firewall" +msgstr "Настройка межсетевого экрана" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:177 +msgid "" +"Now it is time to create your own file with custom firewall rules, to secure " +"the inside network. There will be some complication in doing this because " +"not all of the firewall functionalities are available on bridged packets. " +"Furthermore, there is a difference between the packets that are in the " +"process of being forwarded and packets that are being received by the local " +"machine. In general, incoming packets are run through the firewall only " +"once, not twice as is normally the case; in fact they are filtered only upon " +"receipt, so rules that use `out` or `xmit` will never match. Personally, I " +"use `in via` which is an older syntax, but one that has a sense when you " +"read it. Another limitation is that you are restricted to use only `pass` " +"or `drop` commands for packets filtered by a bridge. Sophisticated things " +"like `divert`, `forward` or `reject` are not available. Such options can " +"still be used, but only on traffic to or from the bridge machine itself (if " +"it has an IP address)." +msgstr "" +"Время создать собственный файл с правилами межсетевого экрана для защиты " +"внутренней сети. Это будет несколько сложно, так как не все функции " +"межсетевого экрана доступны для мостовых пакетов. Кроме того, есть разница " +"между пакетами, которые перенаправляются, и пакетами, которые принимаются " +"локальной машиной. В целом, входящие пакеты проходят через межсетевой экран " +"только один раз, а не два, как обычно; фактически они фильтруются только при " +"получении, поэтому правила с `out` или `xmit` никогда не сработают. Лично я " +"использую `in via` — это более старый синтаксис, но он интуитивно понятен " +"при чтении. Ещё одно ограничение заключается в том, что для пакетов, " +"фильтруемых мостом, можно использовать только команды `pass` или `drop`. " +"Более сложные действия, такие как `divert`, `forward` или `reject`, " +"недоступны. Такие опции всё ещё можно использовать, но только для трафика, " +"направленного на саму машину моста или исходящего от неё (если у неё есть IP-" +"адрес)." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:185 +msgid "" +"New in FreeBSD 4.0, is the concept of stateful filtering. This is a big " +"improvement for UDP traffic, which typically is a request going out, " +"followed shortly thereafter by a response with the same set of IP addresses " +"and port numbers (but with source and destination reversed, of course). For " +"firewalls that have no statekeeping, there is almost no way to deal with " +"this sort of traffic as a single session. But with a firewall that can " +"\"remember\" an outgoing UDP packet and, for the next few minutes, allow a " +"response, handling UDP services is trivial. The following example shows how " +"to do it. It is possible to do the same thing with TCP packets. This " +"allows you to avoid some denial of service attacks and other nasty tricks, " +"but it also typically makes your state table grow quickly in size." +msgstr "" +"В FreeBSD 4.0 появилась концепция фильтрации с сохранением состояния. Это " +"значительное улучшение для UDP-трафика, который обычно представляет собой " +"запрос, отправляемый наружу, за которым вскоре следует ответ с тем же " +"набором IP-адресов и номеров портов (но, конечно, с поменянными местами " +"источником и назначением). Для межсетевых экранов без сохранения состояния " +"практически нет возможности обрабатывать такой трафик как единую сессию. " +"Однако, если межсетевой экран может «запоминать» исходящий UDP-пакет и в " +"течение нескольких минут разрешать ответ, обработка UDP-сервисов становится " +"тривиальной. В следующем примере показано, как это сделать. То же самое " +"можно проделать и с TCP-пакетами. Это позволяет избежать некоторых атак типа " +"«отказ в обслуживании» и других неприятных трюков, но также обычно приводит " +"к быстрому росту таблицы состояний." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:189 +msgid "" +"Let's look at an example setup. Note first that at the top of [.filename]#/" +"etc/rc.firewall# there are already standard rules for the loopback interface " +"[.filename]#lo0#, so we should not have to care for them anymore. Custom " +"rules should be put in a separate file (say [.filename]#/etc/" +"rc.firewall.local#) and loaded at system startup, by modifying the row of " +"[.filename]#/etc/rc.conf# where we defined the `open` firewall:" +msgstr "" +"Рассмотрим пример настройки. Обратите внимание, что в начале файла " +"[.filename]#/etc/rc.firewall# уже есть стандартные правила для loopback-" +"интерфейса (интерфейса обратной петли) [.filename]#lo0#, поэтому нам не " +"нужно о них заботиться. Пользовательские правила следует поместить в " +"отдельный файл (например, [.filename]#/etc/rc.firewall.local#) и загружать " +"его при старте системы, изменив строку в [.filename]#/etc/rc.conf#, где мы " +"определили `open` для межсетевого экрана:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:193 +#, no-wrap +msgid "firewall_type=\"/etc/rc.firewall.local\"\n" +msgstr "firewall_type=\"/etc/rc.firewall.local\"\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:198 +msgid "" +"You have to specify the _full_ path, otherwise it will not be loaded with " +"the risk to remain isolated from the network." +msgstr "" +"Вы должны указать _полный_ путь, иначе он не будет загружен с риском " +"остаться изолированным от сети." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:201 +msgid "" +"For our example imagine to have the [.filename]#fxp0# interface connected " +"towards the outside (Internet) and the [.filename]#xl0# towards the inside " +"(LAN). The bridge machine has the IP `1.2.3.4` (it is not possible that your " +"ISP can give you an address quite like this, but for our example it is good)." +msgstr "" +"Для нашего примера представим, что интерфейс [.filename]#fxp0# подключён к " +"внешней сети (Интернет), а [.filename]#xl0# — к внутренней (ЛВС). У машины с " +"мостом IP-адрес `1.2.3.4` (ваш провайдер вряд ли выдаст вам такой адрес, но " +"для нашего примера он подходит)." + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:206 +#, no-wrap +msgid "" +"# Things that we have kept state on before get to go through in a hurry\n" +"add check-state\n" +msgstr "" +"# Things that we have kept state on before get to go through in a hurry\n" +"add check-state\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:211 +#, no-wrap +msgid "" +"# Throw away RFC 1918 networks\n" +"add drop all from 10.0.0.0/8 to any in via fxp0\n" +"add drop all from 172.16.0.0/12 to any in via fxp0\n" +"add drop all from 192.168.0.0/16 to any in via fxp0\n" +msgstr "" +"# Throw away RFC 1918 networks\n" +"add drop all from 10.0.0.0/8 to any in via fxp0\n" +"add drop all from 172.16.0.0/12 to any in via fxp0\n" +"add drop all from 192.168.0.0/16 to any in via fxp0\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:217 +#, no-wrap +msgid "" +"# Allow the bridge machine to say anything it wants\n" +"# (if the machine is IP-less do not include these rows)\n" +"add pass tcp from 1.2.3.4 to any setup keep-state\n" +"add pass udp from 1.2.3.4 to any keep-state\n" +"add pass ip from 1.2.3.4 to any\n" +msgstr "" +"# Allow the bridge machine to say anything it wants\n" +"# (if the machine is IP-less do not include these rows)\n" +"add pass tcp from 1.2.3.4 to any setup keep-state\n" +"add pass udp from 1.2.3.4 to any keep-state\n" +"add pass ip from 1.2.3.4 to any\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:222 +#, no-wrap +msgid "" +"# Allow the inside hosts to say anything they want\n" +"add pass tcp from any to any in via xl0 setup keep-state\n" +"add pass udp from any to any in via xl0 keep-state\n" +"add pass ip from any to any in via xl0\n" +msgstr "" +"# Allow the inside hosts to say anything they want\n" +"add pass tcp from any to any in via xl0 setup keep-state\n" +"add pass udp from any to any in via xl0 keep-state\n" +"add pass ip from any to any in via xl0\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:234 +#, no-wrap +msgid "" +"# TCP section\n" +"# Allow SSH\n" +"add pass tcp from any to any 22 in via fxp0 setup keep-state\n" +"# Allow SMTP only towards the mail server\n" +"add pass tcp from any to relay 25 in via fxp0 setup keep-state\n" +"# Allow zone transfers only by the secondary name server [dns2.nic.it]\n" +"add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state\n" +"# Pass ident probes. It is better than waiting for them to timeout\n" +"add pass tcp from any to any 113 in via fxp0 setup keep-state\n" +"# Pass the \"quarantine\" range\n" +"add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state\n" +msgstr "" +"# TCP section\n" +"# Allow SSH\n" +"add pass tcp from any to any 22 in via fxp0 setup keep-state\n" +"# Allow SMTP only towards the mail server\n" +"add pass tcp from any to relay 25 in via fxp0 setup keep-state\n" +"# Allow zone transfers only by the secondary name server [dns2.nic.it]\n" +"add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state\n" +"# Pass ident probes. It is better than waiting for them to timeout\n" +"add pass tcp from any to any 113 in via fxp0 setup keep-state\n" +"# Pass the \"quarantine\" range\n" +"add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:240 +#, no-wrap +msgid "" +"# UDP section\n" +"# Allow DNS only towards the name server\n" +"add pass udp from any to ns 53 in via fxp0 keep-state\n" +"# Pass the \"quarantine\" range\n" +"add pass udp from any to any 49152-65535 in via fxp0 keep-state\n" +msgstr "" +"# UDP section\n" +"# Allow DNS only towards the name server\n" +"add pass udp from any to ns 53 in via fxp0 keep-state\n" +"# Pass the \"quarantine\" range\n" +"add pass udp from any to any 49152-65535 in via fxp0 keep-state\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:247 +#, no-wrap +msgid "" +"# ICMP section\n" +"# Pass 'ping'\n" +"add pass icmp from any to any icmptypes 8 keep-state\n" +"# Pass error messages generated by 'traceroute'\n" +"add pass icmp from any to any icmptypes 3\n" +"add pass icmp from any to any icmptypes 11\n" +msgstr "" +"# ICMP section\n" +"# Pass 'ping'\n" +"add pass icmp from any to any icmptypes 8 keep-state\n" +"# Pass error messages generated by 'traceroute'\n" +"add pass icmp from any to any icmptypes 3\n" +"add pass icmp from any to any icmptypes 11\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:250 +#, no-wrap +msgid "" +"# Everything else is suspect\n" +"add drop log all from any to any\n" +msgstr "" +"# Everything else is suspect\n" +"add drop log all from any to any\n" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:254 +msgid "" +"Those of you who have set up firewalls before may notice some things " +"missing. In particular, there are no anti-spoofing rules, in fact we did " +"_not_ add:" +msgstr "" +"Те из вас, кто ранее настраивал межсетевые экраны, могут заметить некоторые " +"отсутствующие элементы. В частности, здесь нет правил защиты от спуфинга, и " +"фактически мы _не_ добавили:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/filtering-bridges/_index.adoc:258 +#, no-wrap +msgid "add deny all from 1.2.3.4/8 to any in via fxp0\n" +msgstr "add deny all from 1.2.3.4/8 to any in via fxp0\n" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:264 +msgid "" +"That is, drop packets that are coming in from the outside claiming to be " +"from our network. This is something that you would commonly do to be sure " +"that someone does not try to evade the packet filter, by generating " +"nefarious packets that look like they are from the inside. The problem with " +"that is that there is _at least_ one host on the outside interface that you " +"do not want to ignore: the router. But usually, the ISP anti-spoofs at " +"their router, so we do not need to bother that much." +msgstr "" +"То есть, отбрасывать пакеты, которые поступают извне, утверждая, что они из " +"нашей сети. Это стандартная мера для предотвращения попыток обхода " +"межсетевого экрана путем генерации вредоносных пакетов, которые выглядят " +"так, будто они из внутренней сети. Проблема в том, что есть _как минимум_ " +"один хост на внешнем интерфейсе, который нельзя игнорировать: маршрутизатор. " +"Однако обычно интернет-провайдер применяет антиспуфинг на своем " +"маршрутизаторе, так что нам не нужно слишком беспокоиться об этом." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:267 +msgid "" +"The last rule seems to be an exact duplicate of the default rule, that is, " +"do not let anything pass that is not specifically allowed. But there is a " +"difference: all suspected traffic will be logged." +msgstr "" +"Последнее правило кажется точной копией правила по умолчанию, то есть не " +"пропускать ничего, что явно не разрешено. Однако есть разница: весь " +"подозрительный трафик будет записываться в журнал." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:273 +msgid "" +"There are two rules for passing SMTP and DNS traffic towards the mail server " +"and the name server, if you have them. Obviously the whole rule set should " +"be flavored to personal taste, this is only a specific example (rule format " +"is described accurately in the man:ipfw[8] man page). Note that for " +"\"relay\" and \"ns\" to work, name service lookups must work _before_ the " +"bridge is enabled. This is an example of making sure that you set the IP on " +"the correct network card. Alternatively it is possible to specify the IP " +"address instead of the host name (required if the machine is IP-less)." +msgstr "" +"Существует два правила для пропуска SMTP и DNS-трафика к почтовому серверу и " +"серверу имен, если они у вас есть. Очевидно, весь набор правил должен быть " +"адаптирован под личные предпочтения — это лишь конкретный пример (формат " +"правил подробно описан на man:ipfw[8]). Обратите внимание, что для работы " +"\"relay\" и \"ns\" разрешение имен должно работать _до_ включения моста. Это " +"пример того, как убедиться, что IP-адрес установлен на правильной сетевой " +"карте. Альтернативно можно указать IP-адрес вместо имени хоста (это " +"требуется, если у машины нет IP-адреса)." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:278 +msgid "" +"People that are used to setting up firewalls are probably also used to " +"either having a `reset` or a `forward` rule for ident packets (TCP port " +"113). Unfortunately, this is not an applicable option with the bridge, so " +"the best thing is to simply pass them to their destination. As long as that " +"destination machine is not running an ident daemon, this is relatively " +"harmless. The alternative is dropping connections on port 113, which " +"creates some problems with services like IRC (the ident probe must timeout)." +msgstr "" +"Люди, привыкшие настраивать межсетевые экраны, вероятно, также привыкли " +"использовать правило `reset` или `forward` для идентификационных пакетов " +"(TCP-порт 113). К сожалению, это не применимо при использовании моста, " +"поэтому лучше всего просто передавать их целевому устройству. Пока на этом " +"устройстве не запущен идентификационный демон, это относительно безопасно. " +"Альтернативой является сброс соединений на порту 113, что создает проблемы с " +"такими сервисами, как IRC (запрос идентификации будет ожидать таймаута)." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:285 +msgid "" +"The only other thing that is a little weird that you may have noticed is " +"that there is a rule to let the bridge machine speak, and another for " +"internal hosts. Remember that this is because the two sets of traffic will " +"take different paths through the kernel and into the packet filter. The " +"inside net will go through the bridge, while the local machine will use the " +"normal IP stack to speak. Thus the two rules to handle the different " +"cases. The `in via fxp0` rules work for both paths. In general, if you use " +"`in via` rules throughout the filter, you will need to make an exception for " +"locally generated packets, because they did not come in via any of our " +"interfaces." +msgstr "" +"Единственное, что может показаться немного странным — это наличие правила, " +"разрешающего общение для мостовой машины, и другого правила для внутренних " +"хостов. Помните, что это связано с тем, что два типа трафика проходят разные " +"пути через ядро и попадают в пакетный фильтр. Трафик внутренней сети " +"проходит через мост, в то время как локальная машина использует обычный IP-" +"стек для общения. Поэтому и нужны два правила для обработки разных случаев. " +"Правила `in via fxp0` работают для обоих путей. В общем случае, если вы " +"используете правила `in via` во всём фильтре, вам потребуется сделать " +"исключение для локально сгенерированных пакетов, так как они не поступают " +"через какие-либо из наших интерфейсов." + +#. type: Title == +#: documentation/content/en/articles/filtering-bridges/_index.adoc:287 +#, no-wrap +msgid "Contributors" +msgstr "Участники" + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:291 +msgid "" +"Many parts of this article have been taken, updated and adapted from an old " +"text about bridging, edited by Nick Sayer. A pair of inspirations are due " +"to an introduction on bridging by Steve Peterson." +msgstr "" +"Многие части этой статьи были взяты, обновлены и адаптированы из старого " +"текста о мостах, отредактированного Ником Сайером. Пара вдохновений обязана " +"введению в мосты от Стива Петерсона." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:293 +msgid "" +"A big thanks to Luigi Rizzo for the implementation of the bridge code in " +"FreeBSD and for the time he has dedicated to me answering all of my related " +"questions." +msgstr "" +"Огромная благодарность Луиджи Риццо за реализацию кода моста в FreeBSD и за " +"время, которое он уделил мне, отвечая на все мои вопросы по этой теме." + +#. type: Plain text +#: documentation/content/en/articles/filtering-bridges/_index.adoc:294 +msgid "" +"A thanks goes out also to Tom Rhodes who looked over my job of translation " +"from Italian (the original language of this article) into English." +msgstr "" +"Благодарность также выражается Тому Родсу, который проверил мою работу по " +"переводу с итальянского (оригинального языка этой статьи) на английский."