squid プロキシサーバーの設定

squid プロキシサーバーの設定

リモート サーバー (ubuntu 12.04) に squid3 サーバーをインストールしました。これをプロキシ サーバーとして使用したいと思います。インターネット接続のあるすべてのコンピューターから使用するには、どのような構成を行う必要がありますか?

答え1

デフォルトから変更する必要のある設定は 1 つだけです。http_port 行です。私の設定どおりに、透過プロキシとしてトラフィックを squid 経由で自動的に迂回させたいようです。そのためには、行を次のようにする必要があります。

http_port 3128 transparent

私のシステムでは dansguardian も使用しているため、私の iptables ルールはあなたには機能しないかもしれませんが、ネットワークから入ってくるトラフィックを squid 経由でインターネットに送るためには、これを使用する必要があります。次のようになります。

#!/bin/sh
# squid server IP
SQUID_SERVER="10.0.0.1"
# Interface connected to Internet
INTERNET="bond0"
# Interface for 10.0.0.1
LAN_IN="bond1"
# Dansguardian port
DG_PORT="8080"
#DG_PORT="3128"

echo "Applying proxy rules for packets routing through $LAN_IN -> $SQUID_SERVER:$DG_PORT"

# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT

# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT

# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT

# port forwarding

# HTTP (example)
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j DNAT --to 10.0.0.1:80
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -i $INTERNET -j ACCEPT

# Divert traffic for external web pages through squid (dansguardian)
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$DG_PORT
iptables -A OUTPUT -p tcp -o $LAN_IN --dport 80 -j ACCEPT

/etc/network/if-up.d/proxyrules にこのスクリプトの (より充実した) バージョンがあります。少し調整するだけで問題なく実行できるはずです。

調整する必要があるかもしれないもう 1 つの Squid 設定は ACL です。これは、プロキシ サーバーへのアクセスをユーザーに許可するものです。私の設定はデフォルトで動作しますが、Squid の「アクセス拒否」エラーを回避するには、このセクションを変更する必要があるかもしれません。

関連情報