Подробности/proc/net/ip_conntrack/nf_conntrack

Я ищу подробную документацию о содержимом файлов /proc/net/nf _conntrack и/или/proc/net/ip_contrack для Linux-систем.

Да, я знаю, есть много утилит, которые могут показать мне содержимое этих файлов в человекообразном формате, но... Я хотел бы сделать это на маршрутизаторе SOHO, с прошивкой Tomato USB (by Shibby), Оптический AFAIK устарел, а entware не содержит каких-либо из этих утилит, поэтому я хотел бы написать script вместо них, но я не нашел подробного описания этих файлов.: (

Ответы

Ответ 1

Формат строки из /proc/net/ip_conntrack такой же, как для /proc/net/nf_conntrack, за исключением того, что первые два столбца отсутствуют.

Я попытаюсь обобщить формат последнего файла, так как я понимаю его из net/netfilter/nf_conntrack_standalone.c, net/netfilter/nf_conntrack_acct.c и исходные файлы ядра net/netfilter/nf_conntrack_proto_*.c. Термин layer относится к модель уровня протокола OSI.

  • Первый столбец: имя протокола сетевого уровня (например, ipv4).
  • Второй столбец: номер протокола сетевого уровня.
  • Третий столбец: имя протокола уровня передачи (например, tcp).
  • Четвертый столбец: номер протокола уровня передачи.
  • Пятый столбец: секунды, пока запись не будет признана недействительной.
  • Шестой столбец (Не все протоколы): Состояние подключения.

Все остальные столбцы называются (key=value) или представляют флаги ([UNREPLIED], [ASSURED],...). Строка может содержать до двух столбцов с одинаковым именем (например, src и dst). Затем первое вхождение относится к направлению запроса, а второе вхождение относится к направлению ответа.

Значение флагов:

  • [ASSURED]: трафик просматривается в обоих направлениях (т.е. запрос и ответ).
  • [UNREPLIED]: Трафик еще не видел в направлении ответа. В случае переполнения кеша отслеживания соединений эти соединения сначала удаляются.

Обратите внимание, что некоторые имена столбцов отображаются только для определенных протоколов (например, sport и dport для TCP и UDP, type и code для ICMP). Другие имена столбцов (например, mark) отображаются только в том случае, если ядро ​​было создано с определенными параметрами.

Примеры:

  • ipv4 2 tcp 6 300 ESTABLISHED src=1.1.1.2 dst=2.2.2.2 sport=2000 dport=80 src=2.2.2.2 dst=1.1.1.1 sport=80 dport=12000 [ASSURED] mark=0 use=2 принадлежит установленному TCP-соединению от хоста 1.1.1.2, порт 2000, к хосту 2.2.2.2, порт 80, из которого ответы отправляются на хост 1.1.1.1, порт 12000, тайм-аут через пять минут. Для этого соединения пакеты видели в обоих направлениях.
  • ipv4 2 icmp 1 3 src=1.1.1.2 dst=1.1.1.1 type=8 code=0 id=32354 src=1.1.1.1 dst=1.1.1.2 type=0 code=0 id=32354 mark=0 use=2 принадлежит к пакету запроса эхо ICMP от хоста 1.1.1.2 к хосту 1.1.1.1 с ожидаемым пакетом ответа эха от хоста 1.1.1.1 до хоста 1.1.1.2, тайм-аут через три секунды.

Хост назначения ответа не обязательно совпадает с хостом источника запроса, поскольку адрес источника запроса может быть замаскирован узлом назначения ответа.


Обратите внимание, что следующая информация может быть не актуальной!

Поля для всех записей:

  • bytes (если учет включен, запрос и ответ)
  • delta-time (если включен CONFIG_NF_CONNTRACK_TIMESTAMP)
  • dst (запрос и ответ)
  • mark (если CONFIG_NF_CONNTRACK_MARK включен)
  • packets (если учет включен, запрос и ответ)
  • secctx (если CONFIG_NF_CONNTRACK_SECMARK включен)
  • src (запрос и ответ)
  • use
  • zone (если включен CONFIG_NF_CONNTRACK_ZONES)

Поля, доступные для dccp, sctp, tcp, udp и udplite протоколы уровня передачи:

  • dport (запрос и ответ)
  • sport (запрос и ответ)

Поля, доступные для icmp протокол уровня передачи:

  • code (запрос и ответ)
  • id (запрос и ответ)
  • type (запрос и ответ)

Поля, доступные для gre протокол уровня передачи:

  • dstkey (запрос и ответ)
  • srckey (запрос и ответ)
  • stream_timeout
  • timeout

Допустимые значения для шестого поля:

  • dccp протокол уровня передачи
    • CLOSEREQ
    • CLOSING
    • IGNORE
    • INVALID
    • NONE
    • OPEN
    • PARTOPEN
    • REQUEST
    • RESPOND
    • TIME_WAIT
  • sctp протокол уровня передачи
    • CLOSED
    • COOKIE_ECHOED
    • COOKIE_WAIT
    • ESTABLISHED
    • NONE
    • SHUTDOWN_ACK_SENT
    • SHUTDOWN_RECD
    • SHUTDOWN_SENT
  • tcp протокол уровня передачи
    • CLOSE
    • CLOSE_WAIT
    • ESTABLISHED
    • FIN_WAIT
    • LAST_ACK
    • NONE
    • SYN_RECV
    • SYN_SENT
    • SYN_SENT2
    • TIME_WAIT