デフォルトのポート(3128)でリッスンするsquidプロキシセットアップがあります:eht0(192.x.x.x)。
外界への接続に使用される別のインターフェースeth1(10.x.x.x)があります。 squidguardを使用して高品質のコンテンツフィルタリングを行っています。
しかし今、私たちはネットワーク内のホストの一部がイカをバイパスすることを望んでいます。少数の人々にフルアクセスを提供します。
Iptablesを使用して何かを考えています。プロキシのポート3128でeth0にヒットする特定のホスト(プロキシが渡される)からのパケットはすべてeth1にリダイレクトされ、何にでもアクセスできる必要があります。
これは機能しますか?はいの場合、ルールを手伝ってください。
これはsquidgaurdを使用して適切に実行できることはわかっていますが、iptablesのみを使用して実行したいと考えています。
透過プロキシを使用していない限り、これを実現することはできません。明示的に設定されたプロキシを使用すると、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
HTTP「チャット」がクライアントプロキシセッションに埋め込まれているため、機能しません。
ただし、プロキシサーバーを透過的に構成し、必要に応じてリダイレクトiptablesルールを設定することもできます。
範囲ルール付きの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