一般的なプロキシサーバの作業では、Webブラウザがプロキシサーバの特定のポートに要求を送信し、プロキシが要求に応じて必要なオブジェクトを提供します。ネットワークで操作する場合には、次のような状況が発生することがあります。
セキュリティ上の理由から、すべてのクライアントがインターネットでのナビゲーションにはプロキシを使用することを推奨される場合。
すべてのクライアントが、認識するかどうかに関係なくプロキシを使用する必要がある場合。
ネットワーク上でプロキシが移動しても、既存のクライアントは古い設定を保持する必要がある場合。
いずれの場合も、透過型プロキシを使用できます。原則はきわめて簡単で、プロキシはWebブラウザのリクエストを捕捉して応答するため、Webブラウザは要求したページを出所を認識せずに受信します。透過型プロキシと呼ばれるのは、このプロセス全体が透過的に実行されるためです。
squidを透過的なプロキシとして動作させるには、メインの/etc/squid/squid.conf設定ファイル内でhttp_portタグのtransparentオプションを使用します。squidを再起動した後、httpポートをhttp_portで指定されたポートにリダイレクトするようにファイアウォールを再設定する必要があります。次のsquid設定ラインでは、これはポート3128になっています。
http_port 3128 transparent
ファイアウォールを介して受信するリクエストをすべて、Squidポートへのポート転送ルールに従ってリダイレクトします。項 「Configuring the Firewall with YaST」 (第15章 Masquerading and Firewalls, ↑Security Guide (セキュリティガイド))で説明したように、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番目のオプションです。
例29.1 ファイアウォールの設定:オプション15
# 15.) # Which accesses to services should be redirected to a local port on # the firewall machine? # # This option can be used to force all internal users to surf via # your squid proxy, or transparently redirect incoming webtraffic to # a secure webserver. # # Format: # list of <source network>[,<destination network>,<protocol>[,dport[:lport]] # Where protocol is either tcp or udp. dport is the original # destination port and lport the port on the local machine to # redirect the traffic to # # An exclamation mark in front of source or destination network # means everything EXCEPT the specified network # # Example: "10.0.0.0/8,0/0,tcp,80,3128 0/0,172.20.1.1,tcp,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"
ファイアウォールとそれを使用した新規設定を開始するには、/etc/sysconfig/SuSEfirewall2ファイル内のエントリを変更します。エントリSTART_FWを"yes"に設定する必要があります。
29.3項 「Squidの起動」のように、Squidを起動します。すべてが正常に機能していることを確認するには、/var/log/squid/access.logのSquidログを確認します。 すべてのポートが正常に設定されていることを確認するには、ネットワーク外部の任意のコンピュータから、マシンのポートスキャンを実行します。Webサービス(ポート80)のみがオープンしている必要があります。nmapコマンドを使用してポートを検索する場合の構文は、nmap -O IP_addressです。