転職・就職・総合求人サイト WORKTANK

透過型Proxyの構築

  home> software        

Proxyの設定をクライアントPC全部に設定するのは面倒なので
IPマスカレードと組み合わせてポート80はsquid経由させるようにして
強制的にProxy通す(^^)

■調査に使用したマシン
 DELL Precision220
 CPU: PentiumIII/833MHz × 1
 Memory: 256Mbyte
 HDD: 40Gbyte(IDE)
 PS/2マウス
 日本語106キーボード
 ※ネットワークカードを一枚追加(合計2個)

■OS
 Turbo Linux Server 6.1(日本語版)
 OSのインストールメモはTurbo Linux Server 6.1 のインストールメモにあります。

■ネットワーク環境
 説明用の架空の環境です。
 設定は/usr/sbin/turbonetcfgで行うのが簡単です。

 ドメイン:hogehoge.com
 ホスト名:imo
 DNSサーバー:111.111.111.2
 ルータアドレス:111.111.111.1

 インターネット側インターフェース(eth0)
   IPアドレス:111.111.111.111
   ネットマスク:255.255.255.0
 LAN側インターフェース(eth1)
   IPアドレス:192.168.0.1
   ネットマスク:255.255.255.0

■Squidパッケージの削除
 TurboLinuxに含まれるパッケージ版squidは
 透過型に対応するようにMakeされていないため削除する
 # rpm -e squid

■最新版のダウンロード
 http://www.squid-cache.org/ から最新版をダウンロードする。
 最新版は「2.4.STABLE1」(2001/4/27)

■インストール(全てデフォルト)
 $ gtar zxvf squid-2.4.STABLE1-src.tar.gz
 $ cd squid-2.4.STABLE1
 $ ./configure
 # make all
 # make install

■ユーザー、グループ、ディレクトリの作成
 パッケージ版のSquidがユーザー=squid、グループ=squidで
 実行される設定となっていたので真似る。
 # /usr/sbin/groupadd -g squid
 # /usr/sbin/useradd -g squid -d /var/spool/squid -s /dev/null squid
 ログの出力先やキャッシュ用ディレクトリの場所も真似る。
 # mkdir /var/spool/squid
 # chown squid.squid /var/spool/squid
 # chmod 750 /var/spool/squid
 # mkdir /var/log/squid
 # chown squid.squid /var/log/squid
 # chmod 750 /var/log/squid

■squid.confの設定
 デフォルトでmakeするとsquidは /usr/local/squid にインストールされます。
 設定ファイルの場所は /usr/local/squid/etc/squid.conf となります。
 ・メモリキャッシュの容量を増やす。(デフォルトは8MB)
    cache_mem 32 MB
 ・ファイルキャッシュの一つのファイルの最大サイズを増やす(デフォルトは4096KB)
    maximum_object_size 20480 KB
 ・メモリキャッシュの一つのファイルの最大サイズを増やす(デフォルト8KB)
    maximum_object_size_in_memory 32 KB

 ・URLに特定の文字列が含まれる場合はキャッシュしない設定
    acl QUERY urlpath_regex cgi servlet \?
 ・キャッシュディレクトリ(キャッシュ用のディスク領域も100MBから1GBに増やす)
    cache_dir ufs /var/spool/squid 1000 16 256
    ↑
    1000の部分が1GBの指定になります。
 ・キャッシュアクセスログ
    cache_access_log /var/log/squid/access.log
 ・キャッシュログ
    cache_log /var/log/squid/cache.log
 ・キャッシュストアログ
    cache_store_log /var/log/squid/store.log
 ・アクセス許可(LAN側全て許可)
    acl lan src 192.168.0.0/255.255.255.0
    http_access allow lan (注意:deny allの行より上に書くこと)
 ・透過型にするための設定
    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on
 ・ユーザー、グループ(上で作ったユーザー、グループを指定)
    cache_effective_user squid
    cache_effective_group squid

■キャッシュディレクトリの作成
  /usr/local/squid/bin/squid -z でキャッシュディレクトリを作成

■ipchainsの設定
 ・IPマスカレードの設定をする
    ・パケットフォワーディングを有効にする。
      # echo "1" > /proc/sys/net/ipv4/ip_forward
      起動時に有効にするには
      /etc/sysconfig/networkの「FORWARD_IPV4」を「yes」にする
    ・ルータとして動作させるためのルーティング情報の設定
      /etc/sysconfig/static-routesファイルに次の2行を記述
      eth0 net 111.111.111.0  netmask 255.255.255.0
      eth1 net 192.168.0.0    netmask 255.255.255.0
      ※eth0がインターネット側、eth1がLAN側
    ・フォワーディングポリシーの設定
      sbin/ipchainsコマンドで設定する。起動時に有効になるよう
      /etc/rc.d/rc.localの最後に次の2行を追加
      ipchains -A forward -s 192.168.0.0/24 -j MASQ
      ipchains -P forward -j DENY
 ・透過型Proxyに対応するルールの追加
   sbin/ipchainsコマンドで設定する。起動時に有効になるよう
   /etc/rc.d/rc.localの最後に次の行を追加
   ipchains -A input -p tcp -d 0.0.0.0/0 www -j REDIRECT 3128

■動作確認
 /usr/local/squid/bin/RunCache& で実行
 ブラウザーで適当なWebサイトを見て、
 ログ(/var/log/squid/access.log)で動作を確認

■OS起動時にsquidが起動するように
 /etc/rc.d/rc.localの最後に次の行を追加
 /usr/local/squid/bin/RunCache

以上


---------------------------------------------------------------------
2002.05.09 ログおよびキャッシュディレクトリの作成について
      間違った記述があったので修正
---------------------------------------------------------------------

  home> software