私のボックスにいくつかの子供保護機能(httpフィルタリング)を追加しています。
ボックスは家族全員で使用され(メンバーごとに1つのアカウント)、Squidは同じコンピュータで実行されます。
2 つの Squid インスタンスがあります。 1つはキャッシュ専用で、もう1つはsquidGuardを使用することです。
--uid-owner
2つのイカインスタンスから選択するためにNATルールを使用します。
iptables -t nat -A OUTPUT -m owner --uid-owner $owner -p tcp -m tcp --dport 80 -j REDIRECT --to-ports $port
(上記のようにip6tables)
現在、私はIPv4とIPv6(かなり新しいLinuxカーネルを使用)にNATを使用していますが、Squidは「傍受」がIPv4のみをサポートしていると述べています。 IPv6も欲しい。
TPROXYを使ってみました(例:これら--uid-owner
ルール)しかし、POSTROUTING(PREROUTINGの代わりに)に設定したいiptableが必要なので失敗しました。
これらのルールは次のとおりです。
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129
--uid-owner
このマングルテーブルに適切なルールを追加するにはどうすればよいですか?つまり、ポート3128または3129に転送することをどのように決定しますか?
編集する:私のNATルールが正しく機能していると返信しないでください。わかりました。 SquidのNATはIPv4のみをサポートしているため、NATを排除する必要があります。もう一度申し上げますが、NATを使用しないでください。 TPROXY、mangle、または何と呼ぶかは、mangle
上記の規則に従います。
ベストアンサー1
--uid-owner
では必要ありません。例のようにPREROUTING
で必要です。OUTPUT