iptables에서 OUTPUT과 FORWARD 체인의 차이점은 무엇입니까?

iptables에서 OUTPUT과 FORWARD 체인의 차이점은 무엇입니까?

센트OS 6.0

저는 iptables를 연구 중이며 FORWARD와 OUTPUT 체인의 차이점에 대해 혼란스러워하고 있습니다. 내 교육 문서에는 다음과 같이 명시되어 있습니다.

체인에 추가(-A)하거나 체인을 삭제(-D)하는 경우 다음 세 방향 중 하나로 이동하는 네트워크 데이터에 적용하려고 합니다.

  • INPUT - 들어오는 모든 패킷은 이 체인의 규칙에 따라 확인됩니다.
  • 출력 - 나가는 모든 패킷은 이 체인의 규칙에 따라 검사됩니다.
  • FORWARD - 다른 컴퓨터로 전송되는 모든 패킷은 이 체인의 규칙에 따라 확인됩니다.

내 생각에는 호스트로 떠나는 패킷이 나가는 것이기 때문에 이것이 나를 혼란스럽게 합니다. 그렇다면 패킷이 다른 컴퓨터로 이동하지만 "나가는" 것이 아닌 시나리오가 있습니까? iptables는 둘을 어떻게 구별합니까?

답변1

OUTPUT은 호스트에서 방출되는 패킷용입니다. 대상은 일반적으로 다른 호스트이지만 루프백 인터페이스를 통해 동일한 호스트일 수 있으므로 OUTPUT을 통과하는 모든 패킷이 실제로 나가는 것은 아닙니다.

FORWARD는 호스트에서 방출되지도 않고 호스트로 전달되지도 않는 패킷을 위한 것입니다. 이는 호스트가 단순히 라우팅하는 패킷입니다.

패킷 맹글링과 NAT에 대해 자세히 알아보기 시작하면 전체 내용은 다음과 같습니다.오히려 더 복잡하다.

답변2

내가 이해하기로는:

입력: 여러 서브넷이 있는 여러 포트가 있더라도 dst IP가 호스트에 있습니다.

출력: src IP는 호스트 또는 포트 중 하나에서 옵니다.

FORWARD: 호스트의 dst IP도 호스트의 src IP도 아닙니다.

여기에 이미지 설명을 입력하세요

예를 들어, 라우터 A에

입력은 다음과 같습니다:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

출력은 다음과 같습니다

192.168.10.199 -> xxxx

192.168.2.1 -> xxxx

앞으로는:

192.168.10.1 -> 192.168.2.199

192.168.10.1 -> 192.168.8.1

192.168.10.1 -> 192.168.8.199

관련 정보