Редактирование: UNИX, весна 2009, 04 лекция (от 18 марта)

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

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

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

ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 34 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.

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

Текущая версия Ваш текст
Строка 82: Строка 82:
Лектор обращает внимание, что это не имеет ничего общего с NAT и теми вещами, о которых говорили ранее. Это возможность упростить сам линейчатый фаерволл и ускорить его работу.
Лектор обращает внимание, что это не имеет ничего общего с NAT и теми вещами, о которых говорили ранее. Это возможность упростить сам линейчатый фаерволл и ускорить его работу.
-
== Относительно Traffic Shaping ==
+
== Относительно traffic shaping ==
-
Что касается ipfw, есть специальный модуль '''dummynet''', который отвечает за [http://en.wikipedia.org/wiki/Traffic_shaping shaping] разнообразными способами.
+
Что касается ipfw, есть специальный модуль dummynet, который отв. за шейпинг разнообр. способом.
-
Прежде, чем... что происходит, когда вы вписываете эти три правила в фаерволл: никакие входящие TCP-соединения не проходят совсем. Все исходящие соединения и внутр. сети проходят наружу, таким образом, что созд. временное правило, обр. в '''checkstate'''. Есть ещё совет поставить после '''checkstate''' - '''deny tcp from any to any established''', чтобы оно не доходило до конца, а убивалось раньше. Ибо все валидные соединения пропустит '''checkstate'''.
+
Прежде, чем... что происх, когда вы впис. эти три правила в фаерволл: никакие входящие tcp-соед. не проходят совсем. Все исх. соед. и внутр. сети проходят наружу, таким обр., что созд. временное правило, обр. в checkstate. Есть ещё совет поставить после checkstate deny tcp from any to any established, чтобы оно не доходило до конца, а убивалось раньше. Ибо все валидные соединения пропустит checkstate.
-
'''dummynet''' представляет из себя сеть со всеми её свойствами: пропускная способсность, потеря пакетов и так далее. С точки зрения пользователя это такая труба, относительно которой можно задать параметры, о которых лектор уже говорил:
+
dummynet изображает из себя сеть со всеми её свойствами: пропуск. способсность, потеря пакетов и так далее. С точки зрения польз. это такая руба, отн. которой можно задать параметр, которые лектор уже говорил:
* delay -- Задержка
* delay -- Задержка
* bw --- bandwidth
* bw --- bandwidth
* plr -- packet loss rate
* plr -- packet loss rate
-
Выглядит это примерно следующим образом. С точки зрения пользователя создать трубу и сконфигурировать её можно с помощью команды ipfw pipe.
+
Выглядит это примерно след. обр.: с точки зрения польз: создать трубу и сконфигур. её с помощью команды ipfw pipe.
ipfw pipe 10 config bw 1Mbit/s
ipfw pipe 10 config bw 1Mbit/s
-
Обратите внимание, что мы сейчас, использовали одну и ту же команду ipfw pipe. Тем самым мы создали трубу под номером 10, у которой пропускная способность 1 мегабит в секунду. Параметр '''pipe''' говорит о том, что с помощью утлииты ipfw мы работаем с другим модулем --- dummynet. После создания трубы можно скзать
+
Обр. внимание, что мы сейчас, ис.п одну и ту же команду ipfw pipe. Тем самым мы что сделали: создали трубу под номером 10, у которой пропуск. способность 1 мегабит в секунду. Параметр pipe говорит о том, что мы с помощью утлииты ipfw мы работаем с другим модулем --- dummynet. Посел созд. трубы можно скзать
ipfw add pipe 10 ip from any to any port 80
ipfw add pipe 10 ip from any to any port 80
-
Пишется для '''ip''', а не для '''tcp''', потому что можно и так, если это '''tcp''' и там есть порт, то оно применится, иначе нет. Это вообще характерно для дружественных пользователю фаерволлам. Чем больее дружественен к пользователю, тем более деталей за кадром.
+
Пишется для ip, а не для tcp, потому что можно и так, если это tcp и там есть порт, то оно приментся, иначе нет. Это вообще характерно для дружественных польз. фаерволлам. Чем больее друж. к польз., тем более деталей за кадром.
-
Если у нас происходит соединение с 80 портом, то оно немедленно запихивается в трубу. Как устроена труба: есть несколько bucket'ов, в которые закладываются пакеты, если не влезает, то ждёт, в зависимости от того, какой трафик, входящий или исходящий, нам может быть необходимо вести по-разному, например, если трафик наш, то ...
+
Если у нас происх. соед. с 80 портомЮ то оно немедленно запих. в трубу. Как устроена труба: есть неск. bucket'ов, в которые закладываются пакеты, если не влезает, то ждёт, в зависимости от того, какой рафик, вх. или исх., нам может быть необх. вести по разному, напр., если трафик наш, то ...
Что в этих самых трубах есть примечательного: если мы устроим слишком жестокую трубу и приделаем к ней слишком короткую очередь (есть параметр под названием queue, который опр. сколько паметов может стоять), то пакеты будут пропадать,а это нехорошо. Если у вас большой трафик, то может быть большая потеря пакетов, при этом генер. сообщ. о потере пакетов, но это нехорошо. Особенно плохо, когда труба вроде работает, а потом если вдруг случается резкий наплыв. Но поск. есз саморег, то фиг бы с ним, но при этом трафик только увел., так как нач. обмен об ошибках. Для противод. этому есть алгоритм RED, который при приближении к пропуск. способности канала начинает по-тихоньку терять пакеты. Идлея в том, чтобы не сруз все соединения рушились, а постепенно тлько нек-рые подглюкивали.
Что в этих самых трубах есть примечательного: если мы устроим слишком жестокую трубу и приделаем к ней слишком короткую очередь (есть параметр под названием queue, который опр. сколько паметов может стоять), то пакеты будут пропадать,а это нехорошо. Если у вас большой трафик, то может быть большая потеря пакетов, при этом генер. сообщ. о потере пакетов, но это нехорошо. Особенно плохо, когда труба вроде работает, а потом если вдруг случается резкий наплыв. Но поск. есз саморег, то фиг бы с ним, но при этом трафик только увел., так как нач. обмен об ошибках. Для противод. этому есть алгоритм RED, который при приближении к пропуск. способности канала начинает по-тихоньку терять пакеты. Идлея в том, чтобы не сруз все соединения рушились, а постепенно тлько нек-рые подглюкивали.
-
Всё, что лектор раньше рассказывал, подразумевает запихивание в трубу по правилу. Часто нужно это делать по соединению, например, по мегабиту на соединение. То есть, фактически нужно вернуться к созданию временных правил, точнее труб, каждая из которых заводится в момент начала соединения и исчезает с его смертью. Для этого есть опция '''mask''' (для ipfw pipe), у которой довольно моного опций, в том числе '''all''', которая говорит, что под каждый отдельный поток будет отдельная труба. Лектор переписывает пример из документации:
+
Всё, что лектор раньше расск., подразумевает запих. в трубу по правилу. Часто нужно это делать по соединению, например, по мегабиту на соединение, то есть, фактически нужно вернуться к созд. временных правил, точнее труб, каждая из которых заводится в момент начала соед.и исч. с его смертью. Для этого есть опция mask (для ipfw pipe), у которой довольно моного опций, в том числе all, которая говорит, что под каждый отдельный поток будет отдельная труба. Лектор переписывает пример из документации. Трубами можно восп. не для огр., а для того, чтобы его посчитать. Можно сконф. трубу без огр. (ipfw pipe1 config mask all), после чего пропускаете весь трафик (ipfw add pipe tcp|udp|... from any to any), после чего всё работает как работало за одним искл: по каждому соединению считается статистика. Статистику снимает специальный софт.
-
ipfw pipe 1 config mask all
+
-
Трубами можно воспользоваться не для ограничения трафика, а для того, чтобы его посчитать. Можно сконфигурировать трубу без ограниченией:
+
-
ipfw pipe1 config mask all,
+
-
после чего пропускаете весь трафик:
+
-
ipfw add pipe tcp|udp|... from any to any
+
-
И всё работает как работало за одним исключением: по каждому соединению считается статистика. Статистику снимает специальный софт.
+
-
На самом деле, ipfw это очень низкоуровневый инструмент. Когда его читаешь, понимаешь, что можно сделать всё, но когда начинаешь делать, понимаешь, что будешь делать неделю.
+
На самом деле, ipfw это очень низк. инструмент, когда его читаешь, понимаешь, что можно сделать всё, но когда начинаешь делать, понимаешь, что будешь делать неделю.
-
Помимо труб есть '''queue''' (вместе с трубой создается одна очередь). Каждую очередь можно сложить в одну трубу, и на каждую очередь можно поставить свой вес. Очереди не приоритетные, а весовые. То есть если веса 2, 2 и 1, это означает, что что на 2 пакета из первой приходит 2 пакета из второй и 1 из третьей.
+
Помимо труб есть queue (вместе с трубой созд. одна труба), каждую очередь можно сложить в одну трубу, и на каждую очередь можно поставить свой вес. Очереди не приоритетные, а весовые: если вес 2, 2 и 1, это озн., что что на 2 пакета из первой прих. 2 пакета из второй и 1 из третьей.
-
Чтобы закончить тему, лектор скажет, что не скзал про NAT. Помимо '''natd''', в '''ipfw''' в 2005 году появилась собственная поддержка NAT. Лектор не сказал про трансляцию адресов, потому что не принято им её делать. Единственное, что там нет — много в много. Обычно NAT делается через '''ipnat''', и это так принято.
+
Чтобы закончить тему, лектор скажет, что не скзал про nat. Помимо natd, в ipfw в 2005 году появилась поддержка nat собственная. Лектор не сказал про транс. адресов, потому что не принято им её делать. Единственное, что там нет — много в много. Обычно nat делается через ipnat, и это так принято.
-
Соответственно, ничего хитрого лектор про NAT рассказывать сейчас не будет, в следующий раз про iptables.
+
Соотв., ничего хитрого лектор про нат расск. сейчас не будет, в след. раз про iptables.
=Конспект Kda=
=Конспект Kda=

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

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