Я всегда думал, что отслеживание подключений IPv4 (a.k.a. conntrack
) - это пассивный модуль, который просто читает пакеты и отслеживает их, поэтому позже другие модули может использовать эту собранную информацию для принятия решения о судьбе связанных пакетов (например, пакетов, принадлежащих одному и тому же соединению L4).
Однако недавно я наткнулся на этот комментарий в conntrack
с исходный код:
«Отслеживание соединения может отбрасывать пакеты, но никогда не изменяет их, поэтому сделайте это первым перехватчиком».
.. что означает, что conntrack
это не просто пассивный наблюдатель, он может отбрасывать пакеты !!!
При каких обстоятельствах это происходит?
Учитывайте порядок действий. Коннтраку в любом случае нужно было появиться относительно рано. Если это не изменит пакеты, тем лучше; если исходные пакеты должны что-то упростить.
Если отслеживание соединения не удается, что еще можно сделать с неотслеживаемыми пакетами, кроме как отбросить их? Политика брандмауэра, которая автоматически разрешает ответы на ваши потоки, больше не работает.
netfilter FAQ упоминает несколько причин сбоя, так как это может случиться и с NAT. Мне кажется, это раздражает нишевые рабочие нагрузки, где conntrack больше не масштабируется.