У цьому розділі обговорюватиметься порядок побудови власних правил для iptables. Кожний рядок, який ви вставляєте у той або інший ланцюжок, повинний містити окреме правило. Ми ж обговоримо основні критерії і дії (targets) та порядок створення власних дій (тобто. підланцюжкових правил).

Основи

Як мовилося раніше, кожне правило -- це рядок, що містить у собі критерії що визначають, підпадає чи пакет під заданий правило, і дію, що слід виконати у виконання критерію. Загалом вигляді правила записуються приблизно таке:

iptables -t  table command [match] [target/jump]

Ніде не стверджується, що описування дії (target/jump) має стояти остатнім в рядку, проте, така нотація більш удобочитаема. Хай не пішли, але найчастіше вам зустрічатиметься саме такий спосіб записи правил.

Якщо правило, не включається специфікатор [-t table], то вмовчанням передбачається використання таблиці filter, Якщо ж передбачається використання інший таблиці, це потрібно вказати явно. Спецификатор таблиці як і можна вказувати будь-де рядки правила, проте він більше більш-менш стандартом вважається вказівку таблиці на початку правила.

Далі, безпосередньо за ім'ям таблиці, має стояти команда. Якщо специфікатора таблиці немає, то команда завжди має стояти першої. Команда визначає дію iptables, наприклад: вставити правило, чи додати правило насамкінець ланцюжка, чи видалити правило тощо.

Розділ match задає критерії перевірки, якими визначається підпадає чи пакет під цього правила чи ні. Тут ми можемо вказати найрізноманітніші критерії -- IP-адрес джерела пакета чи мережі, IP-адрес місця назначения,порт, протокол, мережевий інтерфейс тощо. Існує безліч різноманітних критеріїв, але це -- трохи згодом.

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