Jaka jest praktyczna różnica między:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
i
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Którego najlepiej użyć?
Dziękuję Ci.
Jaka jest praktyczna różnica między:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
i
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Którego najlepiej użyć?
Dziękuję Ci.
Odpowiedzi:
Oba używają tych samych elementów wewnętrznych jądra (podsystem śledzenia połączeń).
Nagłówek xt_conntrack.c:
xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
Powiedziałbym więc, że moduł stanu jest prostszy (i może mniej podatny na błędy). Jest także dłuższy w jądrze. Conntrack po drugiej stronie ma więcej opcji i funkcji [1].
Moim wezwaniem jest użycie conntrack, jeśli potrzebujesz jego funkcji, w przeciwnym razie trzymaj się modułu stanu.
Podobne pytanie dotyczące maillisty netfilter.
[1] Całkiem przydatne, jak „-m conntrack --ctstate DNAT -j MASQUERADE” routing / naprawa DNAT ;-)
Nie ma różnicy w wynikach tych dwóch zasad. Oba rozszerzenia dopasowania używają tych samych danych do dopasowania stanu śledzenia połączenia. state jest „starym” rozszerzeniem dopasowania, a conntrack jest nowszy i ma o wiele więcej opcji niż tylko dopasowanie stanu śledzenia połączenia.
Jak mówi dokumentacja:
Conntrack match jest rozszerzoną wersją dopasowania stanu, która umożliwia dopasowanie pakietów w znacznie bardziej szczegółowy sposób. Pozwala spojrzeć na informacje bezpośrednio dostępne w systemie śledzenia połączeń, bez żadnych systemów „frontendowych”, takich jak dopasowanie stanu. Aby uzyskać więcej informacji o systemie śledzenia połączeń, zapoznaj się z rozdziałem The machine machine.