"Oskar Andreasson. Iptables Tutorial 1.1.19 " - читать интересную книгу автора


Кратко рассмотрим таблицу трассировщика, которую можно найти в файле
/proc/net/ip_conntrack. Здесь содержится список всех активных соединений.
Если модуль ip_conntrack загружен, то команда cat /proc/net/ip_conntrak
должна вывести нечто, подобное:
tcp 6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 \
dport=22 [UNREPLIED] src=192.168.1.9 dst=192.168.1.6 sport=22 \ dport=32775
use=2
В этом примере содержится вся информация, которая известна
трассировщику, по конкретному соединению. Первое, что можно увидеть - это
название протокола, в данном случае - tcp. Далее следует некоторое число в
обычном десятичном представлении. После него следует число, определяющее
"время жизни" записи в таблице (т.е. количество секунд, через которое
информация о соединении будет удалена из таблицы). Для нашего случая, запись
в таблице будет храниться еще 117 секунд, если конечно через это соединение
более не проследует ни одного пакета. При прохождении каждого последующего
пакета через данное соединение, это значение будет устанавливаться в
значение по-умолчанию для заданного состояния. Это число уменьшается на 1
каждую секунду. Далее следует фактическое состояние соединения. Для нашего
примера состояние имеет значение SYN_SENT. Внутреннее представление
состояния несколько отличается от внешнего. Значение SYN_SENT говорит о том,
что через данное соединение проследовал единственный пакет TCP SYN. Далее
расположены адреса отправителя и получателя, порт отправителя и получателя.
Здесь же видно ключевое слово [UNREPLIED], которое сообщает о том, что
ответного трафика через это соединение еще не было. И наконец приводится
дополнительная информация по ожидаемому пакету, это IP адреса
отправителя/получателя (те же самые, только поменявшиеся местами, поскольку
ожидается ответный пакет), то же касается и портов.
Записи в таблице могут принимать ряд значений, все они определены в
заголовочных файлах linux/include/netfilter-ipv4/ip_conntrack*.h. Значения
по-умолчанию зависят от типа протокола. Каждый из IP-протоколов - TCP, UDP
или ICMP имеют собственные значения по-умолчанию, которые определены в
заголовочном файле linux/include/netfilter-ipv4/ip_conntrack.h. Более
подробно мы остановимся на этих значениях, когда будем рассматривать каждый
из протоколов в отдельности.

ПРИМЕЧАНИЕ: Совсем недавно, в patch-o-matic, появилась заплата
tcp-window-tracking, которая предоставляет возможность передачи значений
всех таймаутов через специальные переменные, т.е. позволяет изменять их "на
лету". Таким образом появляется возможность изменения таймаутов без
необходимости пересборки ядра.

Изменения вносятся с помощью определенных системных вызовов, через
каталог /proc/sys/net/ipv4/netfilter. Особое внимание обратите на ряд
переменных /proc/sys/net/ipv4/netfilter/ip_ct_*.
После получения пакета ответа трассировщик снимет флаг [UNREPLIED] и
заменит его флагом [ASSURED]. Этот флаг сообщает о том, что соединение
установлено уверенно и эта запись не будет стерта по достижении максимально
возможного количества трассируемых соединений. Максимальное количество
записей, которое может содержаться в таблице зависит от значения