센트OS 6.0
나는 iptables를 조사하고 있는데 FORWARD와 OUTPUT 체인의 차이점에 대해 혼란스러워합니다. 내 교육 문서에는 다음과 같이 명시되어 있습니다.
체인에 (-A) 추가하거나 (-D)에서 체인을 제거하는 경우 다음 세 방향 중 하나로 이동하는 네트워크 데이터에 이를 적용해야 합니다.
- 입력 - 들어오는 모든 패킷은 이 체인의 규칙에 따라 확인됩니다.
- 출력 - 나가는 모든 패킷이 이 체인의 규칙에 따라 검사됩니다.
- 전달 - 다른 컴퓨터로 전송된 모든 패킷은 이 체인의 규칙에 따라 확인됩니다.
호스트로 전송된 패킷이 외부로 나가야 하는 것처럼 보이기 때문에 이것이 나를 혼란스럽게 합니다. 그렇다면 패킷이 다른 컴퓨터로 전송되지만 "송신"되지는 않는 상황이 있습니까? iptables는 둘을 어떻게 구별합니까?
답변1
OUTPUT은 호스트가 보낸 패킷에 사용됩니다. 대상은 일반적으로 다른 호스트이지만 루프백 인터페이스를 통해 동일한 호스트에 도달할 수도 있으므로 OUTPUT을 통과하는 모든 패킷이 실제로 나가는 것은 아닙니다.
FORWARD는 호스트에 의해 전송되거나 호스트로 전달되지 않는 패킷에 적용됩니다. 호스트에 의해서만 라우팅되는 패킷입니다.
패킷 수정과 NAT에 대해 자세히 알아보기 시작하면 전체 내용은 다음과 같습니다.꽤 복잡하다.
답변2
내가 이해하는 한도에서는:
입력: 여러 포트와 여러 서브넷이 있더라도 대상 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