Instlation of iij-ppp and NAT patch iij-ppp + NATパッチのインストール バナー



○ダイヤルアップサーバーを作ろう!

もしLANに2台以上のPCがぶら下がっているなら,思い切ってダイアルアップサーバーを組んでみましょう.
これを組むと,LANに繋がっているPC全てからインターネットへ接続することが可能です.

※1:root権限でインストールしましょう.
※2:調整中のためまだ怪しい箇所があるかも知れません.参考程度にどうぞ.



○NATパッチを拾ってくる

↓ここから取ってきましょう.
http://www2a.biglobe.ne.jp/~junichi/freebsd/lowtech/nat.html

FreeBSDのリリース番号を間違えないように注意して下さい.
また,ダウンロードしたときに改行コードが変わると思いますので,nkfなどで改行コードをCRLFからCRに変換して下さい.さもないと正しくパッチが当たりません.

# mv nat-xxxxxx.patch nat-xxxxxx.bak
# rm nat-xxxxxx.patch
# nkf -d nat-xxxxxx.patch.bak > nat-xxxxxx.patch
※xxxxxxは6桁の数字(作成年月日→2000年問題だ(笑))です.
 nkfはPackagesでインストールできます.

このファイルを /usr/src/usr.sbin/ にコピーしておきます.



○バックアップを取る

このパッチを入れるとRELEASE-2.2.7R(98)では,日本語化されているマニュアルが英語版に変わってしまうので,/usr/share/man/cat8/ にある ppp.8.gz を別ディレクトリにバックアップしておく. (このファイルは既にマニュアル形式に整形済み)



○パッチを当てる

/usr/src/usr.sbin/ppp/ のバックアップを取ってからパッチを当てます.
/usr/src/usr.sbin/ が無い場合は /stand/sysinstall でソースをインストールして下さい.

# cd /usr/src/usr.sbin/
# patch -p < nat-xxxxxx.patch

これでNAT対応iij-pppのソースができあがります.あとはmakeしてmake install

# cd ppp/
# make
# make install

これでNAT対応iij-pppの出来上がりです.



○設定ファイルを作る

必要なファイルは以下の通り.

ppp.conf
ppp.linkup
ppp.linkdown
ppp.secret
これらを /etc/ppp/ に作成します.
XAXON用設定ファイルをサンプルにあげておきますので,自分のプロバイダ用に書き換えてご利用下さい.
とりあえず改行コード:CR,文字コード:EUCで置いてありますが,FreeBSDに持っていったときに行最後に「^M」があれば

# mv filename filename.bak
# nkf -de filename.bak > filename

で改行コードと文字コードの変換を行って下さい.
Windowsでこういうテキストファイルをゲットすると,往々にして改行コード:CRLFになるので,圧縮ファイルで置いておきます.

設定ファイルパック (ppp-conf.tar.gz / 1.9KB)

詳細は各ファイルの中をご覧下さい.



○FreeBSD側のその他の設定

1.ゲートウェイの認可

/etc/rc.conf の中の gateway_enable を "YES" にします.さもないとFreeBSDマシンがルーターとして働いてくれません.

2.起動時にデーモンでiij-pppを実行
/usr/local/etc/rc.d/ppp.sh を作成します.
/usr/local/etc/rc.d/ は,Windowsで言えばスタートアップフォルダのような物です.
この中に実行属性が付いた *.sh ファイルが入っていると,それを実行するようになっています.

ファイル作成後,ppp.sh には実行属性を付けておきましょう.

# chmod 555 ppp.sh


○Windows側の設定

ゲートウェイとDNSの設定を行います.

まず,「コントロールパネル」→「ネットワーク」→「TCP/IP」のプロパティ→「ゲートウェイ」タブでゲートウェイの設定ができます.
ここにはNATパッチを当てたiij-pppが動いているFreeBSDマシンのIPアドレスを指定します.

次に,「DNS設定」タブでDNSの設定をしますが,DNSアドレス欄にはプロバイダから教えられたDNSのIPアドレスを記述します.
「ホスト名」にはプロバイダで使っているIDを記述し,ドメインにはプロバイダのドメイン名を記述します.

・ゲートウェイの設定
ゲートウェイの設定

・DNSの設定
DNSの設定



○便利コマンドを作ろう

ダイアルアップさせたくないときや,逆にダイアルアップさせたい場合などが往々にしてあります.
しかし,PPPをオートモードで起動していると手が出せません.
そんなときに役立つのがpppctl(8)
こいつでiij-pppのコントロールができます.

・pppauto:iij-pppをオートモードで実行
・pppquit:iij-pppデーモンを終了します.
・pppopen:ダイアルアップ開始
・pppclose:ダイアルアップ切断
・pppteleho:テレホーダイ用にtimeoutを設定
・ppplogclear:/var/log/ppp.log を綺麗さっぱり(rmで消してはダメです)
・ppplogview:/var/log/ppp.log をエディタで閲覧
で,このファイルもWindowsでゲットすると改行コードが変わるみたいなので,圧縮ファイルにて置いておきます.

便利コマンド作成スクリプト (ppp-command_cgi.txt)

これを適当なディレクトリに ppp-command.cgi というファイル名でコピーし,ファイル中の $passwd$dialsection を編集して下さい.
$passwdppp.section で指定したパスワードを指定,$dialsection-auto モードで待機させるときの ppp.conf 内のセクション名です.

# perl ppp-command.cgi

とすれば,デフォルトでは /usr/local/bin/ に便利コマンド群が作成されます.

※このスクリプトは perl5.00404 で動作確認を行っています.perl4 で動作するかどうかわかりません.

また,crontab(1)でテレホーダイが終了する0800時に自動的に切断するようにしてみましょう.
/etc/crontab をエディタで開いて,以下の行を追加して下さい.


50      7       *       *       *       root    /usr/sbin/pppctl -p password 3000 set timeout 90
10      23      *       *       *       root    /usr/sbin/pppctl -p password 3000 set timeout 27000
55      7       *       *       *       root    /usr/sbin/pppctl -p password 3000 \; close
#5      23      *       *       *       root    /usr/sbin/pppctl -p password 3000 \; dial
※分セクションと時セクションに注意

1行目:0750時からはtimeoutを90秒(1分30秒)に設定
2行目:2310時からはtimeoutを27000秒(7.5時間)に設定
3行目:0755時に回線切断
4行目:2305時にダイアルアップ開始(現在コメントアウト)



○設定終了.しかし・・・
ここの情報はまだアヤフヤです.現在情報収集中(このことを記述していたサイトのアドレス忘れちゃったの(;_;)).

これで設定は終了,と言いたいところですが,このままでは不意にダイアルアップする場合があるようです.
理由としては,Windowsが名前解決のためにDNSを使う,ということです.
通常,NetBIOSでは名前解決ができない場合はそのまま放って置くはずが,なぜかDNSを引きに行くのです(バグ?).
/var/log/ppp.log を見てみると,たしかにポート番号53でDNS参照しています.

ということで,ここで2つの解決方法があります.

1.ローカルなDNSサーバー(BIND)を建てる
2.Windowsのレジストリをいじる

1.を選択すると,構築がちょっと面倒ですが,マシンごとにhostsファイルの用意とレジストリの書き換えを行わずにすみます.
2.を選択すると,初めのマシンが少ないうちは楽でしょうが,マシンが増えてくるとレジストリの書き換えとhostsファイルの用意に大露わです.(笑)
ここでは目先の楽さには目をつぶってローカルDNSサーバーを構築することにします.

ちなみにWindowsのレジストリをいじる場合は,\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\EnableDns を 0 にします.
これを施した後にネットワークのプロパティでDNSの設定を見てみると,DNSが未使用になっていますが,上位ネットワークの辞書引きは行えるので大丈夫です.
ただし,ネットワークのプロパティを変更した場合,この文字列の値が必ず 1 になってしまうので,その都度書き換えなければなりません.
DNSサーバーを建てた方が遙かに楽なのは一目瞭然ですね.
それにどのみち避けることのできない道でしょうから・・・.
それではbindの設定に行きましょうか.

bindの設定へGo!


←戻る Made with Original Machine "MIRAGE" Go to ASUS Web Page
Made by HyperEdit for Windows Go to HyperEdit Web Page