Кратко
- По RFC 3164 ретранслятор добавлял собственное текущее местное время, если PRI был распознан, а TIMESTAMP отсутствовал или был неверен; также рекомендовалось добавить известное ему имя или адрес устройства.
- После расширения пакет всё равно должен был уложиться в 1024 байта. Излишек отрезался с конца вместе с возможной ключевой частью исходного текста.
- Более поздние стандарты точнее развели роли источника, ретранслятора, сборщика и транспорта, но правильный заголовок, целый кадр или удостоверенный TLS-сосед не стали доказательством сквозного происхождения.
Исправление заголовка оплачивалось содержимым
RFC 3164, опубликованный в 2001 году, описал уже сложившийся BSD syslog. Он различал устройство, создающее сообщение, relay, принимающий и пересылающий его, и collector, который принимает без дальнейшей пересылки. Отправителю не требовалось знать роль следующей машины.
Получив пакет, ретранслятор проверял PRI, а затем форму TIMESTAMP. Если оба поля были допустимы и политика требовала пересылки этого приоритета, пакет уходил без изменений. Проверять точность времени или соответствие HOSTNAME сетевому источнику не требовалось. Допустимая синтаксическая форма определяла обработку, но не подтверждала правдивость полей.
Если PRI распознавался, а TIMESTAMP отсутствовал или имел неверную форму, ретранслятор вставлял сразу после PRI метку времени и пробел. Это было его собственное текущее местное время, а не восстановленный момент исходного события. По возможности добавлялся HOSTNAME — имя устройства в представлении ретранслятора, либо IP-адрес, если имя определить не удалось. Остаток принятого пакета становился CONTENT.
Затем применялся тот же жёсткий предел: не более 1024 байт на весь пакет. После вставок ретранслятор пересчитывал длину. Если она выросла сверх предела, пакет следовало обрезать до 1024 байт. RFC прямо предупреждает о потере жизненно важной информации в конце исходного пакета.
Контекст не получил отдельного места. Он конкурировал с сообщением. Сборщик приобретал время наблюдения промежуточного узла и предполагаемую им идентичность устройства, но мог потерять код ошибки, имя объекта, результат операции или заключительную оговорку.
Отсутствие PRI увеличивало цену нормализации
При отсутствующем или нераспознаваемом PRI ретранслятор вставлял значение приоритета 13, затем время и, желательно, HOSTNAME, а всё полученное считал содержимым. После этого снова действовало усечение до 1024 байт.
Следующий ретранслятор мог увидеть уже допустимые PRI и TIMESTAMP и переслать результат без изменений. Финальная копия не обязательно сообщала, какие поля написал источник, а какие первый посредник. Удалённый хвост мог не оставить никакого признака, а единая форма скрывала историю преобразования.
Старый TIMESTAMP не включал год и часовой пояс. Сборщик мог приписать год по времени архивации, но задержка и смена года делали вывод ненадёжным. Вставленное время лучше свидетельствовало о наблюдении ретранслятора, чем о времени события у источника.
Точная граница кадра не возвращает ранее удалённый хвост
RFC 5424 в 2009 году формализовал originator, relay, collector, transport sender и transport receiver. Заголовок получил VERSION, TIMESTAMP, HOSTNAME, APP-NAME, PROCID и MSGID, а затем структурированные данные. Размер стал зависеть от транспортного отображения: каждый приёмник должен принимать 480 октетов и желательно 2048.
Если сообщение больше поддерживаемого, приёмнику рекомендуется усечь полезную нагрузку либо разрешается отбросить сообщение. Усечение выполняется с конца. Начало получает преимущество, хотя UTF-8 или структурированные данные могут оборваться в недопустимом месте. Раздел безопасности предупреждает: таким усечением можно скрыть важную информацию, поэтому важное следует ставить раньше.
В RFC 5425 syslog поверх TLS использует десятичное число октетов, пробел и сообщение. Приёмник точно знает границу даже через несколько TLS-записей. Но удостоверенная личность транспортного отправителя не обязана совпадать с HOSTNAME. TLS защищает один переход, не подписывая автоматически заявление об исходном узле.
RFC 5426 помещает в UDP-датаграмму ровно одно полное или усечённое syslog-сообщение. RFC 6587 описывает для TCP подсчёт октетов и кадрирование терминатором. Эти способы показывают границу имеющихся данных, но не восстанавливают байты, выброшенные прежде.
Реестр параметров syslog IANA объясняет значения facility, severity, version и идентификаторов структурированных данных. Регистрация помогает читать числа, но не доказывает реализацию, настройку, доставку, сохранность или подлинность источника.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
