iptables 테이블과 체인을 통과하는 방법

iptables 테이블과 체인을 통과하는 방법

나는 리눅스에 아래와 같이 각각 자체 체인이 있는 3개의 내장 테이블이 있다는 것을 알고 있습니다.

필터: 사전 배선, 전달, 사후 배선

네트워크 주소 변환: 배선 전, 입력, 출력, 배선 후

맨레: 사전 배선, 입력, 전달, 출력, 사후 배선

그러나 나는 그들이 어떻게 통과되는지, 어떤 순서로 있는지 이해하지 못합니다. 예를 들어 다음과 같은 경우 이를 반복하는 방법은 다음과 같습니다.

  1. 동일한 로컬 네트워크에 있는 컴퓨터로 패킷을 보냅니다.
  2. 다른 네트워크에 있는 컴퓨터로 패킷을 보낼 때
  3. 게이트웨이가 패킷을 수신하고 이를 전달해야 하는 경우
  4. 나에게 보낸 패키지를 받았을 때
  5. 기타 상황(해당하는 경우)

답변1

위키피디아에는 하나가 있습니다.훌륭한 차트처리 순서를 표시합니다.

자세한 내용은 iptables 설명서를 참조하세요.시계 체인이 챕터를 횡단함. 여기에는 또한흐름도.

순서는 netfilter가 사용되는 방식(브리지 또는 네트워크 필터 및 애플리케이션 계층과 상호 작용하는지 여부)에 따라 변경됩니다.

일반적으로 말하면(위에 링크된 장에 더 자세한 내용이 있지만) 체인은 다음과 같이 처리됩니다.

  • INPUT 체인을 "외부에서 들어오는 트래픽"으로 생각하세요.도착하다이 호스트."
  • FORWARD 체인을 "이 호스트를 라우터로 사용하는 트래픽"(소스와 대상은아니요이 호스트).
  • OUTPUT 체인을 "트래픽"으로 생각하십시오.이것주인님이 보내드릴 거예요."
  • PREROUTING / POSTROUTING은 각 테이블 유형마다 서로 다른 용도로 사용됩니다. 예를 들어 nat 테이블의 경우 PREROUTING은 인바운드(라우팅/전달) SNAT 트래픽에 사용되고 POSTROUTING은 아웃바운드(라우팅/전달) DNAT 트래픽에 사용됩니다. 자세한 내용은 다음을 참조하세요. 특정 세부 사항에 대한 문서.

다양한 테이블은 다음과 같습니다:

  • Mangle은 순회하면서 패킷(서비스 유형, TTL(Time to Live) 등)을 변경하는 것입니다.
  • Nat은 NAT 규칙을 넣는 것입니다.
  • Raw는 마크업 및 연결 추적에 사용됩니다.
  • 필터는 데이터 패킷을 필터링하는 데 사용됩니다.

따라서 5가지 시나리오의 경우:

  1. 보내는 호스트가 iptables가 있는 호스트인 경우 OUTPUT
  2. 같은 상기와
  3. FORWARD 체인(게이트웨이가 iptables가 있는 호스트인 경우)
  4. "나"가 iptables가 있는 호스트인 경우 INPUT
  5. 위의 체인 규칙(일반적인 경험 법칙)과 흐름도(이 역시 경우에 따라 다름)를 살펴보세요.무엇이를 달성하기 위해 IPTables를 사용하려고 합니다)

답변2

뭐, 익숙해졌어.Phil Hagen의 흐름도(이전 답변에서 언급한 @slm과 같이) 아래의 ASCII 순서도입니다.

network  ->  PREROUTING  ->  routing  ->  INPUT  ------->  process
               raw           decision       mangle
               (conntrack)   |              filter
               mangle        |              security
               nat(*)        |              nat
                             V
                             FORWARD  ----\
                              mangle      |
                              filter      |
                              security    |
                                          V
process  ->  OUTPUT  ------------------>  POSTROUTING  ->  network
               (routing decision??)         mangle
               raw                          nat(*)
               (conntrack)
               mangle
               nat
               (output interface assigned here?)
               filter
               security

(*)  Certain localhost packets skip the PREROUTING and POSTROUTING nat
     chains.  See the post and diagram by Phil Hagen for details.

iptables저는 Netfilter 전문가가 아니기 때문에 의견, 제안 및 수정을 환영합니다 .

관련 정보