Пакеты не отображаются в цепочке POSTROUTING

Если какая-либо часть «соответствующей» строки (, включая расстояние между полями ), может изменяться между двумя файлами, тогда joinбудет лучшим инструментом для этой работы.

sort -n -k 2 < file1 > sort1
sort -n -k 2 < file2 > sort2
join --header -1 2 -2 2 -o '1.1 1.2 1.3 1.4 1.5'  sort1 sort2

Шаги sortнеобходимы, потому что joinтребует, чтобы его ввод был отсортирован (по общему полю ).

Результат:

#CHROM POS ID REF ALT
1 10366 rs58108140 G A
1 51954 rs185832753 G C
2
12.12.2020, 13:29
1 ответ

Похоже, что в Linux 5.4.0 реализована некоторая оптимизация, которая предотвращает запуск некоторых пакетов через POSTROUTING .

Чтобы заставить протоколирование работать, было добавлено фиктивное правило в цепочку POSTROUTING . Любая из этих работ (в дополнение к-j LOG):

$ sudo iptables -t nat -A POSTROUTING -o. -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -o. -j NETMAP --to 0

Даже после этого не все пакеты регистрируются. Например, регистрируется только первый (с SEQ=0)эхо-запрос ICMP и только первый TCP-пакет (с SYN ).


Мне удалось решить настоящую проблему NAT (, т. е. -j MASQUERADEне работает ), запустив:

$ echo 0 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
1
18.03.2021, 22:43

Теги

Похожие вопросы