ポート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要求のみを承認するにはどうすればよいですか?
例:
- www.google.com にリクエストが送信されました。
- 要求は私のサーバー(
127.0.0.1:4000
)にリダイレクトされます。 - サーバーはリクエストを受け取り、何かをしてから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
答え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からのトラフィックのみがリダイレクトされます。