В веб-странице журнала iptables

Создайте /etc/rsyslog.d/iptables.conf со следующим содержимым:

:msg, startswith, "iptables: " -/var/log/iptables.log
& ~

Вторая строка означает отбрасывать сообщения, которые были сопоставлены в предыдущей строке.
Почему & ~ означает "отбросить сообщения, которые были сопоставлены в предыдущей строке" в конфигурации iptables?

1 ответ1

1

Это не имеет ничего общего ни с bash ни с iptables (как изначально предлагали ваши теги вопросов). Этот /etc/rsyslog.d/iptables.conf является частью конфигурации rsyslogd , а не конфигурации iptables .

& является частью синтаксиса, который понимает rsyslog .

Это объясняется здесь:

Вы можете иметь несколько действий для одного селектора (или, точнее, одного фильтра такой линии селектора). Каждое действие должно быть в отдельной строке, и строка должна начинаться с символа амперсанда (&) и не иметь фильтров. Примером будет

*.=crit :omusrmsg:rger
& root
& /var/log/critmsgs

Эти три строки отправляют критические сообщения пользователю rger и root а также сохраняют их в /var/log/critmsgs . Использование нескольких действий для каждого селектора удобно, а также повышает производительность.

Тогда ~ объясняется здесь:

Если действие отмены выполнено, полученное сообщение немедленно отбрасывается. Никакой дальнейшей обработки не происходит. […] Discard - это просто слово stop без дополнительных параметров:

stop

Например,

*.*   stop

отбрасывает все (хорошо, вы можете добиться того же самого, вообще не запустив rsyslogd …).

Обратите внимание , что в старой версии конфигурации тильда ~ также может быть использована вместо слова stop

В вашем случае соответствующие сообщения будут записаны в файл, а затем удалены (не обрабатывается дальше).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .