답변:
NAT 테이블 :
이 테이블은 다른 패킷의 NAT (Network Address Translation)에만 사용해야합니다. 즉, 패킷의 소스 필드 또는 대상 필드를 변환하는 데만 사용해야합니다.
필터 테이블 :
필터 테이블은 주로 패킷을 필터링하는 데 사용됩니다. 패킷을 일치시키고 원하는 방식으로 필터링 할 수 있습니다. 이것은 실제로 우리가 패킷에 대해 조치를 취하고 그 내용에 따라 패킷에 포함 된 것을보고 DROP 또는 / ACCEPT하는 곳입니다. 물론 사전 필터링도 수행 할 수 있습니다. 그러나이 특정 테이블은 필터링이 설계된 장소입니다.
에서 테이블과 체인 이송 NAT의 PREROUTING 체인이 모두 전달에 의해 통과하는 동안 우리는 그 필터의 FORWARD 체인을 볼 수 있습니다, 컴퓨터가 라우터처럼 행동 즉, 단지 전송 패킷 (네트워크에서 온 네트워크에 나가서 패킷)에 의해 이송합니다 대상이 로컬 호스트 인 패킷 및 패킷
nat의 PREROUTING을 사용하여 패킷의 대상 주소를 변경하고 필터링의 FORWARD 만 필터링 (패킷 삭제 / 수락)에 대해서만 사용해야합니다.
로컬 컴퓨터 자체로 향하지 않는 첫 번째 라우팅 결정에 패킷을 가져 오면 FORWARD 체인을 통해 라우팅됩니다. 반면에 패킷이 로컬 시스템이 수신하는 IP 주소를 대상으로하는 경우 INPUT 체인을 통해 로컬 시스템으로 패킷을 보냅니다. 로컬 컴퓨터로 패킷을 보낼 수 있지만 NAT를 수행하여 PREROUTING 체인 내에서 대상 주소를 변경할 수 있습니다. 이는 첫 번째 라우팅 결정 전에 발생하므로이 변경 후 패킷을 살펴 봅니다. 이로 인해 라우팅 결정이 완료되기 전에 라우팅이 변경 될 수 있습니다. 모든 패킷은이 이미지에서 하나 또는 다른 경로를 거치게됩니다. 패킷을 원래의 네트워크로 되돌려 보내면 네트워크에서 다시 나올 때까지 나머지 체인을 통과합니다.
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
트래픽 이 수락되어 전달되는 체인 의 예입니다 .eth0
192.168.0.4
192.168.0.4
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT
FORWARD
체인에 대한 두 가지 다른 인터페이스의 맥락에서 착각했다고 생각합니다 . 패킷이 LAN의 한 호스트에서 LAN의 다른 호스트로 전송 될 때, 패킷은 단일 인터페이스를 거치게되며 FORWARD
여기서 사용되는 체인 은 서버 (중간)가 엄격한 의미에서 라우터로 작동하지 않지만 오히려 스위치로 생각할 수 있습니다.