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


22

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

필터 : 사전 준비, 전달, 사후 처리

NAT : PREROUTING, INPUT, OUTPUT, POSTROUTING

MANGLE : 사전 준비, 입력, 앞으로, 출력, 사후 처리

그러나 나는 그들이 어떻게 순회되는지, 순서대로 이해할 수 없습니다. 예를 들어 다음과 같은 경우에 어떻게 통과합니까?

  1. 동일한 로컬 네트워크의 PC로 패킷을 보냅니다.
  2. 다른 네트워크의 PC로 패킷을 보낼 때
  3. 게이트웨이가 패킷을 수신하고 전달해야 할 때
  4. 내가 목적지로가는 패킷을받을 때
  5. 다른 경우 (있는 경우)

답변:


28

Wikipedia에는 처리 순서를 보여주는 훌륭한 다이어그램 이 있습니다.

자세한 내용은 iptables 문서, 특히 테이블 및 체인이송 장을 참조하십시오 . 이것은 또한 흐름도를 포함합니다 .

순서는 netfilter가 사용되는 방법 (브릿지 또는 네트워크 필터로 및 응용 프로그램 계층과 상호 작용하는지 여부)에 따라 변경됩니다.

일반적으로 (위 링크 된 장의 세부 사항에는 더 많은 악마가 있지만) 체인은 다음과 같이 처리됩니다.

  • "외부에서 트래픽 인바운드로 INPUT 체인보기 이 호스트를".
  • FORWARD 체인을 "이 호스트를 라우터로 사용하는 트래픽"으로 참조하십시오 (소스 및 대상은 이 호스트 가 아닙니다 ).
  • " 호스트가 전송하려는 트래픽"으로 OUTPUT 체인을 참조하십시오 .
  • PREROUTING / POSTROUTING은 각 테이블 유형마다 다른 용도로 사용됩니다 (예 : nat 테이블의 경우 PREROUTING은 인바운드 (라우팅 / 전달) SNAT 트래픽에 사용되고 POSTROUTING은 아웃 바운드 (라우팅 / 전달) DNAT 트래픽에 사용됩니다. 자세한 내용은 문서를 참조하십시오. 사양.

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

  • 얽힘은 순회시 패킷 (서비스 유형, 사용 시간 등)을 변경하는 것입니다.
  • Nat는 NAT 규칙을 적용합니다.
  • Raw는 표시 및 연결 추적에 사용됩니다.
  • 필터는 패킷을 필터링합니다.

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

  1. 보내는 호스트가 iptables로 호스트 인 경우 OUTPUT
  2. 위와 동일
  3. FORWARD 체인 (게이트웨이가 iptables가있는 호스트 인 경우)
  4. "me"가 iptables가있는 호스트 인 경우 INPUT
  5. 위의 체인 규칙 (일반적인 경험 규칙)과 흐름도를 살펴 보십시오 (IPTables로 달성하려는 목표 에 따라 다름 )

또한 최근에이 링크 ( stuffphilwrites.com/2014/09/iptables-processing-flowchart)를 발견했습니다 . Phil Hagen의 멋진 흐름도가 있습니다.
slm

1
또 다른 좋은 자원 - digitalocean.com/community/tutorials/... .
slm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.