[ Make World | FreeBSDトップ | サーバ構築 ]


@FreeD の設定

daemon


Introduction

NTT DoCoMo がサービスを提供している @FreeDに加入する。
@FreeD は PHS を利用した定額接続サービスであり、 同様のサービスでは DDI Pocket が提供してりる Air-H が有名であるが、 貯まりに貯まった DoCoMo のポイントカードがあるので、 今回はポイントカードを利用するために @FreeD を選ぶ。 @FreeD で使用できる機種は
  1. P-in Free 2PWL
  2. P-in Free 1P
  3. P-in Free 1S
の三種類から選択できるが、今回は PHS として以外に、 無線LANカードとしても使用可能な P-in Free 2PWL を選択する。
このカードは NEWCARD では PHS としては使用できるが、 無線LAN カードとしては認識できなかったので OLDCARD にて運用する。
カーネル再構築

OLDCARD 環境で起動するためにカーネルを再構築する。
OLDCARD のカーネルを構築するために、 /usr/src/sys/i386/conf/OLDCARD を参考にする。
基本的には NEWCARD のコンフィグレーションファイルを include し、 NEWCARD 関連の指定を no指定で無効にして OLDCARD 関連の指定を追加する。 以下にOLDCARD環境を使用するための カーネルコンフィグレーション概要を示す。

include コンフィグレーションファイル名 NEWCARDで運用しているコンフィグレーションファイル名を指定する
nodevice cbb カードバス brigde を無効にする
nodevice pccard 16-bit バスの PC Card を無効にする
nodevice cardbus 32-bit バスの CardBus を無効にする
device cad 1 OLDCARD の pccard を有効にする
device pcic PCMCIA brigde を有効にする

コンフィグレーションファイルを作成したらカーネルを再構築しインストールする。 カーネルの再構築は通常の方法と同様。
pccardd

OLDCARD では pccard サービスをpccardd(8)が提供する。 pccardd(8)は、PCカードスロットの挿抜を監視しており、 PCカードが挿抜された時に PCカードを制御するために処理を実行する。 pccardd(8)の動作設定は/etc/pccard.confで定義する。 以下に P-in Free 2PWL の設定を示す。

card "NTT DoCoMo" "P-in Free 2WL"

config auto "wi" ?

inseert /etc/pccard_eather $device start

remove /etc/pccard_eather $device stop
card "NTT DoCoMo" "P-in Free 2P"

config auto "sio" ?

pccardd が起動時に自動実行されるように、/etc/rc.confに以下の設定を追加する。

pccardd_enable "YES"
pppd

PHS でアクセスポイントに接続するために ppp の設定を行う。
最近は ppp(iij-ppp) を使用した設定が一般的な様だが、 昔からpppd(8)を使用しているので今回もpppdを使用する。
pppdの動作を @FreeD に対応させるために/etc/ppp/optionsに以下の設定を追加する。

/dev/cuaa4 P-in Free 2PWL を挿入したときに使用するデバイス
115200 通信速度
crtscts フロー制御にハードウェアフロー制御を使用する
noipdefault IPCPネゴシエーション時に相手側からIPアドレスを取得する
lock 排他アクセス用に UUCP 形式のロックファイルを使用する
defaultroute IPCPネゴシエーション完了時に相手側をデフォルトルートに設定する
modem モデム制御線を使用する
noauth @FreeDサービスで使用するプロバイダ(mopera)は
ID/Password を要求しないので指定する
name 任意の名前 ID/Password が不要なので任意の名前を設定する
connect /etc/ppp/dial 接続に使用するダイアルスクリプトを指定する
ダイアルスクリプト

pppdの設定ができたら、 connectで指定した接続に使用するスクリプト/etc/ppp/dialを作成する。
ダイアルスクリプトは chat (8) を使用したモデムとの通信を定義する。

#!/bin/sh
debug='' # debug 時に "-v" を指定する
phone='0570800166\#6401' # 接続先電話番号

/usr/bin/chat $debug \

TIMEOUT 180 \ # タイムアウト指定

ABORT "NO CARRIER" \ # NO CARRIER なら終了

ABORT BUSY \ # BUSY TONE なら終了

"" \ # NULL 文字を待って(即時)開始

\\dATZ OK-ATZ-OK \ # モデム初期化

ATE1Q0 OL \ # リザルトコード指定

ATDT$phone CONNECT # ダイアル

忘れずに実行権限を付与する。
pap-secrets

pppdが使用する pap 用のパスワードを記述したファイルを用意する。
mopera は ID/Password を使用せず発信番号による認証を行うので本来不要であるが、 pppdが要求するのでダミーファイルを作成する。

mopera * mopera

モードをオーナー以外はリード不可に設定しないと pppdが 実行時に warning を出力するので注意する。
resolv.conf

pppd は接続時に/etc/resolv.conf の書き換えをしないので、 /etc/ppp/ip-upスクリプトを用意し、 接続開始時に/etc/resolv.confを明示的に作成する。

#!/bin/sh
test -f /etc/resolv.conf && mv /etc/resolv.conf /etc/ppp # /etc/resolv.conf をバックアップ
cat > /etc/resolv.conf <<EOF # /etc/resolv.conf を作成
nameserver 211.14.74.49 # プライマリネームサーバ
nameserver 211.14.74.50 # セカンダリネームサーバ
EOF
/bin/chmod 644 /etc/resolv.conf # アクセス権付与

/usr/local/bin/chgproxy proxy # プロキシ接続先変更

同様に接続終了時には/etc/ppp/ip-downスクリプトで、 /etc/resolv.confを元に戻す処理を指定する。

#!/bin/sh
test -f /etc/ppp/resolv.conf && mv /etc/ppp/resolv.conf /etc # /etc/resolv.conf をレストア

/usr/local/bin/chgproxy noproxy # プロキシ接続先変更
接続

以上の設定が完了したら root で pppdを実行する。
接続出来ない場合はダイアルスクリプトの debug 指定を有効にして確認する。
Delegate+ImageMagick

低速な @FreeD のアクセスを少しでも高速化するために delegateImageMagick を利用して画像圧縮プロキシを構築する。
  • delegate、ImageMagick のインストール
  • portsからインストールを行う。

  • delegate の設定
  • delegate の設定を行いキャッシュ、画像圧縮フィルタを有効にする。
    • キャッシュディレクトリの作成
    • /var/spool/delegate/cache を作成し、 オーナ、アクセス権を適切に設定する

      # mkdir -p /var/spool/delegate/cache
      # chown -R nobody:nobody /var/spool/delegate
      # chmod -R 777 /var/spool/delegate/cache

    • フィルタディレクトリの作成
    • /var/spool/delegate/cfiを作成し、 オーナ、アクセス権を適切に設定する

      # mkdir -p /var/spool/delegate/cfi
      # chmod -R 755 /var/spool/delegate/cfi

    • 画像圧縮フィルタの作成
    • フィルタスクリプトディレクトリに圧縮フィルタを作成する。
      圧縮フィルタでは Content-Typejpeggifpngの場合、 ImageMagick の convert(1) を使用して画像を圧縮する。

      #!cfi
      Content-Type: image/jpeg
      Output/Content-Type: image/jpeg
      Body-Filter: convert -quality 10 - -
      --
      Content-Type: image/gif
      Output/Content-Type: image/jpeg
      Body-Filter: convert -quality 10 - jpeg:-
      --
      Content-Type: image/png
      Output/Content-Type: image/jpeg
      Body-Filter: convert -quality 10 - jpeg:-
      convert(1) の -qualityオプションで 圧縮率を指定する。

    • 起動スクリプトの編集
    • portsからインストールすると /usr/local/etc/rc.d/delegated.sh-distが作成されるので、 キャッシュディレクトリ、画像圧縮フィルタの設定を追加した /usr/local/etc/rc.d/delegated.sh を作成する。

      #!/bin/sh

      umask 027
      if [ -x /usr/local/sbin/delegated ]; then

      echo -n ' delegated'

      /usr/local/sbin/delegated \


      -P8080 \


      -Txt \


      ADMIN=管理者のメイルアドレス \


      DGROOT=/var/spool/delegate \


      CHARCODE=JIS \


      CACHEDIR=/var/spool/delegate/cache \


      EXPIRE=7d \


      LOGDIR=/var/log \


      LIBPATH=/var/spool/delegate/cfi \


      FTOCL=image.cfi \


      HTTPCONF=acc-encoding: -thrugzip \


      HTTPCONF=gen-encoding:gzip \


      PERMIT="*:*:*.mopera.ne.jp"


      > /dev/null 2>&1
      fi

  • クライアントの設定
  • ppp 接続時にはfirefox (1)のプロキシ情報設定ファイルを 自動で切り替えてプロキシサーバを利用するスクリプトを作成する。
    firefox(1) のプロキシ設定は ${HOME}/.phoenix/default/任意の文字列/prefs.js というファイルに格納されているので、
    • ${HOME}/.phoenix/default/任意の文字列/prefs.js.proxy
    • ${HOME}/.phoenix/default/任意の文字列/prefs.js.noproxy
    というファイルを作成し、ppp 接続時/切断時に
    ${HOME}/.phoenix/default/任意の文字列/prefs.js
    にシンボリックリンクを作成する。

    #!/bin/sh
    prefs=ホームディレクトリ/.phoenix/default/任意の文字/prefs.js

    test "$1" != "proxy" -a "$1" != "noproxy" -a ! -f $prefs.$1 && exit 2

    if [ -L $prefs ]
    then

    rm $prefs

    ln -s $prefs.$1 $prefs

    chown ユーザID:グループID $prefs
    fi


Last Update: Jan. 3 2005 Copyright © Mitzyuki IMAIZUMI 2002,2004,2005 All Rights Reserved,