発信トラフィックをローカルサーバーにリダイレクト

発信トラフィックをローカルサーバーにリダイレクト

ポート4000をリッスンするApache Webサーバーセットがあり、この(ローカル)サーバーを一種のプロキシとして使用したいと思います。

アイデアは、すべてのローカルに送信される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からのトラフィックのみがリダイレクトされます。

関連情報