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

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

  • Что означает это правило iptables?
  • Перенаправление портов по шлейфу с IP-адресом, кроме 127.0.0.1
  • Почему некоторые пакеты сброса TCP отображаются в моем журнале iptables?
  • VPN с iptables и маршрутизацией: порт доступа из локальной сети
  • Что такое конфигурация iptables для моего рабочего стола?
  • Перенаправление трафика с одного компьютера на другой
  • Переадресация портов между двумя интернет-машинами
  • Кто-нибудь когда-либо проверял правила брандмауэра OpenWrt по умолчанию?
  • Как получить показатели о снижении трафика через iptables?
  • Клиент и сервер OpenVPN на одном компьютере - сервер не разрешает подключения, когда клиент подключен
  • Iptables FORWARD цепной трафик, не наблюдаемый tcpdump
  • Помощь в настройке настраиваемого файла журнала для 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 - лучшая ОС в мире.