質問
ネットワークを維持する場合、多くの場合、透過プロキシを実行するのに便利です。透過プロキシとは、発信接続を「ハイジャック」してローカルサービスを介して実行するプロキシを意味します。具体的には、ポート80で転送されるすべてのtcp / ip接続がsquidによってプロキシされるように、squidを設定してLinuxファイアウォールを実行します。
これは、IPv4を使用してiptables 'nat'テーブルを使用して実現されます。
ただし、IPv6のiptablesには「nat」テーブルがないため、同じ実装を使用できません。 IPv6接続のトラフィックを透過的にプロキシするために使用できる技術は何ですか?
解決
これを実行する実行可能な方法は、iptablesのTPROXYルールを使用することです。ドキュメントは次の場所にあります。
- http://wiki.squid-cache.org/Features/Tproxy4#IPv6_Support
- http://www.mjmwired.net/kernel/Documentation/networking /tproxy.txt
これはSquidをサポートする必要があります(> =バージョン3.2)。 -enable-linux-netfilter
および iptables -t mangle -j TPROXY
ルールを使用します。
他のヒント
iptablesにはQUEUEターゲットがあり、これを使用してユーザースペースにパケットを配信できます。よくわかりませんが、おそらくそこに何かを実装できるでしょう。
それまでは、リダイレクトを行うためにカーネルに何かを追加するときに突き刺すことができました。
できません。 squid-cache.org から引用:
NATは、IPv6には存在しません。によって 設計。
透明性/傍受を考える 実際に得られる機能です 内部でNATルートをひそかにねじる 自分で出たり戻ったりします。結構です NATのないプロトコル 透明性を行うことはできません その方法で傍受します。
実装は次のとおりです。
別のsortいハック:
- すべてのトラフィックをiptablesでマークします(IPv6にはCONNMARKターゲットがあるようです)
- すべてのマークされたトラフィックをチューニングデバイスにルーティングします
- tunデバイスでリッスンしているデーモンでユーザースペースNATを実行
- ...
IPv6スタックでNATの独自の実装を記述します。