iptablesを使用してポートからチェーンにトラフィックをリダイレクトしますか?

iptablesを使用してポートからチェーンにトラフィックをリダイレクトしますか?

Raspberry PiにprivoxyとSocksプロキシソフトウェアをインストールしました。

すべてのトラフィックをREDSOCKS_FILTERチェーンにリダイレクトしたいと思います。ポート80のすべてのTCPプロトコルトラフィックはprivoxyを通過し、REDSOCKS_FILTERチェーンに到達します。 REDSOCKS_FILTERチェーンから一部のローカルIPアドレスを削除し、最後に処理されたトラフィックがソックスプロキシソフトウェアに移動します。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8118
iptables -t nat -A OUTPUT -p tcp --dport 8118  -j REDSOCKS_FILTER
iptables -t nat -A PREROUTING -p tcp -j REDSOCKS_FILTER

このaseを作成しましたが、privoxyのポート80を通過するトラフィックはREDSOCKS_FILTERチェーンに到達できません。しかし、私が入力すると

iptables -t nat -A OUTPUT -p tcp --dport 8118  -j REDSOCKS_FILTER

テストした結果、うまくいかないようですが、結果はまだ同じです。何が間違っていたのか混乱しています。

ベストアンサー1

私はREDSOCKS_FILTERそれがfilterテーブルではiptablesなくnatテーブルにあると仮定していますか? TCP / IPドライバスタック内の異なる場所で異なるテーブルが処理されるため、あるテーブルから別のテーブルに移動できません。

NAT テーブルの PREROUTING および OUTPUT チェーンでリダイレクトされているため、対応するfilterINPUT テーブルと OUTPUT テーブルでパケットを処理するときに、これらの変更はすでに適用されています。したがって、次のようなものが必要です。

iptables -t filter -A INPUT -p tcp --dport 8118 -j REDSOCKS_FILTER
iptables -t filter -A OUTPUT -p tcp --dport 8118 -j REDSOCKS_FILTER

filterこれは基本テーブルなので、このオプションは省略できます-t filter

さまざまなNetfilterテーブル間のパケットフロー図が役に立ちます。

https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

ブリッジングではないため、実行するすべての操作は、iptablesこのイメージの緑色の「ネットワークレイヤー」内で発生します。

おすすめ記事