Ipfw фаєрвол freebsd - настройка і можливості

#! / Bin / sh
ipfw = "/ sbin / ipfw" # оголосили змінну ipfw, яка містить шлях до виконуваного файлу файрволла.

$ -f flush # очищаємо список всіх старих правил






$ -f queue flush # очищаємо список черг
$ -f pipe flush # очищаємо список каналів

Зберігаємо і робимо файл виконуваним:

#chmod + x /etc/firewall.conf

Ipfw фаєрвол freebsd - настройка і можливості

У нас дві віртуальні машини, які один одного чудово пінг. ОС Windows XP (192.168.0.10) і ОС FreeBSD 8.2, описана в самому початку статті, з файрволлом ipfw.

Що забороняє правило для ipfw (deny)

$ Add 00010 deny icmp from any to me via em1

Отже, починаємо розбір польотів.

Структура правила дуже проста. Спочатку йде використання змінної ipfw. яка у нас на початку скрипта. Можна в тексті скрипта оголосити будь-яку змінну NAME = "VALUE" і використовувати її в скрипті як $. Вельми зручно, якщо потрібно змінити в різних місцях одне і те ж значення.

Отже, add 00010 - це додавання правила з номером 10. Нумерація правил йде з 1 до 65535, причому останнє правило - дозволяє по-замовчуванню (визначається опцією ядра IPFIREWALL_DEFAULT_TO_ACCEPT), або забороняє по-замовчуванню.

Наступним йде дію. В даному випадку - deny (заборонити), можуть бути allow. deny. divert і т.д, ми їх будемо торкатися в міру вивчення.

Наступним йде протокол. Можна заборонити any (все), тільки tcp або ip (відповідною директивою).







В даному прикладі правило:

$ Add 00010 deny icmp from any to me via em1

Треба сказати, що правила застосовуються в порядку нумерації, тобто правила з меншим номером порівнюються раніше, ніж з великим.

Пакет проходить за списком правил до першого збігу. Далі, з пакетом відбувається дія, вказане в правилі.

Застосовуються правила простим викликом цього файлу:

Адже він у нас виконуваний. Легко помітити, що пінг тепер не йдуть.

Ipfw фаєрвол freebsd - настройка і можливості

Зеленим підкреслив до застосування правила файрволла, а червоним - після.

Обмеження швидкості на передачу даних.

Зараз ми будемо займатися обмеженням пропускної здатності мережі. Я приблизно намалював схемку, як працює пайп (pipe).

Ipfw фаєрвол freebsd - настройка і можливості

Ми бачимо два напрямки передачі даних. Коричневе і зелене. Коричневе з вінди в freebsd, зелене - назад. Так ось, ще важливе уточнення, що у кожного напряму є in і out. Тобто Передається з Windows (це out) але в FreeBSD (in), навпаки, для FreeBSD як out буде початок каналу, а для нас він входить, значить in. За малюнком, я думаю, зрозуміло.

Так ось, Pipe - труба - ставиться на будь-який напрямок. І як би "звужує" канал до потрібного значення. Тестувати швидкість мережі ми будемо утилітою Iperf. Я заміряю швидкість спочатку:

Встановлюємо пайп. Для цього в список правил файрволла додаємо:

$ Pipe 1 config bw 2048Kbit / s

Це правило визначає пайп з номером 1, шириною 2048 кбіт / сек. тобто приблизно 2 Мбіт / с. bw - bandwidth - ширина каналу.

Тепер припустимо канал в трубу. Так як для тестування утилітою Iperf FreeBSD у нас буде сервером, а Windows XP - клієнтом, то різати швидкість будемо в місці "in" у FreeBSD, тобто на вхід.

HOST = "192.168.0.10/32"
$ Add pipe 1 tcp from $ to me via em1

#ipfw show - покаже список правил і кількість пакетів (байт) пропущених за цими правилами

#ipfw list - покаже тільки список правил

Застосовуємо нові правила:







Схожі статті