web-dev-qa-db-ja.com

iptablesを使用して少数のホストにsquidを渡すことによって

デフォルトのポート(3128)でリッスンするsquidプロキシセットアップがあります:eht0(192.x.x.x)。

外界への接続に使用される別のインターフェースeth1(10.x.x.x)があります。 squidguardを使用して高品質のコンテンツフィルタリングを行っています。

しかし今、私たちはネットワーク内のホストの一部がイカをバイパスすることを望んでいます。少数の人々にフルアクセスを提供します。

Iptablesを使用して何かを考えています。プロキシのポート3128でeth0にヒットする特定のホスト(プロキシが渡される)からのパケットはすべてeth1にリダイレクトされ、何にでもアクセスできる必要があります。

これは機能しますか?はいの場合、ルールを手伝ってください。

これはsquidgaurdを使用して適切に実行できることはわかっていますが、iptablesのみを使用して実行したいと考えています。

1
tollboy

透過プロキシを使用していない限り、これを実現することはできません。明示的に設定されたプロキシを使用すると、iptablesはクライアントホストとsquidプロキシ間の会話のみを表示できます。 iptablesは、アクセスしようとしているWebサイト/ IPアドレスがわからないため、トラフィック操作が不可能になります。

ただし、透過プロキシを使用すると、逆にかなり簡単に実行できます。つまり、特定の基準を満たさない限り、iptablesがすべてのwwwトラフィックをプロキシにリダイレクトするようにします。

プロキシを透過モードで使用することがオプションである場合は、以下のガイドに従うと目標を達成できますが、プロキシリダイレクトのすぐ上に例外があるようにiptablesの事前ルーティング段階を変更します。そのようです:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -s $PROXY_BYPASS_Host -j RETURN
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port $SQUID-SERVER:$SQUID_PORT

SQUID/iptablesトランスペアレントプロキシハウツー

0
paulos

HTTP「チャット」がクライアントプロキシセッションに埋め込まれているため、機能しません。

ただし、プロキシサーバーを透過的に構成し、必要に応じてリダイレクトiptablesルールを設定することもできます。

0
migabi

範囲ルール付きのiptablesで可能なSquid透過モードでのバイパス。

#NAT:
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT

#Bypass range of ip: 
iptables -t nat -A PREROUTING -i eth0 -m iprange ! --src-range 192.168.3.39-192.168.3.44 -p tcp --dport 80 -j DNAT --to 192.168.3.1:8028
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8028
0