나가는 트래픽을 로컬 서버로 리디렉션

나가는 트래픽을 로컬 서버로 리디렉션

포트 4000을 수신하는 Apache 웹 서버 세트가 있고 이 (로컬) 서버를 일종의 프록시로 사용하고 싶습니다.

아이디어는 모든 로컬로 나가는 HTTP 트래픽(포트 80)을 내 서버(위치)로 리디렉션하는 것입니다 127.0.0.1:4000. 물론 서버는 해당 포트에서 요청을 보낼 수 있어야 합니다 80.

다음과 같이 업데이트 하려고 합니다 iptables.

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:4000

내 서버의 트래픽도 자체적으로 리디렉션되기 때문에 작동하지 않는 것 같습니다.

문제는: 내 서버에서 HTTP 요청만 승인하려면 어떻게 해야 합니까?

예:

  1. www.google.com으로 요청이 전송되었습니다.
  2. 요청이 내 서버( 127.0.0.1:4000) 로 리디렉션됩니다.
  3. 서버는 요청을 받고, 어떤 작업을 수행한 다음 www.google.com으로 요청을 보냅니다.

첫 번째 부분(2.)을 완료했지만 내 서버가 www.google.com 자체로 리디렉션되기 때문에 www.google.com에 액세스할 수 없습니다.

답변1

이를 위해 netfilter를 사용하는 것은 좋은 생각이 아닙니다. nginx나 apache와 같은 역방향 프록시[1]가 필요합니다.

iptable을 사용하려면 다음과 같이 수신 인터페이스에서 필터링할 수 있습니다.

iptables -t nat -A OUTPUT -i eth0 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:4000

[1]http://nginx.com/resources/admin-guide/reverse-proxy/

답변2

@Bratchley의 의견에 따라 해당 옵션을 추가하여 작동하도록 만들었습니다 --uid-owner.

이것은 내가 사용하는 명령입니다:

iptables -t nat -A OUTPUT -m owner --uid-owner 1000 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:4000

Apache 서버에는 특정 사용자가 있으므로 uid 1000의 트래픽만 리디렉션됩니다.

관련 정보