1997年9月13日土曜日

mini Watch Dog Timer with Linux

「遠くのサーバも柴犬に見張らせれば大丈夫(^^)」


Ver 0.2 Copyright(C) 1997, Hisaaki Shibata


柴田 尚明@福岡

shibata@opost1.netspace.or.jp


何らかの要因、例えば電源の瞬断などでハングアップしてしまったリモートにあるLinuxboxに対して、自動でハードウエアリセットしたり電源を落としたりして復旧させる仕組みを考えています。

公開してご意見を伺い、出来ればもうちょっと改良したいと思っておりますm(_|_)m。


1997年5月2日金曜日

Happy Linux Home-LAN with IP masquerade and kerneld


「IP masqueradeとkerneldによるon-demand PPPで幸せな家庭内LANへのメモ」


Ver0.91 Copyright(C) 1996,1997 Hisaaki Shibata


柴田 尚明@福岡

shibata@opost1.netspace.or.jp


Linuxに特有のIP masqueradeとkerneldによるon-demand PPPが

ある程度動きましたので設定の際に行った項目をメモにまとめます。

我が家におけるIP masqueradeの最大のメリットは

「端末型ダイヤルアップの契約で、ネットワーク型ダイヤルアップとほぼ同等の使い勝手が楽しめる」

ことにあります。皆さんも楽しんでください(^o^)/



ご意見は、fj.os.linuxか
メールでお願いします。

メールの方が圧倒的にレスポンスがいいはずです(^^)


尚、本ドキュメントは全文丸ごとであればどこへでも転載可能/リンク可能です(^^)





目次



0 .来歴・トピックス

1 .経緯


2 .関連情報

3 .用意したhardware

4 .用意したsoftware

5 .動作確認をしたもの

6 .いくつかの問題点

7 .そのうちやること

8 .謝辞

9 .付録A(作成/修正ファイル一覧)

10.付録B(家庭内ハードウエア仕様一覧)






0.来歴・トピックス


[次へ][目次へ]


1997/5/1 Ver. 0.91


  • linux-2.0.30での機能を追加

1996/11/4 Ver. 0.9
1996/9/21 Ver. 0.8

  • 各Softwareのバージョンアップ対応
  • 2 .関連情報に荒木さんリンク追加
  • pppdのタイムアウト記述修正(^^;

1996/9/1 Ver. 0.7

  • 各Softwareのバージョンアップ対応
  • MN128ハングアップ対策(/etc/ppp/ip-down)記述追加
  • 作成/修正ファイル一覧追加

1996/8/26 Ver. 0.6


  • 各Softwareのバージョンアップ対応
  • 全項目見直し
  • 家庭のISDN化\(^o^)/
  • BIND、sambaも動いた。次はINNとDHCP(^^)

1996/6/17 Ver. 0.5

  • 目次追加
  • 関連URL追加(星野さん、梶原さん、JF)
  • 最新バージョンでの確認
  • ISDN化計画発動
  • その他、細部修正


1996/5/31 Ver. 0.4


  • HTML化
  • /etc/hostsエントリ追加による不必要なダイアルアップ解決追加


1996/5/29 Ver. 0.3


  • /etc/rc.d/rc.inet1でのdefaultroute設定について記述追加
  • /etc/hostsエントリ追加による不必要なダイアルアップ解決
  • ipfwadm-2.1.tar.gzでの確認済み


1996/5/18 Ver. 0.2


  • NNTP,pop 動作確認追加
  • ftp動作方法追加 #Thanks to すずき@JAIST様
  • 一部ソフトウエアのNew Versionでの確認
  • その他、絵の追加や細部の語句・記述変更


1996/5/15 Ver. 0.1 新規作成



1.経緯

[次へ][前へ][目次へ]



自作AT互換機の常で、自己増殖機能により我が家のPCが3台(FullTower, DeskTop, SubNote)になったことをきっかけに、家庭内LANを始めることにしました。


#Ver 0.6時点では新規導入したMiniTowerを子供用ゲーム機にして、お古となったDeskTopをLinux専用サーバとし、計4台に増殖しました(^^;

しかし、ISPのLAN型dial-upの契約料は高いし、routerを買うお金もない。
さらにはISDNでもない、の三重苦(^^;によりあきらめておりました。


#Ver 0.6時点で我が家もISDN+テレホーダイ化しました(^o^)。OCNまでの短い命かもしれませんが....


ちょうどその頃Linux-MLでIP masqueradeが話題になり、情報を集めてみると
「まさに求めていたもの」で、早速取り掛かることにしました。

#Linux-MLでは、その後も技術的な情報がやり取りされてます。



2.関連情報

[次へ][前へ][目次へ]



IP masqueradeについてはhttp://www.kt.rim.or.jp/~akira/にやまだあきらさんのわかりやすい解説が有ります(^^)


また、最近拡充されたものとしては、
梶原 健司さんのhttp://gandalf.doshisha.ac.jp/~kaji/ip_masq/とか、
星野 明さんのhttp://www.st.rim.or.jp/~akhoshi/ipmasq.html、そして荒木さんのhttp://www.mizuno.riec.tohoku.ac.jp/~yasu/linux/ipmasq/が有りますのでこちらもぜひご覧になってくださいm(_|_)m


その他にもNET-2/3-HOWTOに解説が有ります。こじまみつひろさんの和訳もGoodです。


on-demand dial-upに関しては、dialdを使う方法もあるとのことで、そのうち気が向いたら挑戦してみます。(かなり気は向いてるけど)



#と、言いながらkerneldに満足してしまい、dialdまでいたってませんm(_|_)m。

拡充計画は

BIND+samba(済)->INN->DHCP

へ移って行きました(^^;

さらに、pppd-2.3.xでは、それ自体でon-demand dialupの機能が追加になっているようです。これももう少しβ版が安定してきたら手を出すかもしれません。


linux-2.0.0にするときに気を付ける物としてはこじまみつひろさんが訳され、吉山さんがHTML化したものがhttp://jf.gee.kyoto-u.ac.jp/JF/v2.0/Changes-2.0.htmlに有りますのでじっくり読むのが良いと思います。



また、私が使い出したMN128に関するpppのchatスクリプトについてはhttp://www.st.rim.or.jp/~kanada/ISDN/connection-scripts.htmlに金田泰さんの実例がございます。




3.用意したhardware

[次へ][前へ][目次へ]



  • 複数台のPC+NIC
  • HUB
  • UTP Cable
  • modem(アナログ回線時)
  • TA(ISDN時)

  • remote電源制御装置


ISP-->Internet
|
.------------. .------------. NTT
|192.168.0.1 | |192.168.0.5 | |
| NIC+----------+ +-------+NIC 16550+-->TA-->DSU
| | | | | | (MN128)
|
Silk | | | | Silver |
`------------'FullTower | | `------------'DeskTop
(Win95/3.1/Linux) | | (Linux)
| |
.------------. .--+--+--. .------------.
|192.168.0.2 | | | |192.168.0.3 |
| NIC+-------+ +------+NIC |
| | | HUB | | |
| Silvia | `--------' | Echos |
`------------'MiniTower `------------'Note
(Win95) (Linux/Win95)



家庭内LANを使う場合、プライベートaddress空間を使うことがお勧めです。私は、192.168.0.0/24を使いました。


#さすがにclass C x 1で足りない家庭内LANはないかと(^^;


  • 外付けTA付DeskTop機(Silver)が192.168.0.5
  • カミサン用FullTower御仕事機(Silk)が192.168.0.1
  • 子供用MiniTowerゲーム機(Silvia)が192.168.0.2
  • OS-BSでLinuxとWin95をboot selectし、AL-mail+WinVNで読み書きしているSubNote機(Echos)が192.168.0.3


各マシンの概略仕様は上記のリンクをつついてください。

家庭内のLAN接続は取り回しが容易なUTP(10B-T)ケーブルにてHUBで接続しています。
#ちなみに、今日現在ではDHCPサーバが、Silver上で動き出しており、クライアントがLinuxの場合でもWin95の場合でも動的にIPアドレスを割り振ってくれるようになりましたので、上記のIPアドレスのまま動いているのはSilverだけとなりました(^^)。
この内容はそのうちアップデートしてこの文書にも反映させます。


今後は、このon-demand機能を利用して、真夜中のテレホーダイタイムにNetNewsを自動取り込みすることを考えていますが、まだINNの設定ができてません(^^;

いろいろと教えてもらっていることもありますので、がんばりたいと思っています。
しかし、別の事にも手を出しておりまして、shutdown時の電源OFFや、外部からのダイアルアップで、自動的にPC本体の電源をいれること事などをやっております。
これにつきましては、ある程度実用になりそうなので梨もーと電源制御のところをご覧ください。



4.用意したsoftware

[次へ][前へ][目次へ]


4.1 Slackware 3.2


network関連のpackage(N)は入れましょう。


#Slackaware 3.1に3.2を上書きinstall(って言うのかな?)を行った場合は、その後に不都合が生じる場合があります。
#具体的にはkernelの再構築が出来ないようです。
#そういう時は/usr/binの中を削除してから再installしましょう(^^;



4.2 linux-2.0.30.tar.gz




Linux-2.0.30からは、kernelのコンフィグレーションにもよりますが、今までIPmasqueradeされたネットワーク上から外部のネットワークに対して不可能であったpingなどのICMPを使ったやり取りなども実行可能になっているようです。
しかも、各種パッチが統合されており、kernelの再構築とipfwadmの設定だけでIPmasqueradeが利用できるようになっています。ぜひ試してみてください。

その他、2.0.xに向けて必要なものも集めました。


IP masqueradeを使えるようにする'make config'内容はやまださんのページや、NET-2/3-HOWTO、ipfwadmのarchive内のdocumentに書かれてます。


#このメモをupdateしたときにも簡単に触れるつもりでしたが、
#和訳されたChangesができたのでそちらをご覧ください。

��ところで、2.0.0リリースおめでとう!
#でもAIC-7850では新しいaic7xxxドライバは不安定(-_-)。
PIONEERのCD-ROMがboot時にエラーをだしまくるのでサブマシンのCD-ROMドライブ(PLEXTER)と入れ替えて対策しました(^^;



私の標準手順は以下です。('# 'はpromptのつもりです。)



# cd /usr/src/linux
# make mrproper
# make menuconfig
#ここでIP masqueradeが使えるようにする。どの項目をYにするかは2 .関連情報をご覧ください。

# make dep && make clean && make zImage && make modules && make modules_install
# cd /usr/src/linux/arch/i386/boot
# /sbin/rdev -R zImage 1
# cp zImage /zImage.x.yy.z


このあと、/etc/lilo.confを修正して、boot時に今まで動いていたkernelと新しいkernelを選択できるようにします。

例えば私の場合は、


# cat /etc/lilo.conf

#fileの中身やコマンドの出力を示す場合は、以下で示します


# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
boot = /dev/sdb1

#rootパーティションにinstallしてます。
#boot selecterはOS-BSがお気に入りです。



#compact # faster, but won't work on all systems.
delay = 50
vga = normal # force sane state
ramdisk = 0 # paranoia setting
# End LILO global section
# Linux bootable partition config begins
image = /zImage.x.yy.z
root = /dev/sdb1
label = linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends
# Linux bootable partition config begins
image = /zImage.2.0.29
root = /dev/sdb1
label = linux.old>
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends

そして、


# /sbin/lilo


でliloを入れて、kernelの再構築はおわりです。


尚、家庭内LANで使うときには/etc/rc.d/rc.inet1でdefaultroute(gateway host)でNIC側を選択している場合は、設定行をコメントアウトしておきましょう。

そうしないと、せっかくpppでのlinkが確立しても外に出て行けなくなってしまいます。

#複数のセグメントを持つ大規模家庭内LANユーザの方(^^;は
#話が変わってきますが。




4.3 modules-2.0.0.tar.gz


kerneldを動かすためのもので、中のDocumentが役に立ちます。

本家はhttp://www.pi.se/blox/modules/index.htmlです。

構築は
# make all && make install

でおしまいでした。

#どうも、モジュールを新しくしたタイミングだと思うのですが
#sendmail-8.7.5が/etc/rc.d/rc.Mのなかでハングするように
#なりました(T_T)ので元に戻しました。



上記が終わったらarchive内のrc.hintsを元に/etc/rc.d/rc.Mにkerneldとdepmod、modprobeの起動scriptを追加します。

#簡単なので省略m(_|_)m


次に以下のppp設定fileを作ります。


# cat /etc/ppp/ip-up

#!/bin/sh
#ファイルの先頭行にこれを書いて、なおかつ実行可能フラグを立てないと
��うまく行きません。これのせいでずっとハマッてました(^^;

echo UP `date` >> /tmp/PPP-LOG
#ダイヤルアップ開始時間を記録します

sendmail -q
#送信用のqueueに溜まっているmailをflushするため


kill `cat /tmp/request-route`
#kerneldのrouting programのprocessを削除する

#/sbin/insmod ip_masq_ftp
後述するIPmasquerade下でftpを行うためのおまじないでしたが、以下の4行に置き換えてます。だから今はコメントあうとしてます。

/sbin/depmod -a
/sbin/modprobe ip_masq_ftp.o
/sbin/modprobe ip_masq_raudio.o
/sbin/modprobe ip_masq_irc.o


次にarchive内のrequest-route.shを元に以下のfileを作ります。

#どうせDNSを引きに行くのでちょっと内容をサボってます


# cat /sbin/request-route

#! /bin/sh
LOCK=/tmp/request-route
UP=/tmp/request-up
PATH=/usr/sbin:$PATH #for ppp-2.2*
export PATH
pppd
echo `date` > $UP
#家庭内LANからのon-demandダイヤルアップであることの足跡を残してます。外部からのダイヤルインではこのファイルができないはずで、それによって制御を変えるようにしてます


sleep 60 &
#この値はいろいろとチューニングの余地があるようです

sleepid=$!
echo $sleepid > $LOCK
wait $sleepid
rm -f $LOCK



4.4 ppp-2.2.0f.tar.gz


iij-pppでもよかったのですが、慣れの関係でこちらにしました(^^;


#上記にも示しましたが、ppp-2.3.xのβテストが始まってます。
#pppd単体でon-demand dialupが出来るようになっているらしいです(^^)

私の標準手順は

# cd /usr/local/src/ppp-2.2.0f
# ./configure
# make kernel
# make


#make前にppp用のlock fileのPATHを修正してました

��mgettyを使う場合です。今はmgettyの方を修正しています

��mgettyを使うのは外から自宅にdial-upするからです(^^)

# make install


このあと、以下の設定fileを作ります。

#どうせ一つのISPにしかアクセスしないでしょうから

��/etc/ppp/optionsで設定値を書いちゃいます。


# cat /etc/ppp/options


debug
lock
modem crtscts /dev/ttyS3 38400

#私のモデムはSilkのCOM4です
��最近買ったTA(MN128)はSilverのCOM1につながってます
��COM1の時は/dev/ttyS0ですね(^^)
��さらに現時点では、remote電源制御の絡みがあり、TAはCOM2(/dev/ttyS1)につながっています。COM1は電源OFF制御装置(^^;がつながりました。

��また/etc/rc.d/rc.serialでspd_vhi設定をして、DTE速度を115200bpsにしてます。
#setserialの最新バージョンは1.12のようです。
#また、SMC系のマルチI/O制御chipはDTE速度を115.2k以上に設定できるらしく、
#Win95のドライバはfjにポストされてました。

��ドライバが置いてあるftpサイトはhttp://www.yk.rim.or.jp/~gigo/over115K/です。
大きな期待がかかるのがこのドライバの作者の友人がsetserialに
#このコードを統合するつもりだとの事です(^^)。

noipdefault
netmask 255.255.255.0
defaultroute
idle-disconnect 140
#pppのトラフィックが140秒間ないとpppdが落ちる設定です。
#このドキュメントのVer0.7まで間違った記述をしており、
#参照された方にはご迷惑をおかけいたしましたm(_|_)m


domain joy.netspace.or.jp
#上の行は、不要かもしれません

name silk
#上の行は、不要かもしれません。

connnect /etc/ppp/ppp-on-script





実際に電話をかけるのは以下の部分の設定です。


(1)Rockwell系のv.34 modemの場合

# cat /etc/ppp/ppp-on-script


#!/bin/sh

# 各行末のバックスラッシュ(\)に気を付けてね
# 最終行だけバックスラッシュによる改行のエスケープ不要

exec /usr/sbin/chat -v TIMEOUT 2 ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' AT \
'OK-+++\c-OK' ATH0 \
TIMEOUT 30 \
OK ATDT電話番号 \
CONNECT '' \
ogin:--ogin: \\dユーザID \
assword: パスワード


PAPやCHAPのISPへは/etc/ppp/pap-secretsや/etc/ppp/chap-secretsを記述すれば、上記のCONNECTの行まででOKのばずです。


��その時は、最後の行末の\をはずしてね

��また、PAPの時は/etc/ppp/optionsに+uaなどの記述が必要です。


��尚、+uaの記述は推奨されているものではなくpppd-2.3.x以降では

��サポートされない事が有りそうなので、/etc/ppp/*-secretsを使用した方が

��よさそうです。



(21)MN128(非同期38.4k)の場合

http://www.st.rim.or.jp/~kanada/ISDN/connection-scripts.htmlの金田泰さんの実例をみてね。


尚、金田さんが書いているMN128のppp終了後のハングアップに関しては/etc/ppp/ip-downの後半のchatを起動する部分を下記のようにする事で、回避できています。

また、電源制御関連や、ダイヤルアップしていないときには不要なmoduleを削除する事も追加しました。


# cat /etc/ppp/ip-down


#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
if [ -f /tmp/request-up ]; then #家庭内LANからのダイアルアップならば
/bin/rm -f /tmp/request-up
echo DOWN `date` >> /tmp/PPP-LOG #コネクションを切った時間をlogに取る。
else #外部からのダイヤルインによるpppの起動のときは。
sync
sync
sync #転ばぬ先のsync三回(^^;
/sbin/shutdown -r now #おもむろにshutdownを動かす。
sleep 60
exit 1 #正常にshutdownが動いていれば、ここには来ないはず。
fi
#if [ `w|wc -l` -lt 3 ]; then #外部からのダイヤルイン判定の残骸
# sync
# sync
# sync
# /sbin/shutdown -r now
#fi
/sbin/rmmod ip_masq_ftp.o #不要なモジュールの取り外し
/sbin/rmmod ip_masq_raudio.o
/sbin/rmmod ip_masq_irc.o
# #MN128ハングアップ対策
exec /usr/sbin/chat -v \
TIMEOUT 3 \
ABORT '\nLINE OFF\r' \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' ATZ




また、DNS関連の記述は以下のようにしています。


# cat /etc/resolv.conf
domain joy.netspace.or.jp
nameserver 192.168.0.5
#そうです。我が家の中にもDNSサーバが立ちあがったんです(^^;
��これについては婆印度と産婆(^^;を見てください


nameserver aaa.bbb.ccc.ddd

#ISPが推奨しているDNS serverのIP addressですね


ここまでで、rebootすれば「そのLinux機上で」

$ telnet sotono.host.or.jp


とか

$ mnews -Dsotono.NNTP.server.or.jp

とかで勝手にダイヤルアップを始めるはずです(^^)

V#ISDN+テレホーダイとかだと快適ですねぇ。
#テレホーダイなら繋ぎっぱなしにする?(^^;
#他の人にも回線あげなきゃ(^^)


ダイヤルを始めているときのプロセスの状況は以下のようです。


# ps -x
PID TTY STAT TIME COMMAND
1 ? S 0:16 init[5]
[中略]
111 ? S 0:00 sh /sbin/request-route aaa.bbb.ccc.ddd
114 S3 S 0:00 pppd
115 ? S 0:00 sleep 40
116 S3 S 0:00 /usr/sbin/chat -v TIMEOUT 3 ABORT \nNO AN...
[以下省略]



上記のaaa.bbb.ccc.dddはDNS ServerのIP addressになることが多いでしょう。



4.5 ipfwadm-2.3.tar.gz


4.5.1 基本的な設定


LInux-1.3.xのあるバージョン以降からipfwではなく、これ(ipfwadm)を使うようです。

本家本元はhttp://www.indyramp.com/masq/です。

ipfwadmは

# make install


で出来ます。


私が探した限りではipfwadmの設定に関する記述はアーカイブ内のmanファイルにしかありませんでした。

#NET-2/3-HOWTOにあるように、ipfwとは記法が異なります。

私の設定は、以下です。

# tail -5 /etc/rc.d/rc.inet1

/sbin/ipfwadm -F -b -o -a masquerade -P all -S 192.168.0.0/24 -D 0.0.0.0/0

# End of rc.inet1


ここまでで、Dial-up routerと化したLinux機が出来上がりです(^^)


��RT100iはNATとやらに対応しているようですが
#複数のプライベートIP addressを一つのグローバルIP adressに
#変換する事はできないようですから、こいつはGoodです。
#しかしYAMAHAもRT100iのNATをエンハンスさせてIPmasqueradeのような機能を
#考えているようです(^^)


家庭内LAN上の全PCはdefaultrouteを192.168.0.5に向けます。

また、家庭内LAN上の全PCの/etc/hostsファイル上には全LAN内hostのエントリを追加しましょう。(DNSがあがっている現在は不要である事を確認していますが)

#さもなくば、LAN内でのtelnet/ftpなどでダイヤルアップを始めてしまいます(^^;
また、Win95の場合はNetBEUIをunloadしておかないとWin95起動時にパケットをはいてダイヤルアップを始める事があるようです

そのLAN上のhostでWinVNなどを動かすと、dial-up routerであるsilverがダイヤルを始めるはずです(^^)


4.5.2 ftpのための設定


すでに示していますが、ftpを行う場合は以下の設定の追加が必要でした。


/etc/ppp/ip-upの中に

/sbin/insmod ip_masq_ftp


を追加しました。

#これって、本来のkerneldの使い方じゃないような気がします。

��on-demandでloadできる正しい使い方をご指導ください。

この設定で、悩んでいたftpがちゃんと動作するようになりました(^^)Ver0.6

さらにip-upをdepmodを使うやり方に変更しました(^^)Ver0.9


もう一つftpをきちんと動かすためにはパッチがいる事が判明いたしました(^^;。


小さなftpやhttpだと問題にならないのですが、大きなファイルをanonymous FTPサイトから持ってきていると、きちんと終了しない事があります。この場合は
http://www.hwy401.com/achau/ipmasq/ip_masq_ftpalive.patch.gzやftp.linux.or.jpなどからip_masq_ftpalive.patch.gzを持ってきてカーネルソースにパッチを当ててください。

パッチの当てかたは普通のカーネルパッチと同じだとおもいます。


Linux-2.0.30では、不要です。




5.動作確認をしたもの

[次へ][前へ][目次へ]


家庭内LAN上のhostからIP masqueradeを利用して動作したものを示します


  • AL-mailによるWin95からのメールの送受信(SMTP,POP3)
  • WinVNによるWin95からのNewsの購読、投稿(NNTP)
  • telnet
  • WWW(HTTP)
  • netscapeなどのbrowserからの(httpでくるんだ)匿名ftp
  • ncftpを使った匿名ftp(^0^)

  • 駄目かと思ったけどすんなり動いたWin95上でのMS-NetMeeting(ユーザロケーションサービスはだめみたい(--;)
  • linux-2.0.30環境でWin95からIPmasquerade外部へのping



6.いくつかの問題点

[次へ][前へ][目次へ]


6.1 ftpできない(最終的に解決)



-> ip_masq_ftpのmoduleをinsmodでロードすることで解決(^^)@Ver0.2

-> と、思ったら、又できなくなってしまった(T_T)@Ver0.4


なぜだろう???

0.6

-> /etc/ppp/ip-upをきちんと作り直す(chmod u+xと#!/bin/shをいれる)事で解決(^^;


6.2 不要なdial-upが始まる事がある(解決->復活?)



Note上のmailer(AL-Mail)を動かしてLAN上の192.168.0.1に対して接続しようとすると、なぜかDNSを引き(?)行っているようでdial-upを始めてしまう。
#IP addressでSMTP server/POP3 serverとしてsilverを指定しても

その後の調査で、mailerやpopperには関係なくDNSを引きに行っているような状態が出ています(T_T)
#どうもWin95が何らかのタイミングでDNSを引くようです(^^;

->IP masqueradeを起動しているマシン(silk)の/etc/hostsにNote PCの


FQDNもどきのエントリを追加して何者からのアクセスかをsilkに

教えてやることで、DNSを引きにいかなくなった(^^)

0.5

->LAN内でのtelnet/ftpでもダイヤルアップを行うことが発覚し、

LAN内のすべてのhostを/etc/hostsのエントリに追加することで対策した。


0.6

->BINDを家庭内LANで運用を始めたところ、silver起動時の1回のみダイヤルアップが発生している。引き続き調査中。



6.3 回線が切れないISPがある(解決)

せっかくpppがidle時はコネクションを切るように設定しているのに、あるISPは、約30秒毎に謎のパケット(--;を送ってくるので切れてくれない。>

#port53でした。問い合わせたらRIPでした。(--;

idle-timeoutを5秒ぐらいにすると切れてくれるけど、これでは使い物にならない(T_T)

別のISPではそのようなことがなく、時間通りに切れてくれる。

受けるパケットは無視するようにできないかなぁ。

->dialdではできるそうです。

ISPにRIPにしないように改善をお願いしているところです。

->対策終了し、無事切れるようになりました(^o^)


7. そのうちやること

[次へ][前へ][目次へ]



7.1 必ずやる


(1)要所にリンクを貼り付けて、必要なもの(ファイルや文書)を取れるようにする。

->これをもって、一応m(_|_)mやった。


(2)問題点をFIXして、どこかのサイトにこの文書を置く。

->期間限定ですが、置きました。


#引き続き、引き取っていただけるところをお待ちしております。

��ご意見や情報を頂きたいのですが、よろしくお願いいたします。


7.2 気が向いたらやる



(1)絵やなんかを入れてわかりやすくする。->簡単なのを入れた(^^;


(2)dialdを使った方法を追加する。 -> ftpが解決してから->pppd-2.3.xに移行するためなしm(_|_)m


(3)Linux-MLでの技術的な裏付け情報を付録で追加

-> 私が理解してから(^^; ->いまだに把握できていない(^^;


7.3 お金があったらやる


(2)古いNote PCを入手し、PCMCIAのISDN cardとEther cardを


入れて、UPS付き(電池)低消費電力のdial-up routerを作っちゃう。


��私が持っておりますYAMAHAのPCMCIA ISDN cardのドライバ情報を


��お待ちしていますm(_|_)m

デバイスドライバを開発するための情報はここに有ります。
とりあえず入手して読みはじめたのですが素人に手が出るかどうか分かりません。どなたか共同してやりませんか?

御興味のある方はメールでお願いします。m(_|_)m

このドライバ開発に関しては、小さなMLが立ち上がり、細々ながらドライバ開発が始まっております。引き続きメンバーを求めておりますので、このアドレスまで参加希望者はメールをください。
ドライバがかけなくてもPC30iを持っていればβテストやドキュメント整備が出来るなどの特典;-)があります。





8.謝辞

[次へ][前へ][目次へ]


私がLinuxを使えるようにしてくださったすべての方に感謝いたします。


特に、この文書作成にあたっては、Linux-MLの方々と、JFによるドキュメント、および関連のドキュメントがなければできないものでした。ありがとうございます。m(_|_)m


以上


[入り口へ]
[Akkoame Home Page]




9.付録A(作成/修正ファイル一覧)

[次へ][前へ][目次へ]


この所、ディスク障害だとか、人為的チョンボとかで再installをする機会が多くて(^^;、
どのファイルをバックアップ取っとけば良いかわからなくなるんで、この際(自分のために)まとめとくものです。



(1)install時

(2)ppp+kerneld+IP_masquerade設定時

(3)BIND設定時


(4)Apatch設定時

(5)INN設定時

(6)samba設定時


[入り口へ]
[Akkoame Home Page]



10.付録B(家庭内ハードウエア仕様一覧)

[前へ][目次へ]






[玄関へ]
[総本店へ]

1997年2月23日日曜日

Remote Power control with Linux


「電話で電源いれましょ。shutdownで電源おとしましょ。」


Ver0.2 Copyright(C) 1996, Hisaaki Shibata


柴田 尚明@福岡

shibata@opost1.netspace.or.jp


Linuxでのshutdown時に自動でPCの電源を落とし、また、外部からの電話着信で自動的にPCの電源が入るものを作りはじめました。

ある程度動いてますので、公開してご意見を伺い、もうちょっと改良したいと思っておりますm(_|_)m。

ご意見は、fj.os.linuxなどの関連NewsGroupか
メールでお願いします。

メールの方が圧倒的にレスポンスがいいはずです(^^)


尚、本ドキュメントは全文丸ごとであればどこへでも転載可能/リンク可能です(^^)





目次



0 .来歴・トピックス

1 .経緯

2 .関連情報


3 .用意したhardware

4 .用意したsoftware

5 .動作確認をしたもの

6 .いくつかの問題点

7 .そのうちやること

8 .謝辞





0.来歴・トピックス



[次へ][目次へ]


1996/11/6 Ver. 0.2


  • パーツリスト追加
  • メインボードのキット情報追加
  • INSの実験結果追加(T_T)

1996/11/4 Ver. 0.1

  • 新規作成
  • アナログ回線での着信時電源ONおよび、空きCOMポートを利用したshutdown時の電源OFF確認


1.経緯

[次へ][前へ][目次へ]



ATX機が自動で電源を落とせる話を聞いたり、某社のPCではモデムに着信があると電源を入れることができるという話を聞くたびに、良いなぁ~と思っておりました。


また、会社から家に仕事のファイルを持ち帰って作業をして(^^;、そのまま忘れて会社に来たりしたことがあり、カミサンにPCの電源を入れてもらってダイヤルインしたりすることもありました(^^;;;;;;が、そうそう毎度は頼めません(^^;。

うちのサーバ機はCRTがついていないので、カミサンにはshutdown時の電源OFFのタイミングがわかりにくいという話もあります。

そういう時は普通ATX機を買うのかもしれませんが、そんなお金はないです(T_T)し、ATXのマザーと電源の相性問題(?)もまだまだあると聞いてますので、買うにしてもしばらく待ちたいところです。

で、現在使っているAT機で電源の制御をソフトウエアから行えるように無い知恵を絞ってみました。
予算は5千円以内で済ますことを目標にしました。

#ま、目標は、あくまで目標(^^;



2.関連情報

[次へ][前へ][目次へ]


ATXの電源制御仕様ってどこかに落ちてないでしょうか?

www.teleport.com/~atx/からたどっても、ろくなものは見つけられませんでした(T_T)



3.用意したhardware

[次へ][前へ][目次へ]




  • LinuxがinstallされたPC/AT互換機(シリアルポートが二つ必要)
  • modem(アナログ回線時)
  • TA(ISDN時)
  • 今回自作のリモート電源制御装置(^o^)


リモート電源制御の回路図に関しては下記をご覧ください。




    回路図と解説


  • メインボードとパワー(電源)ボードです。

  • 基本的には単純なセットリセットのフリップフロップがあるだけで、そのフリップフロップの状態でリレーを動かすシンプルなものです。

    パワーボード上のマニュアルスイッチはON(上)-OFF(中立)-ON(下)の3個所で止まるタイプのレバースイッチで、ON(上)で強制セットとなり、電源ONとなります。


    逆にON(下)では強制リセットとなり、電源OFFです。

    OFF(中立)の位置では、外部からの情報でON/OFFするautoモードです。

    #なお、このメインボードの回路が二つ分入ったものが4cm x 5cm程度のコンパクトな基板となり市販のキットとして1800円で販売されてます。
    大阪日本橋の「ワンダーキット」と言う会社のものです。
    問い合わせ先は〒556大阪市浪速区日本橋4-4-1
    TEL(06)644-4447 FAX(06)644-4448です。
    私は福岡の「カホパーツセンター」で購入しました。注意する点として、このキットにはVcc(電源電圧)が5Vのものと12Vのものがあることです。私は回路図でお分かりのように5V版を使用しました。

    私は、上記のメインボードと、パワーボード(3端子レギュレータとパイロットLED付き)とACアダプタを分解して(^^;取り出したトランス込みで、3.5"FDが10枚入るアクリルケースに詰め込んでます。そのうち写真もお見せしますね(^^;


  • セット(電源ON)ボードです。

  • モデムとPCのCOMポート(私の場合はCOM2)の間に挟まる形のものです。
    したがって図上の右側のコネクタと左側のコネクタはオス/メスになっています。
    また、すべての信号線はそのままストレートで接続しています。


    電源ONはモデムへの着信時にモデム側から出力されるCI信号のレベルの変化を見ることに因っています。外部への影響を最小限にすることと、レベルコンバータの役目をかねて、フォトカプラを使っています。
    フォトカプラに直列につないでいる抵抗値は適当です(^^;が、一応電圧レベルは規格内に入っています。

    この基板の大きさは4cm x 3cm程度です。



  • リセット(電源OFF)ボードです。

  • PCの使用していないCOMポート(私の場合はCOM1)につなげます。

    電源OFFはCOMポートからデータを出力する際に変化するDTR信号のレベルの変化を見ることに因っています。フォトカプラ周りの回路はセットボードと同じです
    この基板の大きさも4cm x 3cm程度です。

  • 各ボードの結線

  • 適当に、そこらに転がっていた撚り対線を使っています(^^;




で、パーツリストをまとめると。以下のようになります。
#線材とかパイロットLED+LED用抵抗などは省略してますm(_|_)m





































MainNameCountsMemo
1HD4140131CMOS-SSI
22SC9451Tr
31S15883Diode
41μF1Condenser
510μF1Condenser
64.7kΩ4Resister
747kΩ3Resister
8100kΩ1Resister
9G6C-11171Relay
10Universal board15cm x 4cm
PowerNameCountsMemo
1AC/DC Conv.1DC5V output
2Switch1on-off-on toggle
3Universal board13cm x 2cm
SetNameCountsMemo
19pin RS-232-C Conn. female1board mount type
29pin RS-232-C Conn. male1board mount type
3TLP521-11Photo-coupler
4470Ω1Resister
5Universal board14cm x 3cm
ResetNameCountsMemo
19pin RS-232-C Conn. female1board mount type
2TLP521-11Photo-coupler
3470Ω1Resister
4Universal board14cm x 3cm




4.用意したsoftware

[次へ][前へ][目次へ]


以下のppp設定fileを作ります。(on-demand pppの設定で既に書いてますので、関連する記述のみ示します。)


4.1 /etc/ppp/ip-up



# cat /etc/ppp/ip-up

#!/bin/sh
#ファイルの先頭行にこれを書いて、なおかつ実行可能フラグを立てないと
��うまく行きません。これのせいでずっとハマッてました(^^;

echo UP `date` >> /tmp/PPP-LOG
#ダイヤルアップ開始時間を記録します





4.2 /etc/ppp/ip-down


ip-downはshutdown時には動かないのですね。PPP-LOGを見て判明しました。
shutdown時にpppdが動いている場合は、LOGファイルに落ちた時間をかき出すようにした方が、より正確になりますね。
# cat /etc/ppp/ip-down

#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
if [ -f /tmp/request-up ]; then #家庭内LANからのダイアルアップならば
/bin/rm -f /tmp/request-up
echo DOWN `date` >> /tmp/PPP-LOG #コネクションを切った時間をlogに取る。
else #外部からのダイヤルインによるpppの起動のときは。
sync
sync
sync #転ばぬ先のsync三回(^^;
/sbin/shutdown -r now #おもむろにshutdownを動かす。
sleep 60
exit 1 #正常にshutdownが動いていれば、ここには来ないはず。
fi
#if [ `w|wc -l` -lt 3 ]; then #外部からのダイヤルイン判定の残骸
# sync
# sync
# sync
# /sbin/shutdown -r now
#fi



4.3 /sbin/request-route



# cat /sbin/request-route

#! /bin/sh
LOCK=/tmp/request-route
UP=/tmp/request-up
PATH=/usr/sbin:$PATH #for ppp-2.2*
export PATH
pppd
echo `date` > $UP
#家庭内LANからのon-demandダイヤルアップであることの足跡を残してます。外部からのダイヤルインではこのファイルができないはずで、それによって制御を変えるようにしてます


sleep 60 &
#この値はいろいろとチューニングの余地があるようです

sleepid=$!
echo $sleepid > $LOCK
wait $sleepid
rm -f $LOCK



4.4 /etc/rc.d/rc.6


slackware3.1でshutdown時に動くrc.6の終わりの方に/dev/cua0(COM1)へのデータ出力をechoにて行います。

# tail -15 /etc/rc.d/rc.6

# See if this is a powerfail situation.
if [ -f /etc/power_is_failing ]; then
echo "Turning off UPS, bye."
/sbin/powerd -q
exit 1
fi

sleep 15 ;echo off >/dev/cua0

echo "$message"
[ ! -f /etc/fastboot ] && echo "On the next boot fsck will be FORCED."
$command -f




5.動作確認をしたもの

[次へ][前へ][目次へ]


動作したものを示します


  • shutdownによる電源OFF
  • 外部からのmodem着信による電源ON



6.いくつかの問題点

[次へ][前へ][目次へ]



何と言ってもISDNでの自宅へのダイヤルアップIP接続です。
TAがオフフックしていないようなのでいかんともし難いです。情報をお待ちしています。



7. そのうちやること

[次へ][前へ][目次へ]


7.1 必ずやる


(1)ISDNでの着信電源ON確認

これ、やってみたんですが、うまく行ってません。YAMAHAのPC30iをグレ電につないで自宅のMN128にダイヤルしたのですが、まず、電話(といっていいのかな?)をとってくれません(?_?)。MN128の設定が悪いのだとは思いますが、なんだか引越しのどさくさでMN128のマニュアルが見つからなくて(^^;困っております。MN128で64k同期の着信できている方は、ATコマンドでの初期設定を教えてくださいm(_|_)m


7.2 気が向いたらやる


(1)ATXの電源OFF制御仕様が判れば、ボードを作ってみたい。



7.3 お金があったらやる


(1)ボードのマスクを起こしちゃう...キットがあるから無駄だな(^^;


8.謝辞

[次へ][前へ][目次へ]


まお、今回の電源制御は基本的にすべてRS-232-Cで行ってます。このあたりの情報はFA-NET-MLの皆さんと、alm-hokkai藪中さんから頂いております。


ありがとうございます。m(_|_)m


以上



[玄関へ]
[総本店へ]