나는 iptables
규칙을 가진 전문가라고 주장하지 않지만 첫 번째 명령은 연결 추적 확장 ( conntrack
)을 사용하고 두 번째 명령은 확장 을 사용 state
합니다.
데이터 포인트 # 1
에 따르면 이 문서conntrack
확장 대체 state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
데이터 포인트 # 2
그렇더라도 SF 질문 및 답변 : 상태 및 정책에 대한 방화벽 질문? OP는 # iptables @ freenode에서 IRC에 대해이 질문을했다고 주장했습니다. 거기에서 토론 한 후에 그는 다음과 같은 결론에 도달했습니다.
기술적으로 conntrack 일치는 상태 일치를 대체하고 더 이상 사용되지 않습니다. 그러나 실질적으로 국가 경기는 어떤 식 으로든 더 이상 사용되지 않습니다.
데이터 포인트 # 3
마지막으로 SF 질문 및 답변 : Iptables, -m state와 -m conntrack의 차이점은 무엇입니까? . 이 질문의 답은 아마의 사용을 확인하는 방법에 대한 최고의 증거와 조언을 conntrack
하고 state
.
발췌
둘 다 아래의 동일한 커널 내부를 사용합니다 (연결 추적 하위 시스템).
xt_conntrack.c의 헤더 :
xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
따라서 상태 모듈이 더 간단하고 오류가 발생할 가능성이 적습니다. 커널이 더 길다. 다른 쪽의 Conntrack에는 더 많은 옵션과 기능이 있습니다 [1] .
내 전화는 기능이 필요한 경우 conntrack을 사용하고, 그렇지 않으면 상태 모듈을 사용합니다.
[1]"-m conntrack --ctstate DNAT -j MASQUERADE"
라우팅 / DNAT 수정 과 같은 매우 유용 ;-)
데이터 포인트 # 4
나는 netfilter@vger.kernel.org netfilte에서이 스레드를 발견 / iptables에 토론 제목 : 상태 일치되지 않는 1.4.17이다 꽤 많은 것을 말한다, state
그냥 별칭 conntrack
그래서 정말 문제가 당신이 사용하지 않는 두 가지 상황을 모두 사용하고 conntrack
있습니다.
발췌
사실, 동의해야합니다. "state"를 별칭으로 유지하고 "conntrack"의 이전 구문을 받아들이지 않는 이유는 무엇입니까?
커널의 상태는 현재 별칭이 있고 iptables에서 conntrack으로 변환됩니다. 스크립트가 깨지지 않았습니다.
사용자 공간에서 앨리어싱을 수행하면 커널 부분을 제거 할 수 있습니다.
앨리어싱은 이미 사용자 공간에서 수행됩니다. 하나는 "state"를 입력하고 "conntrack"으로 변환 된 다음 커널로 전송됩니다. (ipt_state 등의 모듈 별명이 conntrack 모듈에 추가되었는지 여부에 따라 상태 커널 모듈도 제거 될 수 있습니다.)
참고 문헌