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


16

이 시스템의 작동 방식을 이해하려고하는데 NAT PREROUTING 사용 또는 FORWARD 필터의 차이점을 이해하는 데 문제가 있습니다. 내가 이해 한 바에 따르면 PREROUTE는 필터를 피하면서 다른 서버로 패킷을 보낼 수 있습니다. NAT가 PREROUTE를 통해이를 처리 할 수 ​​있다면 필터에 FORWARD 규칙을 갖는 목적은 무엇입니까?

답변:


25

NAT 테이블 :

이 테이블은 다른 패킷의 NAT (Network Address Translation)에만 사용해야합니다. 즉, 패킷의 소스 필드 또는 대상 필드를 변환하는 데만 사용해야합니다.

필터 테이블 :

필터 테이블은 주로 패킷을 필터링하는 데 사용됩니다. 패킷을 일치시키고 원하는 방식으로 필터링 할 수 있습니다. 이것은 실제로 우리가 패킷에 대해 조치를 취하고 그 내용에 따라 패킷에 포함 된 것을보고 DROP 또는 / ACCEPT하는 곳입니다. 물론 사전 필터링도 수행 할 수 있습니다. 그러나이 특정 테이블은 필터링이 설계된 장소입니다.

에서 테이블과 체인 이송 NAT의 PREROUTING 체인이 모두 전달에 의해 통과하는 동안 우리는 그 필터의 FORWARD 체인을 볼 수 있습니다, 컴퓨터가 라우터처럼 행동 즉, 단지 전송 패킷 (네트워크에서 온 네트워크에 나가서 패킷)에 의해 이송합니다 대상이 로컬 호스트 인 패킷 및 패킷

nat의 PREROUTING을 사용하여 패킷의 대상 주소를 변경하고 필터링의 FORWARD 만 필터링 (패킷 삭제 / 수락)에 대해서만 사용해야합니다.

로컬 컴퓨터 자체로 향하지 않는 첫 번째 라우팅 결정에 패킷을 가져 오면 FORWARD 체인을 통해 라우팅됩니다. 반면에 패킷이 로컬 시스템이 수신하는 IP 주소를 대상으로하는 경우 INPUT 체인을 통해 로컬 시스템으로 패킷을 보냅니다. 여기에 이미지 설명을 입력하십시오 로컬 컴퓨터로 패킷을 보낼 수 있지만 NAT를 수행하여 PREROUTING 체인 내에서 대상 주소를 변경할 수 있습니다. 이는 첫 번째 라우팅 결정 전에 발생하므로이 변경 후 패킷을 살펴 봅니다. 이로 인해 라우팅 결정이 완료되기 전에 라우팅이 변경 될 수 있습니다. 모든 패킷은이 이미지에서 하나 또는 다른 경로를 거치게됩니다. 패킷을 원래의 네트워크로 되돌려 보내면 네트워크에서 다시 나올 때까지 나머지 체인을 통과합니다.


5

PREROUTING :이 체인은 패킷을 보내기 전에 ( PRE ) 라우팅 관련 결정을 내리는 데 사용됩니다 . 항상 있다는 점에서 기억 PREROUTING/POSTROUTING즉, NAT테이블 ACCEPT/DROP/REJECT의 기본의 등 목표 FILTER테이블하지 않습니다 일을. 이 NAT테이블은 라우팅 결정에만 사용됩니다. PREROUTING라우팅 결정, 즉 패킷이 네트워크를 통과하기 전에 결정해야 할 결정을 내릴 때 사용해야 합니다. 다음은 포트 80의 서버에 도달 한 모든 트래픽을 포트 8080으로 리디렉션하는 예입니다.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

FORWARD : 이름에서 알 수 있듯이 테이블 FORWARD체인은 FILTER소스에서 대상으로 패킷을 전달하는 데 사용됩니다. 여기서 소스와 대상은 서로 다른 두 호스트입니다. 상상할 수 있듯이 FORWARD규칙은 기본적으로 한 호스트가 서버를 통해 다른 호스트와 트래픽을주고받는 서버에서 사용됩니다. 패킷이 서버에서 생성되면 체인은 OUTPUT즉 트래픽이 자체에서 나가는 반면 INPUT체인은 패킷이 서버 자체만을 의미합니다. 다음은 호스트 용 인터페이스의 포트 80에서 수신 된 FORWARD모든 TCP트래픽 이 수락되어 전달되는 체인 의 예입니다 .eth0192.168.0.4192.168.0.4

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT

"호스트"를 사용하는 것이 이상해 보입니다. 어떤 테이블이 사용되는지는 주로 패키지가 들어 왔으며 종료하려는 로컬 인터페이스에 따라 다릅니다.
guntbert

어느 부분이 이상하게 보입니까? 나는 호스트의 개념을 사용하여 송신 및 수신 당사자를 표시했습니다 ..
heemayl

FORWARD 단락에 대해 이야기하고 있습니다.이 테이블은 한 인터페이스를 통해 들어오는 패킷이 (로컬 호스트가 아닌) 다른 인터페이스로 향할 때 사용됩니다
guntbert

오 ..ok .. 내가 그것을 .... 그래 난 인터페이스를 사용해야합니다 .... 쉽게 이해하기 위해 호스트를 사용하십시오 .. 내 컴퓨터 앞에있을 때 변경됩니다.
heemayl

@ guntbert : 방금 머리를 똑바로했습니다. 마지막 주석을 충분히 읽지 않았습니다. 나는 당신이 FORWARD체인에 대한 두 가지 다른 인터페이스의 맥락에서 착각했다고 생각합니다 . 패킷이 LAN의 한 호스트에서 LAN의 다른 호스트로 전송 될 때, 패킷은 단일 인터페이스를 거치게되며 FORWARD여기서 사용되는 체인 은 서버 (중간)가 엄격한 의미에서 라우터로 작동하지 않지만 오히려 스위치로 생각할 수 있습니다.
heemayl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.