[ 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" pccard を有効にする

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 # バックアップ
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 # レストア

/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,