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

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

  • Iptables - лимитные соединения для каждого порта
  • Пересылка порта запроса ssh с глобального IP на определенный локальный IP-адрес
  • Перенаправление портов IPTables должно быть сломанным Apache, но не было
  • Как блокируется блокировка UDP-трафика (кроме трафика, связанного с udp-dns)?
  • Iptables: защита Linux-системы путем ограничения всего трафика на один статический IP-адрес и loopback с использованием Iptables
  • Как включить Iptables в Fedora 18?
  • Fedora 21 Port Forwarding с firewalld (firewall-cmd); как это ДЕЙСТВИТЕЛЬНО работает? Или, не так ли?
  • Какие сетевые протоколы используют сервер баз данных Postgres?
  • 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 )

    Interesting Posts

    Не применяется ли umask к файлам?

    Сжатие нескольких файлов в разных папках без структуры папок

    Firefox: используйте системные прокси-настройки, но где они?

    Как открыть терминал без bash или других запущенных процессов

    в чем разница между exec и dbus-запуском?

    Получение «cpio: Плохая магия» при попытке установить rpm в установленный логический том

    Как скопировать папку с помощью команды установки

    Нет выхода, использующего параллель в тандеме с ag или ack

    Должен ли я использовать IsoHybrid для загрузки флеш-накопителей?

    Определите максимальную длину столбца для каждого столбца в упрощенном csv-файле (по одной строке в строке)

    Запись веб-камеры с использованием ffmpeg

    Как удалить libgcj из Debian?

    Использование ARGV для ввода пользовательского ввода в сценарий Awk

    Добавить автозаполнение для пользовательского скрипта

    Как остановить скрипт в определенное время, пока он не начнется снова cron?

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