私はこの質問に対する答えを探し回っていましたが、私が見つけたもののほとんどは、特に私がやりたいことではなかったようです(ほとんどの場合、同じホスト上のトラフィックをそのホストで実行されているイカにリダイレクトします)。
可能であれば、iptables(または同様の、opensuseの場合はSuSEFirewall2)を使用して、システムプロキシ設定(Ubuntuの/ etc/environmentのHTTP_PROXY_Host)を模倣する方法を知りたいです。
その理由は、すべてがその設定を使用しているわけではないからです。多くのサービスには、独自のプロキシ設定が必要です。ネットワーク層で「すべてをキャッチ」したいと思っています。したがって、phpcurlがリモートWebサービスを呼び出す場合、そこでプロキシを定義する必要はありません。 apt/zypper/yumなどについても同じです。さまざまなサービスすべてについて、同じサーバーで25回異なるプロキシ設定を構成する必要はありません。
私はこれのさまざまなバリエーションを試しました(この場合、トラフィックをSquidプロキシに送信します):
iptables -t nat -A OUTPUT -p tcp -o lo --dport 80 -j DNAT --to 192.168.0.34:3128
しかし、それは機能しません。このホストからのすべてのアウトバウンドインターネット接続をブロックするファイアウォールルールを設定し、squidボックスでtcpdumpを起動して、パケットがそこに到達するかどうかを確認しました(到達しない)。ラップトップでSquidプロキシを使用するようにブラウザを設定できますが、Squidを正しく設定していなかった場合は、少なくともtcpdumpを介してsquidに送信される最初のトラフィックが表示されると思いました。
誰かがこれを処理する方法についてより良いアイデアを持っていて、上記の要件を満たしている場合、私は提案を受け入れます。
ほとんどのネットワークプロトコルは透過プロキシを機能として設計されていないため、iptablesだけとsquidのようなhttpプロキシではこれを行うことはできません。プロキシを使用するように明示的に構成する必要があります。最も近い方法は、 Redsocks のようなsocksプロキシを使用することです。