Squid 2.6 インストール(目次)


Table of Contents

環境

  • OS
    • CentOS 5.4 (kernel 2.6.18-164.6.1.el5)
  • パッケージ
    • squid-2.6.STABLE21-3.el5

squidのインストール

  • squidのインストール
    # yum install squid

squidの設定

squid.confの編集

  • 設定ファイル「squid.conf」を編集します。
    # vi /etc/squid/squid.conf
    
    
    ## クライアントから要求を受け付けるポート
    http_port 8080
    
    ## キャッシュディレクトリの設定 
    ##  - ufs:記憶システムの種類。ufs以外は再コンパイルが必要。
    ##  - /var/spool/squid:ディレクトリ名
    ##  - 100: キャッシュに利用するスペース
    ##  - 16 : サブディレクトリ数
    ##  - 256: サブディレクトリ配下のディレクトリの数
    cache_dir ufs /var/spool/squid 100 16 256
    
    ## キャッシュに利用するメモリ(squidはこれ以外にもメモリを利用する)
    cache_mem 128 MB
    
    ## aclの定義
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl microsoft dstdomain .microsoft.com .microsoft.co.jp  ## 追加(microsoftのドメインを定義)
    acl lan src 192.168.11.0/255.255.255.0                   ## 追加(LANの定義)
    acl to_localhost dst 127.0.0.0/8
    acl SSL_ports port 443
    acl Safe_ports port 80          # http
    acl Safe_ports port 21          # ftp
    acl Safe_ports port 443         # https
    acl Safe_ports port 70          # gopher
    acl Safe_ports port 210         # wais
    acl Safe_ports port 1025-65535  # unregistered ports
    acl Safe_ports port 280         # http-mgmt
    acl Safe_ports port 488         # gss-http
    acl Safe_ports port 591         # filemaker
    acl Safe_ports port 777         # multiling http
    acl CONNECT method CONNECT
    
    ## アクセス権の設定(定義済のaclに対して行う)
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports           # Deny requests to unknown ports
    http_access deny CONNECT !SSL_ports    # Deny CONNECT to other than SSL ports
    http_access allow localhost            
    http_access allow microsoft            ## 追加(microsoftに対するアクセスを無条件で許可する)
    http_access allow lan                  ## 追加 (LANからのアクセスは無条件で許可する)
    http_access deny all
    
    ## HTTPリクエスト中にクライアント情報(IPアドレスなど)を含めない
    forwarded_for off
    
    ## HTTPリクエストにプロキシ特有の情報を含めないようにする
    header_access Referer deny all
    header_access X-Forwarded-For deny all
    header_access Via deny all
    header_access Cache-Control deny all
    
    ## ログをapache形式にする
    emulate_httpd_log on
    
    #エラーメッセージなどに表示するホスト名。squidサーバがDNSに未登録の場合は必須。
    visible_hostname serv200.oss-d.net
  • 設定ファイルの構文チェックを行います。コマンドを実行して何も表示されなければ問題ありません。
    # squid -k parse

自動起動の設定

  • chkconfigコマンドで自動起動をONにします
    # chkconfig squid on

  • chkconfigコマンドで自動起動の確認をします。 LUNレベル3,4,5がonになっていれば問題ありません。
    # chkconfig --list squid
    squid         0:off   1:off   2:on    3:on    4:on    5:on    6:off
  • squidを起動します。
    # /etc/init.d/squid start
    init_cache_dir /var/spool/squid... squid を起動中: .       [  OK  ]

  • psコマンドで起動の確認を行います。
    # ps ax
    
      PID TTY      STAT   TIME COMMAND
    26447 ?        Ss     0:00 squid -D
    26450 ?        S      0:00 (squid) -D
    26451 ?        Ss     0:00 (unlinkd)

動作確認

  • ブラウザでプロキシの設定をしてWEBサイトにアクセスして問題なければ完了です。

ユーザ認証

LAN端末に対してユーザ認証を設定します。(LAN以外はproxyを利用できない)
認証はBASIC認証とLDAP認証を紹介します。

BASIC認証

squid.confの編集

  • ユーザ認証にBASIC認証を利用する場合「squid.conf」を以下のように編集します。
    # vi /etc/squid/squid.conf
    
    
    ## 認証関連の設定(基本的にコメント解除すればよい)
    auth_param basic program  /usr/lib/squid/ncsa_auth /etc/squid/.htpasswd  # 追加
    auth_param basic children 5                          
    auth_param basic realm Squid proxy-caching web server
    auth_param basic credentialsttl 2 hours              
    
    ## aclの定義
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl microsoft dstdomain .microsoft.com .microsoft.co.jp
    acl lan src 192.168.11.0/255.255.255.0                 
    acl to_localhost dst 127.0.0.0/8
    acl SSL_ports port 443
    acl Safe_ports port 80          
    acl Safe_ports port 21          
              :
              : (省略) 
              :
    acl Safe_ports port 777         
    acl CONNECT method CONNECT
    acl password proxy_auth REQUIRED                ## 追加
    
    
    ## アクセス権の設定(定義済のaclに対して行う)
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports           
    http_access deny CONNECT !SSL_ports    
    http_access allow localhost            
    http_access allow microsoft            
    http_access allow lan password                  ## 修正
    http_access deny all

ユーザ登録

  • htpasswdコマンドを利用するためhttpdをインストールします
    # yum install httpd
  • htpasswdコマンドでhogeユーザを追加します。-c は.htpasswdファイルを新規作成する場合のみ指定する事。
    # htpasswd -c /etc/squid/.htpasswd hoge
    New password: 
    Re-type new password: 
    Adding password for user hoge

設定変更の反映

  • 設定ファイルを再読み込みさせ、変更を反映します。
    # /etc/init.d/squid reload
    以下のコマンドでも、変更を反映する事ができます。
    # squid -k reconfigure

LDAP認証

はじめに

  • LDAPのツリーは下記構成になっているものとします。
    また、ユーザのパスワードについてはSSHA形式で保存されているものとします。

    ldap_データベース構造.JPG

squid.confの編集

  • LDAPで認証する場合「squid.conf」を以下のように修正します。

    ("auth_param basic program"の1行以外はBASIC認証と全く同じです。)

    # vi /etc/squid/squid.conf
    
    ## 認証関連の設定
    auth_param basic program /usr/lib/squid/squid_ldap_auth
     -b "ou=Users,dc=oss-d,dc=net"
     -f "(&(uid=%s)(objectClass=posixAccount))"
     -h 192.168.11.101
                                           ##上記4行を追加(ファイルでは改行せず1行で記載する)
    
    auth_param basic children 5
    auth_param basic realm Squid proxy-caching web server
    auth_param basic credentialsttl 2 hours
    
    
    ## aclの定義
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl microsoft dstdomain .microsoft.com .microsoft.co.jp
    acl lan src 192.168.11.0/255.255.255.0                 
    acl to_localhost dst 127.0.0.0/8
    acl SSL_ports port 443
    acl Safe_ports port 80          
    acl Safe_ports port 21          
              :
              : (省略) 
              :
    acl Safe_ports port 777         
    acl CONNECT method CONNECT
    acl password proxy_auth REQUIRED                ## 追加
    
    
    ## アクセス権の設定(定義済のaclに対して行う)
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports           
    http_access deny CONNECT !SSL_ports    
    http_access allow localhost            
    http_access allow microsoft            
    http_access allow lan password                  ## 修正
    http_access deny all

設定変更の反映

  • 設定ファイルを再読み込みさせ、変更を反映します。
    # /etc/init.d/squid reload
    以下のコマンドでも、変更を反映する事ができます。
    # squid -k reconfigure

FAQ

squid起動時にアボートする

  • Q.
    squidを起動しようとすると下記エラーが表示されます。
    # /etc/init.d/squid start
    squid を起動中: /etc/init.d/squid: line 42: 26581 アボートしました
    $SQUID $SQUID_OPTS >> /var/log/squid/squid.out 2>&1
                                                              [失敗]
  • A.
    visible_hostnameが設定されていない可能性があります。 squidサーバのホスト名がDNSに登録されていない場合、上記エラーとなり起動に失敗するため、 squid.confでvisible_hostnameにホスト名を設定して下さい。
    # vi /etc/squid/squid.conf
    visible_hostname serv200.oss-d.net

proxy_authを設定すると構文エラーになる

  • Q.
    proxy_authを設定すると下記の構文エラーが表示されます。
    # squid -k parse
    2010/02/28 11:31:24| Invalid Proxy Auth ACL 'acl password proxy_auth REQUIRED' 
    because no authentication schemes are fully configured.
    FATAL: Bungled squid.conf line 569: acl password proxy_auth REQUIRED
    Squid Cache (Version 2.6.STABLE21): Terminated abnormally.
  • A.
    以下の可能性があります。squid.confを見直して下さい。
    • auth_param basic programの記載がない
    • auth_param basic program行をacl行より後に記載している
このエントリーをはてなブックマークに追加
Last-modified: 2010-06-05 (土) 12:30:45   最終更新のRSS