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


22

CentOS 6.0

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

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

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

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

답변:


26

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

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

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


흥미 롭다 ... 그래서 내 이해의 목적으로, OUTPUT은 시스템에서 "출발하는"패킷이고 FORWARD는 시스템에서 시작되지 않았거나 예정된 패킷에 대한 것입니다. 그 대신 시스템을 "통과"하고 있습니까?
Mike B

1
"포워드 된"패킷은 네트워크 인터페이스에 의해 "출력"됩니다. , iptables는 순방향으로 OK를 결정하고, 패킷은 "출력 체인"에 들어가고, iptables는 체크하고, 출력하기 위해 "ok"를 참조하십시오.
Grizly

2
@Grizly 아니요, 메모리에서 (이 답변을 작성할 때 특별히 테스트하지 않았다는 것을 인정합니다) 링크 된 다이어그램에 따르면 패킷은 항상 세 개의 filter체인 중 하나 ( INPUT또는 OUTPUT또는 FORWARD)를 통과합니다 . (다른 체인이 이전에 떨어지지 않는다고 가정합니다.) 체인 manglenat체인이 다르면 체인을 생각하고 있었 mangle습니까?
Gilles 'SO- 악마 그만해

0

내 이해에 :

입력 : 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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.