29.5 透過型プロキシの設定

プロキシサーバを使用する場合の通常の操作は次のとおりです。まず、Webブラウザからプロキシサーバの特定のポートにリクエストが送信され、プロキシは要求されたオブジェクトがキャッシュ内にあるかどうかに関係なく提供します。ネットワークで操作する場合には、次のような状況が発生することがあります。

いずれの場合も、透過型プロキシを使用できます。原則はきわめて簡単で、プロキシは Web ブラウザのリクエストを捕捉して応答するため、Web ブラウザは要求したページを出所を認識せずに受信します。透過型プロキシと呼ばれるのは、このプロセス全体が透過的に実行されるためです。

29.5.1 /etc/squid/squid.conf内の設定オプション

/etc/squid/squid.confファイル内で透過型プロキシの起動と実行に使用できるオプションは、次のとおりです。

  • httpd_accel_host virtual

  • httpd_accel_port 80

    実HTTPサーバが動作するポート番号

  • httpd_accel_with_proxy on

  • httpd_accel_uses_host_header on

29.5.2 SuSEfirewall2を使用したファイアウォール設定

ファイアウォールを介して受信するリクエストをすべて、Squidポートへのポート転送ルールに従ってリダイレクトします。そのためには、4.1.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番目のオプションです。

例 29.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_TCP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"
FW_REDIRECT_UDP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"

ファイアウォールとそれを使用した新規設定を開始するには、/etc/sysconfig/SuSEfirewall2ファイル内のエントリを変更します。エントリSTART_FW"yes"に設定する必要があります。

29.3項 「Squidの起動」の説明に従ってSquidを起動します。すべてが正常に動作しているかどうかをチェックするには、/var/log/squid/access.log内でSquidのログを調べます。 すべてのポートが正しく設定されていることを確認するには、ネットワーク外の任意のコンピュータからマシン上のポート検索を実行します。Webサービス(ポート80)のみがオープンしている必要があります。nmapコマンドを使用してポートを検索する場合の構文は、nmap-O IP_addressです。