一般的なプロキシサーバの作業では、Webブラウザがプロキシサーバの特定のポートに要求を送信し、プロキシが要求に応じて必要なオブジェクトを提供します。ネットワークで操作する場合には、次のような状況が発生することがあります。
セキュリティ上の理由から、すべてのクライアントがインターネットでのナビゲーションにはプロキシを使用することを推奨される場合。
すべてのクライアントが、認識するかどうかに関係なくプロキシを使用する必要がある場合。
ネットワーク上でプロキシが移動しても、既存のクライアントは古い設定を保持する必要がある場合。
いずれの場合も、透過型プロキシを使用できます。原則はきわめて簡単で、プロキシはWebブラウザのリクエストを捕捉して応答するため、Webブラウザは要求したページを出所を認識せずに受信します。透過型プロキシと呼ばれるのは、このプロセス全体が透過的に実行されるためです。
/etc/squid/squid.confファイル内で透過型プロキシの起動と実行に使用できるオプションは、次のとおりです。
httpd_accel_host virtual
httpd_accel_port 80
実HTTPサーバが動作するポート番号
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
ファイアウォールを介して受信するリクエストをすべて、Squidポートへのポート転送ルールに従ってリダイレクトします。そのためには、43.4.1項 「YaSTを使ったファイアウォールの設定」で説明しているように、同梱のツールであるSuSEfirewall2を使用します。このツールの設定ファイルは/etc/sysconfig/SuSEfirewall2にあります。この設定ファイルは、適切なエントリで構成されています。透過型プロキシを設定するには、次に示すようにいくつかのファイアウォールオプションを設定する必要があります。
インターネットを指すデバイス:FW_DEV_EXT="eth1"
インターネットを指すデバイス:FW_DEV_INT="eth0"
インターネットなど、信頼されない(外部)ネットワークからアクセスが許可される、ファイアウォール上のポートとサービスを定義します(/etc/servicesを参照)。この例では、外部に対してWebサービスのみが提供されます。
FW_SERVICES_EXT_TCP="www"
安全な(内部)ネットワークからのアクセスが許可される、ファイアウォール上のポートとサービス(TCPサービスとUDPサービスの両方)を定義します(/etc/servicesを参照)。
FW_SERVICES_INT_TCP="domain www 3128" FW_SERVICES_INT_UDP="domain"
この例では、WebサービスとSquid (デフォルトポートは3128)へのアクセスが許可されます。domain「サービスはDNS (ドメインネームサービス)を意味します。」このサービスは一般に使用されます。一般に公開しない場合は、単に上記のエントリから削除して次のオプションをnoに設定します。
FW_SERVICE_DNS="yes"
最も重要なのは15番目のオプションです。
例 41.1. ファイアウォールの設定:オプション15
# 15.) # Which accesses to services should be redirected to a local port # on the firewall machine? # # This can be used to force all internal users to surf via your # Squid proxy, or transparently redirect incoming Web traffic to # a secure Web server. # # Choice: leave empty or use the following explained syntax of # redirecting rules, separated with spaces. # A redirecting rule consists of 1) source IP/net, # 2) destination IP/net, 3) original destination port and # 4) local port to redirect the traffic to, separated by a colon, # e.g. "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080"
上記のコメントは、次の構文を示しています。最初に、プロキシファイアウォールにアクセスする内部ネットワークのIPアドレスとネットマスクを入力します。次に、これらのクライアントからのリクエストの送信先となるIPアドレスとネットマスクを入力します。Webブラウザの場合は、ネットワーク0/0を指定します。これは、「あらゆる場所」を意味するワイルドカードです。」その後、これらのリクエストの送信先となるオリジナルポートを入力し、最後に全リクエストのリダイレクト先となるポートを入力します。SquidはHTTP以外のプロトコルをサポートしているため、要求は他のポートからFTP (ポート21)、HTTPSまたはSSL (ポート443)などのプロキシにリダイレクトされます。この例では、Webサービス(ポート80)がプロキシポート(ポート3128)にリダイレクトされます。他にも追加するネットワークやサービスがある場合は、対応するエントリに空白1個で区切って指定する必要があります。
FW_REDIRECT="192.168.0.0/16,0/0,tcp,80,3128 192.168.0.0/16,0/0,tcp,21,3128" FW_REDIRECT="192.168.0.0/16,0/0,udp,80,3128 192.168.0.0/16,0/0,udp,21,3128"
ファイアウォールとそれを使用した新規設定を開始するには、/etc/sysconfig/SuSEfirewall2ファイル内のエントリを変更します。エントリSTART_FWを"yes"に設定する必要があります。
41.3項 「Squidの起動」のように、Squidを起動します。正常に動作しているかどうかを確認するには、/var/log/squid/access.logにあるSquidログを参照してください。すべてのポートが正しく設定されているかどうかを確認するには、ネットワーク外にあるコンピュータから、該当するコンピュータのポートスキャンを行います。Webサービス(ポート80)のみがオープンしている必要があります。nmapコマンドを使用してポートを検索する場合の構文は、nmap -O IP_addressです。