2007/08/02(木)EveryDNSは切ろう

2007/08/02 4:54 PC(Linux)
EveryDNSでこんな問題が起きていた。

# nslookup dt8.jp ns1.everydns.net

Server: ns1.everydns.net

Address: 208.76.56.56#53
Name: dt8.jp

Address: 218.41.53.186

# nslookup dt8.jp ns2.everydns.net

Server: ns2.everydns.net

Address: 204.152.184.150#53
Name: dt8.jp

Address: 121.2.160.125
ns1とns2で返ってくるアドレスが違う!

今現在EveryDNSとZoneEditをそれぞれダイナミックDNSでDNSサーバとして割り当てているのだが、バックアップとして2つのダイナミックDNSを使う意味は一方が落ちたときの予備、であるわけだ。けれども、いずれかのサーバで更新をミスするだとかサーバ内での整合性がとれていないだとかの可能性があるならば問題の切り分けを容易にするという意味合いにおいても統一した方が良い気がする。

さてZoneEditとEveryDNSどちらに寄せるかなのだが、5年使ってきた経験として、Diceで更新をミスしやすいのがZoneEdit、サーバそのものが落ちたり変なことになったりしやすいのがEveryDNSと。

ということでZoneEditに統一することにした。

ns1.everydns.net

ns2.everydns.net

ns18.zoneedit.com

ns8.zoneedit.com
から

ns18.zoneedit.com

ns8.zoneedit.com
に変更。

さてどうなりますか。

2007/07/02(月)サーバ入れ替え その9

2007/07/02 14:41 PC(Linux)
[9]残りの作業

wwwサイトをユーザ分まで全て移送し、オーナーなどを書き換え。

.htaccessで、使っていないcgiなどを暫定的に全てつぶす。
アクセスがちゃんと制限されているか確認。cgi、webに問題がないか確認。



CAn't locate jcode.pm



jcodeがらみで動かないCGI(waa?)があったが、たぶんコメントアウトで解決。

いよいよpppoeでネットにつなぐために設定をする。簡略化のために、設定ソフトでやる。

# aptitude install pppoeconf
pppoeconfを使ってpppを設定。以前はrp-pppoeだったので、最初ちょっとやり方がわからなかった。接続はpon,切断はpoff。接続テストをして問題ないようなら、最後にもう一度iptablesの設定などを確認し、local IPアドレスなどを運用用のものに書き換えてリブート。

あー疲れた。

サーバは書いてない部分でもできるだけ締めたつもり。今後は、侵入検知の導入とログの採り方+報告をうまいことがんばる。あとできればinetdの中に入れられるものは入れてしまう。

2007/07/02(月)サーバ入れ替え その8

2007/07/02 14:27 PC(Linux)
[8]upnpd(linux-igd)

色々実験したのでわざわざ分けてみた。
実のところMSNメッセで会話するだけなら、1863ポートを開けるだけでよい。

しかしファイル転送となるととたんにハードルがあがる。ルーターの中からファイル転送するのはハードルが高い上、今メインで使ってるのが互換のRegnessemなので大混乱。結果としてはうまくいかなかったので現状維持なのだけど、一応メモ。

# aptitude install linux-igd
debianのパッケージだと、今インストールするのはこれだけでいい。ReAIMとかはもう不要というか、入れても状況が変わらないようだ。



Jun 12 09:31:45 debian2 upnpd[4549]: Error registering the root device with descDocUrl: http://192.168.1.11:49152/gatedesc.xml

Jun 12 09:31:45 debian2 upnpd[4549]: UpnpRegisterRootDevice returned -204

Jun 12 09:36:01 debian2 upnpd[4623]: UPnP SDK Successfully Initialized.

Jun 12 09:36:01 debian2 upnpd[4623]: Succesfully set the Web Server Root Directory.



上記のようなエラーが出てlinux-igdがうまく動かないが、これは先の記事で書いたloのpingが通ってなかったのが原因。

で、動かしてみてlinux-igdも認識されたようなのだが結局ファイル転送はお互いが使っているソフトによってできたりできなかったりである。確実なのはMSNメッセ(7.0)やLive!メッセ(8.0)など新しいもの同士の方がファイル転送ができる可能性は高いということだ。Windows Messenger(5.0)やRegnessemだと、受信・送信側に関していかなる組み合わせにすると必ず転送できる状況になるのか知見が得られなかった。これだと、現状の1863ポート開けとほとんど状況が変わらない。

ちゃんと動いたとしても、linux-igdにはチェインを(ある程度)自由に書き換えさせることになるので、セキュリティホールの温床である。うまくいかないのでさっさと見切りをつけて、FORWARDのデフォルトポリシーもDROPにしてアンインストールしてしまった。これでも、会話には問題がないしregne同士で環境によってはファイル転送ができる。さらに訳がわからなくなってきた。

ファイル転送に関しては転送バッタなどもっと別のソフトを使った方が良いのだろう。使えなかったらあきらめる、or本家最新版。
それと、regneの進化に期待(一応考えてはいるようだから)。

2007/07/02(月)サーバ入れ替え その7

2007/07/02 14:05 PC(Linux)
[7]サーバの設定

以下参考サイトだけ列挙。
[ssh]

http://www.unixuser.org/~euske/doc/openssh/jman/sshd_config.html

せっかくなのでパスフレーズ認証に限定する。/etc/ssh/sshd_configを書き換えて、puttyで鍵作って転送。
[samba]

http://www.samba.gr.jp/project/translation/3.0/htmldocs/smb.conf.5.html

パスフレーズで固くなったことにして、www-dataを実体ユーザにし、ガンガン書き換えられるように。一応iptablesで締まってるはずだけどね。
[dhcp]

http://www.atmarkit.co.jp/flinux/rensai/bind908/bind908a.html

man dhcpd.confしてもさっぱりわからない。dhcpd.confのmanの出来は特級に悪いと思う。
[dice]

APTで更新チェックができないけれど、daemonで動くとはいえセキュリティ的にはさして怖い部分ではないから大丈夫でしょう。
設定ファイルはコピー。

/etc/init.d/diceを作って書いて、

# update-rc.d dice defaults 92
[proftpd]

proftpd.confにPassivePortsを追加しておく。

hosts.allow,denyで適宜サービスを制限。あとで、inetdの中に入れることを検討しておく。
[Apache2]

オフィシャルでいちいち調べて設定。

昔(1.3系)はオプションで明示してやらなければいけなかった挙動が、だいぶ良きに計らえになっているようだ。
せっかく標準でディレクトリ分けをしているようなので、/etc/apache2/sites-availableのdefaultに個人設定を集約して、apache2.confはあまりいじらないようにする。

cgiの拡張子の調整くらいで、以前の設定をほぼそのまま引き継ぎ。

[×qmail]

インストールしない。今回は当面MDA無しで行く。
[awstats]

cron.hourlyに

awstats.pl -config=/etc/awstats/awstats.conf -updateをつっこむ。
[networkの調整]

NATにする場合、忘れがちなのが/etc/networks/optionsの設定。



ip_forward=yes



optionsがない場合もあるので、作ってこうしておく。

ここで、ping 192.168.1.11(自分のローカルIPアドレス)が通らないことが発覚。

loが原因ぽいねえ。


###loopback all acceptance###||<
<ul>
<li>iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT</li>
<li>iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT</li>
</ul>
<ol>
<li>iptables -A INPUT -i lo -j ACCEPT</li>
<li>iptables -A OUTPUT -o lo -j ACCEPT</li>
</ol>
<hr />
これで解決。

2007/07/02(月)サーバ入れ替え その6

2007/07/02 12:54 PC(Linux)
[6]カーネル再構築

カーネルソースをダウンロードしてきて再構築していく。

手順そのものは以下のように、いつも通りなのでコマンドラインだけ。


# cp /boot/config-2.6.18-4-686 .config (デフォルトオプションをコピーしてくる)

# make oldconfig

# make menuconfig

# make

# make install

# make modules

# make modules_install

# update-grub



update-grubじゃなくてもうちょっと、bzImageの管理方法確立した方が良いのかなあ? もうちょっと頻繁に構築するスタイルなら考えた方が良いのだろうけど。

(カーネルオプション)

・nat関係を全部チェックするのを忘れずに。

・電源管理オプションをちゃんと入れるとこの機種では結構消費電力が下がったように思うのだが、どれが効いたのか定かでない。


以下はまったところだけ。



scripts/kconfig/lxdialog/dialog.h:32:20: error: curses.h: そのようなファイルやディレクトリはありません



makeでlibncursesがらみが無くて怒られた。

# aptitude install libncurses5-dev
しておく。



VFS: Cannot open root device "hda1" or unknown-block(0,0)

Please append a correct "root=" boot option

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)



再構築後、起動に失敗した。

initrdがうまく更新されていなかったようなので、

# mkinitramfs -o /boot/initrd.img-2.6.21.4 2.6.21.4
しておく。initrdって更新が必要なものなんだっけ? 理解危ないなあ。というか一手順忘れてるのかもしれない。必要なくなる手順とかあるから何が何だかわからなくなってくるね。

2007/07/02(月)サーバ入れ替え その5

2007/07/02 12:40 PC(Linux)
[5]がりがりインストール

APTでばんばかインストール。
まずサーバ群をインストール。

# aptitude install apache2

# aptitude install mysql-server

# aptitude install samba

# aptitude install proftpd

# aptitude install ntpd

# aptitude install dhcp
一応便利ツール。

# aptitude install screen

# aptitude install dnsutils

# aptitude install fdclone

# aptitude install lv

# aptitude install hdparm

# aptitude install apt-show-versions

# aptitude install finger
scrennはfdcloneと相性が最悪なので、あまり使わないのだけれど。

ここら辺は無いと困る。カーネル再構築にもいるし。

# aptitude install bzip2

# aptitude install gcc

# aptitude install make

# aptitude install tar
ネットがらみ。

# aptitude install wget

# aptitude install awstats
エディタは当面標準でついてるnanoを使うことにしてemacsはまだ入れない。

後は忘れた。

2007/07/02(月)サーバ入れ替え その4

2007/07/02 12:40 PC(Linux)
[4]~ネットワークの立ち上げとAPTの整理まで

APTでネットからインストールできるようになるまでの流れ。なおここらあたりだいぶ作業ログが吹っ飛んでいるので一部うろ覚え。
(1)システム(カーネルとかブートローダとか)インストール

まずはetch(debian 4.0r0-i386-netinst)のCDイメージを使って、ウィザードに従ってインストールしていく。パーティションの分割とかは割愛。
ところで余談だが、この前HDDの復旧をしたときに初めてパーティションを細かく切ることの恩恵を理解した。HDD故障の際にデータ読みだしに極端に時間がかかるような状況になると、重要なデータのエントリポイントがわかるとわからないのでは大違いなのだね。データが残っているということと、現実的に復旧できる可能性はまた違うのだった。

閑話休題。

とりあえず今回はウィザードの設定を使わず、GRUBだけ入れてからソフトは個別にインストールしていくことにする。

あっという間に終了。

もう1個余談。debianは最新版はイメージで探せるのだが、最近旧版はイメージに関して全くミラーしなくなった。jigdoを使ってくれということらしい。BitTorronetなんてどれだけ時間かかるかわからないし、ミラーをさまようよりはjigdoのほうが手っ取り早いということを覚えておこう。

(2)ネットワークの立ち上げ

まずsshがないと始まらない。

# aptitude install ssh-server
そうそう、そろそろapt-getじゃなくてaptitudeを使うように習慣づけるようにする。

それから、とりあえずルータの中からつなぐことにしてnetwork interfaceの設定をしてやる。DHCPでもいいのだけど、今回は一応IPを固定したかったので、/etc/network/interfacesを書き換えてローカルアドレスを書いてやる。そんでifdown/ifup eth1。

nx6110はIEEE1394がeth0に、NICがeth1に割り当てられているようだ。DHCPを使わない場合、/etc/resolv.confにDNSサーバのIPアドレスを書いておく必要がある。

とりあえずgoogle.co.jpとかにpingが通ることを確認し、移行の作業をsshに切り替える。

(3)apt-lineの整備

debianスレのテンプレとかを参考に、/etc/apt/sources.listを書き換え。aptitude updateが成功することを確認。
iptablesを整備。基本的には過去のもののコピーしてinit.dにスクリプトを作り、update-rc.dする。カーネルを再コンパイルするまでは動かない機能があるかもしれないので、エラーが出た部分はコメントアウト。

とりあえず準備はできたかなっと。

2007/06/29(金)サーバ入れ替え その3

2007/06/29 14:42 PC(Linux)
[3]ノートPC+USBキーボードが使えるか?

何でこんな不毛なテーマを考えているかというと、2つの理由がある。
1つは、前回の記事との関連で閉じたままでの運用が可能かという話。もう1つはキーボードがないジャンクノートは果たしてサーバになりうるかという疑問からである。

実のところ、どういったPCにUSBキーボードを挿そうがLinuxカーネルが対応していないはずはないのだ。問題は、各ディストリが「インストールCDの段階で」それをケアしたカーネルを作っているかどうかである。そりゃあそうだ、キーボードがないんだから、sshで入れるまではなんとかUSBキーボードで処理しなきゃいけない。カーネルを作り直すにしたってそうだ。自前のカーネルを組み込んだインストールCDを作るのはできるんだろうけどちょっと労力。自分のLinuxとのつきあい方からすると、やっぱりオフィシャルのイメージでインストールできてほしい。

でもう結果だけ書く。全部debian系。

debian woody - ○

debian sarge - ×(無反応)

debian etch - ×(二重入力≒チャタリング状態)

ubuntu 7.04 - ○
knoppix4.xも試したはずだが、メモが残ってない。確か大丈夫だったように思う。

ブートローダまでは大丈夫でカーネルが動くとおかしくなるのでもういけない。それにしても明らかにdebianが無頓着だということがわかる。古いので大丈夫で、今のはだめとなるとむしろ期待が持てない。ここらへんubuntuからのフィードバックを期待するdebianコミュの人たちの気持ちがわかるなあ。

打開策はないわけではないのだろうけど、こんなくだらないところで悩みたくないなら、キーボードは最低限ついているノートPCでないと無理と確定。特によくよく考えれば、一部ファンクションキーが動かないとビデオ出力とかで困りそうだものね。サーバにするんだったらやっぱり最低限下半身完品ってことみたい。最近のノートはBIOSが外部出力に出せるものがほとんどなのでディスプレイは必ずしも無くてもよさそう。今回入手したnx6110のように、一部縦線とか表示不良ならベストですかね。もちろん完動品買えるならそれが一番いいんだけど。

2007/06/29(金)サーバ入れ替え その2

2007/06/29 12:20 PC(Linux)
[2]Wake-on-LAN(以下WOL)ができるようにする

あまり本質的でない話なのだが、ノートPCをサーバにしたときにちょっと悩むのが電源ボタンへのアクセスである。
省電力やホコリ対策で液晶は閉じて使うのが通常であるが、閉じた状態では現役のほとんどのノートPCでは電源ボタンにさわれない。当然ノートPCを開けばすむ話である。が、開かずに運用できるならば設置体積を節約できるという利点がある。メンテナンスなどでシャットダウンしなければいけない機会はあり、WOLができれば若干便利になる。以前挫折したWOLであるが、今回は比較的やりやすいノートPCということで再チャレンジしてみることにした。

結論から言うとできるようになった。どうやらWOLの仕組みに重大な勘違いがあったようだ。順に話を進めよう。

まず、以前の挫折時の話を整理しよう。

・マザーボード、NIC、PCIコネクタの位置等に相性がある

・スタンバイ(S3)からの復帰は成功確率が高いが、休止(S4)や停止状態(S5)からだと難しい

・WOLが成功する組み合わせで、停止->起動ができるときもあったが再現性がない
ということだった。

ここで注目すべきは再現性がないという点。「再現性がない」は、同じ状態と自分が思いこんでいたものが実は異なるものだったりすると話が変わる。これに気づいたのはnx6110で実験しているときに「Windows XPで終了させたとき」と「電源ボタン長押しで終了させたとき」の挙動が違うことを発見したからだった。つまりどうやら電源オフの状態というのは一意ではなく、「単に電源が切れている状態」というのとは違う、「OSがWOLに備えてNIC側になにかを設定した状態」というのがあるらしい。

わかってしまえば情報は見つかるようになるものである。たとえば、「Wake-on-lan 電源ボタン」とかでググるとヒントが色々見つかる。

http://www-06.ibm.com/jp/domino04/pc/support/Sylphd07.nsf/jtechinfo/SYJ0-03CEEF6

http://www.fmworld.net/biz/celsius/manual/03kamiki/8861330/h_bios12.html
つまり、電源ボタン長押しやケーブル引っこ抜きなどによって電源を切った場合ではWOLは働かない。電源ボタン長押しで停止->WOLを試していた以前の実験では元から成功するわけがなかったのだ。ちなみにこのことから、停電時に遠隔地から電源オンするというWOLの無茶な使い方はUDPブロードキャストという点をさっ引いても、さらに厳しそうだということもわかった。ことこの用途に関しては、そういった機能を備えた無停電電源や秋月のIP POWER(ただし当然ルーターはコンセント接続=電源オンじゃないとだめ)とかそっちを使うしかない。

さて、Windows XPは終了時に自動でこのWOL待機を設定しているようである。きちんとWindows上で終了手続きを踏めばS5からのWOLが成功するようになった。一方、Linuxのカーネル2.6では今のところそのようにはなっていない。終了時にソフトで待機設定をたたいてやる必要がある。探してみると、ethtoolというソフトでWOL関係の設定をいじれるようだ。

早速インストール。

# aptitude install ethtool
Fedora Core掲示板

http://bbs.fedora.jp/read.php?FID=8&TID=4112
を参考に、init.dにset_wolというスクリプトを作って、こう書いてやる。



#! /bin/sh
/usr/sbin/ethtool -s eth1 wol g



で、debian流のスクリプト組み込み。再起動時(run level 6)に設定する必要はないはずなので、終了状態(run level 0)だけでいいはず。

# chmod +x set_wol

# update-rc.d set_wol stop 89 0 .
haltさせて実験させてみたところ、問題なくWOLができるようになった。あー難しかった。

なお、Windows上からWOLさせるなら、

http://www.vector.co.jp/soft/win95/util/se241927.html

がいいようだ。
Linuxからでは、

http://packages.debian.org/stable/net/wakeonlan

とかでいい。

OK キャンセル 確認 その他