Как сделать журналы iptables для идентификации протоколов по имени, а не по номеру?

В моих журнальных файлах iptables (Ubuntu 16-04) все сообщения от моего LAN-маршрутизатора и других хостов в локальной сети, связанные с IGMP, имеют «PROTO = 2». Есть ли способ изменить это и получить «PROTO = IGMP»?

  • Почему эта команда ограничения входа tc не работает? (пропускная способность падает до нуля)
  • Минимизировать задержку игрового сервера с помощью iptables
  • Как защитить от сканеров портов?
  • Как перенаправить исходящий трафик на порт 80 с помощью iptables локально?
  • Цепочка IPTABLES нужна помощь для ограничения
  • Использование iptables для блокировки определенных служб
  • Linux IPTables - игнорировать диапазон IP-адресов
  • Управляющая полоса пропускания с iptables
  • One Solution collect form web for “Как сделать журналы iptables для идентификации протоколов по имени, а не по номеру?”

    sed -e "$(awk '/^[[:space:]]*(#|$)/ { next } ; { print "s/ PROTO="$2" / PROTO="$3" /;" }' \ /etc/protocols)" /path/to/iptables.log 

    Это использует awk для создания сценария sed из полей 2 и 3 файла /etc/protocols . Затем он запускает этот сценарий sed на /path/to/iptables.log . Это приведет к преобразованию всех нумерованных протоколов в файл журнала в соответствующие им имена.

    Если вы предпочитаете, вы можете сохранить вывод скрипта awk в файл (например, называемый verbose-proto.sed а затем запустить его с sed -f (или даже отредактировать его, чтобы добавить #!/bin/sed -f в качестве первого line и chmod чтобы сделать его исполняемым).

     $ awk '/^[[:space:]]*(#|$)/ { next } ; { print "s/ PROTO="$2" / PROTO="$3" /;" }' \ /etc/protocols > ./verbose-proto.sed $ printf "%s\n" 1 i '#!/bin/sed -f' . w | ed -s verbose-proto.sed $ chmod +x ./verbose-proto.sed $ ./verbose-proto.sed /path/to/iptables.log 

    Если все, что вы хотите сделать, это изменить один протокол номер 2 на IGMP , это намного проще:

     sed -e 's/ PROTO=2 / PROTO=IGMP /' /path/to/iptables.log 

    ( awk скрипт генерирует около 50 строк с регулярным поиском и заменяет такие правила: по одному для каждого известного протокола в /etc/protocols )

    Linux и Unix - лучшая ОС в мире.