Регистрация пакетов
Это полезный побочный эффект; вы можете отметить в журнале соответствующий условию правила пакет, используя флажок "-l". Для стандартных пакетов это обычно не нужн, но это весьма полезная возможность в тех случаях, когда вы хотите отловить какие-то особые события.
Ядро записывает в журнал записи типа:
Packet log: input DENY eth0 PROTO=17 192.168.2.1:53 192.168.1.1:1025 L=34 S=0x00 I=18 F=0x0000 T=254
Эта журнальная запись создается с таким расчетом, чтобы быть краткой, но и содержать техническую информацию, полезную только для гуру-сетевиков, но она может быть полезной и для остальной части пользователей. Журнальная запись расшифровывается так:
- `input' - цепочка, которая содержала правило, чье соответствие пакету вызывает запись сообщения в журнал.
- `DENY' - то, что правило будет делать с пакетом. Если это - "-", то правило не воздействует на пакет (учетное правило).
- "eth0" - имя интерфейса. Поскольку это была цепочка input, то значит пакет пришел на "eth0".
- `PROTO=17' означает, что это пакет протокола номер 17. Список номеров протоколов задан в "/etc/protocols'. Наиболее часто используемые протоколы 1 (ICMP), 6 (TCP) и 17 (UDP).
- "192.168.2.1" - это IP адрес, с которого пришел пакет
- ":53" означает, что порт источника имеет номер 53. В "/etc/services' это описано как порт `domain' (то есть это - вероятно ответ DNS). Для UDP и TCP, этот номер порта источника. Для ICMP, это - тип ICMP. Для других он будет 65535.
- "192.168.1.1" - IP адрес назначения.
- ":1025" означает, что порт назначения имеет номер 1025. Для UDP и TCP этот номер - порт назначения. Для ICMP это - код ICMP. Для других он будет 65535.
- "L=34' означает, что пакет был общей длиной 34 байта.
- "S=0x00' означает поле Type of Service (делится 4, чтобы получить Type of Service как используется ipchains).
- `I=18' идентификатор IP.
- "F=0x0000' является 16-разрядным смещением фрагмента плюс флажки. Значение, начинающееся с "0x4" или "0x5", означает, что установлен бит Don't Fragment. "0x2" или "0x3" означает установку бита `More Fragments'; после этого ожидается прибытие следующих фрагментов. Остальная часть числа - смещение этого фрагмента, деленное на 8.
- "T=254' является временем жизни ( Time To Live) пакета. При каждом переходе от маршрутизатора к маршрутизатору это значение уменьшается, и оно обычно начинается с 15 или 255.
- `(#5)' может вставляться на более современных ядрах (возможно после 2.2.9). Это - номер правила, которое зарегистрировало пакет в журнале.
На стандартной Linux системе, этот вывод ядра фиксируется klogd (kernel logging daemon) который поручает это syslogd (system logging daemon). "/etc/syslog.conf' управляет поведением syslogd, определяя адресата для каждого "facility" (в нашем случае, facility - "ядро") и "уровень" (для ipchains, используемый уровень - "info").
Например, мой (Debian) /etc/syslog.conf содержит две строки, которые соответствуют "kern.info":
kern.* -/var/log/kern.log *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages
Этот означает, что сообщения дублируются в "/var/log/kern.log' и "/var/log/messages'. Подробности см. в "man syslog.conf'.