2007年7月15日の日記を表示中

2007年 7月15日 (日)

OpenBlockS復活

以前に購入してちょっと使ったけど2.5"HDDが壊れたがために放置となっていたOpenBlockS266をルータとして置いてみることにしました.前使ってたとき相当熱くなったんでHDDはもうやめにしてCFかマイクロドライブあたりをさしたいわけですが,調べてみたらマイクロドライブでも結構熱くなるそうで.ということはCFが無難なのかなぁ.まあ,どっちも持ってないんですが.そんなわけで,しばらくは内蔵のFlashのみで,ディスクレスで運用してみます.

さて,普通に起動すると,前にHDDから起動するように設定してた関係で起動途中で止まります.えーと,とりあえずFlashから起動するにはどうすりゃいいんだっけ・・・.あー,INITを押しながら電源投入か.

まずはFlashから起動するように設定.続いてファームウェア(というかLinuxそのものか)をアップデートしようと思ってscp使おうとしたら入ってないし.入ってるのはsshdのみか.しかもssh-keygenしないと使えないという厳しめの仕様.さすがです.結局ftp許可してアップロードしましたが,よく考えたらssh経由でtarで流し込んでもよかったのか.こっちの方がカッコ良かったな・・・.

ちなみにアップデートしたらbashの実体がshになってて超絶使いにくい.しかもsshd消えたし.上げなきゃよかったかな・・・.ま,いっか.

SSD/Linuxのdhclient

ルータ化の第一歩として,まずはdhclientでIPを取るところから始めてみることに.以前,YahooBBでこやつをルータにしたときは,dhclientでうまくIPが取れなくて結局dhcpcdを別途インストールして使ったんですが,今回もやっぱり取れませんでした(´・ω・`).うーん.今回は外部ストレージが無いからdhcpcdを別途入れるということは原則できないので,dhclientでどうにかIP取りたいところです.

ひとまず,T60ではIPを取ることができているので,OpenBlockSでdhclient使ったときと,T60でdhcpcd使ったときのDHCPのDISCOVERパケットをwiresharkでキャプチャして比較してみました.

比べてみると,dhclientの方が最初に送信する情報量が少ない模様.というわけで早速dhclient.confにちまちまと書き足してdhcpcd使ったときと同じような情報を送るようにしてみたんですが,状況は変わりません.うーん.

dhcpcdだと後ろのほうにパディングがついていて,パケットの全体サイズがちょっと大きめになってるのが気になります.dhclientでこれをやるにはどうすれば・・・とソースを読んでみたんですが,dhclientの場合300byte以上だとパディングしてくれなさそう.仕方ないのでパケットサイズを無理やり合わせるためにvendor-class-identifierに余計な文字列をどかどかと突っ込んで調整してやったんですが,これも効果なしorz

うーん,ほんと何がだめなんだろう.・・・そういやT60にもdhclientが入ってるな・・・.これで取れちゃったり・・・取れたし(;´д`)

パケットをキャプチャしてみたんですが,T60とOpenBlockSとではMACアドレス以外まったく同じ.dhclient側のプロトコル処理に問題があるんだとばかり思ってたんですが,全然違うようですな.最初の一歩から間違えていたとはorz.

・・・で,結局どういうことなのかともう一度考えてみると,これら状況から察するに,こっち側の設定には何も問題がなくて,CATVモデムから先で何らかの制限をしているんじゃないかと・・・.例えば,グローバルIP 1個の契約のユーザが,同時に複数のIPを取りにくるのを防ぐために,最初にDHCP DISCOVERを出した人のMACアドレスを記憶して,RELEASEが出る(あるいは一定時間過ぎる)まで別のMACアドレスからのDISCOVERは破棄するとか.

これをプロバイダ側のサーバでやってたらどうにもならんですが,ケーブルモデムでやってるならきっと電源再投入で・・・キタ━━━━(゜∀゜)━━━━ッ!! あんなにどうにもならなかったのがあっさり取れました.この後,T60で再度挑戦してIPが取れるかどうか確認すると,より先の仮説の真偽がはっきりするかと思うんですが,もう面倒なのでこの問題はこの辺で・・・.

SSD/Linuxでiptablesとか

次にnamedの設定.こっちはこっちでzoneファイルで「IN SOA 〜」の後の「(」をうっかり次の行に書いてしまったがために超はまりましたorz.全然別の行って気づかなかったし・・・.namedを「-d 1 -g」とかつけて起動したときに読み込みで問題があるみたいなメッセージが出てたんですが全然気づかなかったのがまた情けない・・・.はまった時間は長いけど,原因が単なるtypoなのでこの辺は手短に.

続いてiptablesでfirewallとNATみたいなものを作る作業.設定自体はまあいつもの通りでいいんですが,ここで一つ問題が.SSD/Linuxは /etc/rc.confに「iptables=YES」とか書いとくとiptablesが起動時に処理されるみたいなナントカBSDみたいな仕掛けになってんですが,その辺を処理するnetstartを見てみると,どうもrc.iptablesが実行された後にdhclientが起動される模様.

これで何がおこるかというと,rc.iptablesの中で,外側の口のIPアドレスを含んだルールを設定できないという問題が生じます(rc.iptablesが呼ばれた時点で外側の口にはまだIPが無いんで)./etc/netstartを書き換えちゃえばいいんですが,何かそれだと次アップデートしたときにすこぶる面倒そう.

というわけで,軽く悩んだ末,iptablesの設定内容の内,外側の口のアドレスを使う方を/etc/rc.iptables.localとして,/etc/network.localから呼ぶようにしてみました.これで一応うまくいった感じ.

最後にdhcpdを上げて,ひとまずルータとしての最低限のところは完成.変なところではまったけど,いくつか勉強になってよかったですわ.この外神田はどうなのかとちょっと思いますがw

そういやいつも思うんですが,ifconfigの出力を加工する以外に,スクリプトでインタフェースについたIPアドレスを知る方法って無いもんですかね.現状↓とか書いてるんですが,見た目がどうにも・・・.あ,いや,sedのIPアドレスチェック部分の最初3つはまとめろよとかそういうのではなくてですね(^^;

ifconfig eth0 | grep "inet addr:" | \
sed -e 's/^.*inet addr:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*$/\1/'

玄箱

ついでに玄箱も設定しちゃいますかね.うちにあんのはGigaの口持ってるPPC積んだやつなんですが,Debian化してあって,たまに起動しては,T60 (T42) からのrsync先として使ってました.

とりあえず,今回引越し先ではLANの中のネットワークアドレスを何となく変えてみたので,T60のeth0:1に,以前のネットワークアドレスのIPを適当に割り振って,sshで入って,DHCPからIPを取るように変更してみました.・・・この不用意な変更が失敗の元でした.何か再起動したら,pingは通るのにsshでログインできません・・・(;´д`)

これはいかんのでシリアルコンソールを・・・ってシリアルコンソールないんだったこの人 orz.えーと,こういうときはEMモードとかいうのに落としてFlashか何かからブートすりゃいいんだっけ? EMモードに落とすには何かのデバイスファイルに何かの文字列を書き込めばよかったはず・・・なんだけどシリアルコンソールがないんだったorz

外部のスイッチからどうにかできたりするのかと調べてみたら,後ろのリセット押しながら電源投入でLED点滅状態に落とすとEMモードに入るという情報を発見!・・・が,うまくいかず.LEDが点滅した状態でもtelnetはつながりません.ググったら,これではうまくいきませんでしたという人が大勢.うーん・・・

さらに探しているうちに,リセットボタン長押しでいけるという情報を発見.やってみたら一瞬赤いLEDが光った後,普通に玄箱が落ちました・・・って長押しすぎなのかこれ?再度挑戦して,赤く光ったところで離してみたら,バッチリ.telnetで入れたぞわーい.

すかさずディスクマウントしてsshで入れなかった原因を探ってみると・・・/etc/hosts.deny に

ALL: ALL

とか書いてあって,/etc/hosts.allow に

ALL : 192.168.0.0/255.255.255.0

とか書いてありました.なるほど,ネットワークアドレスを192.168.0.0/24 から変えたので入れなくなったというわけなんですねー.・・・どんだけ律儀に設定してんだ_|‾|○.ここ直してHDDから上がるようにして再起動したら無事sshで入れるようになりました.よかったよかった.

[コメントを書く]

nosuke 2007/07/18(水) 01:50:21
って,この設定デフォルトっぽいな・・・

2007年7月15日の日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2007年7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ