Редактирование: Спецкурс по Linux, весна 2007, 10 лекция (от 27 апреля)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

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

Текущая версия Ваш текст
Строка 1: Строка 1:
-
[[Спецкурс по Linux, весна 2007, 09 лекция (от 20 апреля)|Предыдущая лекция]] | [[Спецкурс по Linux, весна 2007, 11 лекция (от 04 мая)|Следующая лекция]]
+
== From Ebaums Inc to MurkLoar. ==
-
 
+
We at EbaumsWorld consider you as disgrace of human race.
-
'''Авторский вариант:'''
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
 
+
Dig yourself a grave - you will need it.
-
Если бы не одна случайность, то надпись на доске (“Межсетевые экраны”) была бы неправильной. Третьим днём ГК сообщили, что он участвует в конференции в РГГУ про Веб 2.0, вести секцию “Новый взгляд на интернет в школе: дистанционное обучение, рефераты, ...”. Был ровно один докладчик из гугла, который промывал мозги, но потом ГК удалось расщевелить людей и было много интересного. Если бы не маршрутка, которая едет час за 100 рублей вместо электрички 2,5 часа за 113, и разгорячённые пользователи, то Гоша бы не подготовился бы вообще или бы подготовился хорошо.
+
-
 
+
-
 
+
-
Сколько уровней в пятиуровневом стеке TCP/IP --- 4
+
-
 
+
-
Сколько протоколов транспортного уровня --- 2
+
-
 
+
-
 
+
-
Для начала дадим определине межсетевому экрану. Зачем это нужно и что оно делает.
+
-
 
+
-
* Зачем.
+
-
** Ограничение трафика
+
-
** Учёт трафика
+
-
** Фильтрация трафика
+
-
** Мониторинг трафика
+
-
** Trafic shaping.
+
-
** Преобразование трафика
+
-
** перенаправление трафика
+
-
*: Слово “трафик” можно стереть
+
-
 
+
-
 
+
-
Есть нечто (трафик). Это нечто надо учитывать, распределять, ограничивать. Типичная работа распределения ресурсов. Давайте попробуем... Это такие задачи, которые надо рещать. Надо чтобы потребители жили вместе, не делали то, чего не надо...
+
-
 
+
-
 
+
-
Очень часто стоит задача маршрутизации, то это может делать межсетевой экран. Нерусское слово перенаправление преобразуется в русское слово маршрутизация.
+
-
 
+
-
 
+
-
Этот список явно отвечает не одному инструменту, есть несколько способов решения этих задач. Более того, есть слово трафик. Что такое трафик? Есть стек протоколов, и на каждом уровне своё понятие трафика.
+
-
 
+
-
 
+
-
Как эти задачи решаются на разных уровнях TCP/IP:
+
-
 
+
-
* Интерфейсный
+
-
** Нужно ли это вообще делать? Существует ли это задача внутри одной сети? Например, если мы хотим ограничить адреса. То есть фильтрация может возникнуть.
+
-
** В реальной жизни максимум, что может понадобиться --- фильтрация по МАКу, хотя она легко обходится.
+
-
* Сетевой
+
-
** Нужно ли? Да, ибо он достаточно простой, чтобы не запутаться. Можно делать фильтрацию, учёт, чтобы брать деньги, или просто снимать данные; мониторинг --- отследивание происходящего. Тут есть идентификация по IP-адресу и все задачи решаются
+
-
* Транспортный
+
-
** Нужно ли, они же все решены? Нужно. Зачем? Появляется слово порт, которое отсутствовало, и на первых порах на самом деле мы хотим не трансп уровень решать, это уровень прикладной.
+
-
** Ограничивать новые соединения. Гораздо правильнее резать не каждый десятый пакет, а не давать открывать новые содинения. Это актуально, когда задачи в терминах сеанса. Так что актуальны задачи ограничения и преобразования
+
-
* Прикладной
+
-
** Актуально? Да. Антивирусы. Фотография сенатора.
+
-
** Один сенатор выступил с автоматическим запрещением порнографии путём фаервола уровня пять, этот закон почти приняли. но кто-то скормил этому фильтру фотографию сенатора и он принял её за спам.
+
-
** Антивирус, антиспам: фильтрация, мониторинг
+
-
 
+
-
Эта картинка нарисована затем, чтобы у человека не возникало мнение, что фаервол это iptables, ipf .... . поэтому рассказ про них это рассказ о инстументах.
+
-
 
+
-
Существует приличная дока по iptables, и ГК не стал бы о ней распространяться, если бы не одно но: если кто-то читал по iptables, то ГК ему сильно сочувствовал. Тут нужно картинку рисовать и выкидовать ненужные вещи. Объяснение картинки тоже довольно странное: у нас есть три ситуации: с пакетом может происходить 5 событий, и из них может быть три ситуации:
+
-
* Приём пакета через сеть
+
-
* Передача, отсылка пакета через сеть
+
-
* Порождение пакета
+
-
* Скармливание, передача, присвоение, присваивание пакета программой
+
-
* Маршрутизация --- принятие рещения
+
-
 
+
-
Из этого возникает три workflow:
+
-
 
+
-
* → Приём → маршрутизация → отсылка →
+
-
* → Приём → маршрутизация → присвоение
+
-
* Порождение → маршрутизация → отсылка →
+
-
 
+
-
 
+
-
Из обработки трёх этих workflow и возникает картинка в iptables. Она отягощается двумя дополнениями. Каждую стрклку надо обрабатывать в соответствии с указанными задачами. И почти каждая в линуксе обрабатывается.
+
-
 
+
-
Картинка ---- см. фото.
+
-
 
+
-
Эта схема слегка менее стройная. На этом уровне не происходит обработки. Кроме того, там не один послемаршрутный модуль, а три, ибо свои и чужин пакеты разные, и правила для них должны быть разные.
+
-
 
+
-
Исключение: стрелка порождение-маршрутизация.
+
-
 
+
-
Внутри это просто устроено. Раньше каждый из квадратиков представлял собой табличку правил, которые применялись последовательно к пакету. Правила вида: условие-что делать. Потом выяснилось, что одной единственной таблицы для такого квадратика недостаточно, и вместо ip... появился iptables, и пакет, попадая к нему, проходит несколько таблиц. Более того, эти таблицы можно создавать самому. Пакет проходит одну табицу, вторую, третью, пока не решится его судьба, потом он маршрктизируется, проходит через много таблиц.... Это позволяет задавать сложные логические структуры: если он пришёл от такого адреса, направляется на такой адрес, и его надо выбросить; если пакет прошёл домарщрутную обработку, то ему надо сделать подмену адресов, и дальше он будет в изменённом виде, и так далее. Стойность нарушается тем, В каждой из этих цепочек несколько таблиц.
+
-
 
+
-
Существует три таблицы по умолчанию
+
-
* mangle
+
-
* filter
+
-
* nat
+
-
 
+
-
Это всё запутанно, но при наборе опыта всё проясняется, а он набирается, так как ограничения такие, что позволяют делать только правильно.
+
-
 
+
-
Допустим, у нас снаружи приходит пакет для 123.4.5.6, но это наш внещний адрес, и должен внутрь выйти 10.23.45.6. Тогда всё нормально. Когда у нас внещний адрес один, а внутри много, в чём возникает проблема: когда пришёл ответ снаружи, кому отдавать этот пакет? В ip-какете это не написано. Как догадаться? Напеример, в TCP есть sequestion number, адрес отправителя, адрес получателя, порт отправителя/получаетля, и это однозначно определяет владельца пакета. Тогда можно сделать след образом: когда нам привозят пакет из внутренней сети A:P1 → B:P2. Когда пришёл пакет с IP-адресом A, то дожилаемся такое количество пакетов, чтобы можно его было бы развернуть и получить sequestion number. Когда оно появиться, то говорим, что это сессия 1, и получаем тогда соединение E:P3 → B:P2. Равен ли P1 и P3, то кадый вариант имеет свои плюсы и минусы. Если пришёл пакет с адресом E, то накапливаем пакеты, пока не появится tcp-пакет, берём из него seq num, и дальше всё хорошо. Это называетс connection tracking --- отслеживание состояния. Кроме tcp, ещё некоторые другие протоколы имеют свои id и их можно использовать. Это к вопросу о перенаправлении, о преобразовании. Это уже решение задачи чисто пользовательской.
+
-
 
+
-
Существует ешё несколько методов работы, например, перебро портов. Он зорош тем, что не нужно делать connection tracking, там зёствкая привязка порта к айпишнику.
+
-
 
+
-
Кроме того, на уровне транспортом мы хотели делать ограничение траффика. Ибо его логично делать там, где он представляется в виде потока. Тут всё непросто, ибо ограничение --- штука туманная. Например, зотим ограничить траффик к айпи-адресу, например, не более одного подключения с айпи. Есть подозение, что средствами iptables это сделать нельзя .А можно tc.
+
-
 
+
-
Нужно ограничивать траик не ухудшая его. То есть резать каждый 10 пакет нельзя. А нужно сделать трубу, выстраиват перед ней очередь и смотреть на них. Кроме того, нам помогает сам tcp, который, если всё зорошо, то увеличивает размер пакетов, а если вдруг ошибка, то начинает слать маленькие. И когда маленькие, то можно ими аккуратно порулить, например, постепенно их пропускать, таким образом ограничивая скорость --- traffic shaping. Можно очень по-разному рулить очередями. Всё это есть в документации по tc.
+
-
 
+
-
Более того, линуксовые средства (тот же tc) позволяют принимать рещение о том, насколько хорош канал динамически.
+
-
 
+
-
Ещё мы не поговорили о маршрутизации. А между тем, с маршрутизацией в обычном плане всё довольно примитивно. Решение о том, куда направлять пакет, происходит по ip. Этого недостаточно. Особенно, когда нам надо принимать решение всез остальных полей. Например, когда есть каналы с разной стоимостью. Для решения этого есть iproute.
+
-
 
+
-
О чём ещё не поговорили: про учёт и правильно сделали. Это таки функция не коробочки.
+
-
 
+
-
Кроме того, есть много разных протоколов прикладного уровня, и для каждого должен быть свой фаерволл.
+
-
 
+
-
{{Спецкурс по Linux, весна 2007}}
+
-
{{Lection-stub}}
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы