Introduction
|
|
NTT DoCoMo がサービスを提供している @FreeD に加入する。
@FreeD は PHS を利用した定額接続サービスであり、
同様のサービスでは DDI Pocket が提供してりる Air-H が有名であるが、
貯まりに貯まった DoCoMo のポイントカードがあるので、
今回はポイントカードを利用するために @FreeD を選ぶ。
@FreeD で使用できる機種は
- P-in Free 2PWL
- P-in Free 1P
- 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 が要求するのでダミーファイルを作成する。
モードをオーナー以外はリード不可に設定しないと 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 のアクセスを少しでも高速化するために
delegate と ImageMagick を利用して画像圧縮プロキシを構築する。
- 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-Type が jpeg、gif、
png の場合、
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
|
|
|