透過型プロキシの設定

一般的なプロキシサーバの作業では、Webブラウザがプロキシサーバの特定のポートに要求を送信し、プロキシが要求に応じて必要なオブジェクトを提供します。ネットワークで操作する場合には、次のような状況が発生することがあります。

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

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

squidを透過的なプロキシとして動作させるには、メインの/etc/squid/squid.conf設定ファイル内でhttp_portタグのtransparentオプションを使用します。squidを再起動した後、httpポートをhttp_portで指定されたポートにリダイレクトするようにファイアウォールを再設定する必要があります。次のsquid設定ラインでは、これはポート3128になっています。

http_port 3128 transparent

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

ファイアウォールを介して受信するリクエストをすべて、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です。