
を実行していますDebian 8
。すべてのパケットを傍受しようとしており、現在iptables
これを使用しています:
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 5000
これは機能しているように見えますが、パケットの元の宛先ポートを取得する可能性がなくなります。
TPROXY
は使用されていないため、これが正しい方法であると読みましたNAT
。
これを次のように置き換えてみましたREDIRECT
:
iptables -t mangle -A PREROUTING -p tcp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 5000
しかし、そうすることで、私のサービス上のパケットが傍受されることはありません...
答え1
カーネル ツリーの Documentation/networking/tproxy.txt には次の内容が記載されています。
'TPROXY' ターゲットは、NAT に依存せずに同様の機能を提供します。上記の iptables ルールセットに次のようなルールを追加するだけです。
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY \ --tproxy-mark 0x1/0x1 --on-port 50080
これを機能させるには、リスニング ソケットに対して (SOL_IP、IP_TRANSPARENT) を有効にするようにプロキシを変更する必要があることに注意してください。
アプリのリスニングソケットに上記のオプションを設定しましたか?
また、上記のドキュメントでは、パケットをローカルに配信するには適切な IP ルーティング ルールとテーブルを追加する必要があることにも注意してください。