iptables에서 OUTPUT과 FORWARD 체인의 차이점은 무엇입니까? 체인의 규칙에 따라 점검됩니다.

CentOS 6.0

나는 iptables를 공부하고 있으며 FORWARD와 OUTPUT 체인의 차이점에 혼란스러워지고 있습니다. 교육 문서에는 다음과 같이 명시되어 있습니다.

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

  • 입력-모든 수신 패킷은이 체인의 규칙에 따라 점검됩니다.
  • 출력-모든 발신 패킷은이 체인의 규칙에 따라 점검됩니다.
  • FORWARD-다른 컴퓨터로 전송되는 모든 패킷은이 체인의 규칙에 따라 점검됩니다.

내 마음에 호스트를 위해 떠나는 패킷이 나가기 때문에 이것은 혼란 스럽습니다. 패킷이 다른 컴퓨터로 가고 있지만 나가지는 않는 시나리오가 있습니까? iptables는 두 가지를 어떻게 구별합니까?



답변

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

FORWARD는 호스트에서 방출되거나 호스트로 보내지지 않은 패킷을위한 것입니다. 이들은 호스트가 단순히 라우팅하는 패킷입니다.

패킷 맹 글링과 NAT를 파고 들기 시작하면 전체 내용이 다소 복잡해 집니다.


답변

내 이해에 :

입력 : dst IP가 호스트에 있으며 서브넷이 여러 개인 포트가 여러 개인 경우에도

출력 : src IP는 호스트 중 하나에서

앞으로 : 호스트의 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