checking whether the C compiler (gcc -O2 -march=i386 -mcpu=i686 -fPIC ) works... no configure: error: installation or configuration problem: C compiler cannot create executables.とかいってお亡くなりになる。C コンパイラ関係が一連のごたごたでおかしくなったんか?でも、他のものをコンパイルするときはなんともないからコンフィグの問題か?むぅ、よくわからんっす。またまた最初に戻って、バイナリRPM を多少依存関係無視でインストール。今度は出来た。Apache を再起動したら、無事 4.0.6 がロードされてん♪…しかし、肝心の mbstring がロードされていない。ビルド時にmbstring を使うオプションが指定されずにコンパイルされたバイナリがパッケージになってるようだ。う〜む、どうしたものかの。(まぁ、mbstring なくてもなんとかならなくはないが。)
○ ローカルDNSを立てよう
前からやろうかなと思いつつ、とりわけ困ることもないのでそのままにしてきたDNS。気が向いたんで入れてみよう♪
使うのはもちろん BIND …というのはもちろんありません(爆)BINDならもう入ってるし、起動すれば動くんけどね。使うのは djbdns 。MTA の一つ、qmail と開発者が同じ。この人のシリーズは好き嫌いはっきりすると思うけど、僕は好きやな。
djbdns は大きく分けて3つの部分(とりようによっては違うけど)、ローカルキャッシュ、外部用キャッシュ、DNSサーバで構成されてるん。本来の意味でのDNSがDNSサーバの部分(混乱しそうな表現や)。キャッシュはその名の通り、DNSのデータをキャッシュしておくためのもので、ローカルは自分のサーバの中のプログラムが使うもの、外部用は Windows マシンなんかの他のマシンが使うもの。構築目標が、
1. LAN内のマシン名をローカルDNSで解決する
2. 外部の名前はキャッシュサーバでキャッシング(サーバ、Windowsマシン共に使用できる)
だったんで、3つすべてを使うことになる。しかし、それぞれにはIPアドレスが一つずつ必要。これは同じDNSというサービスを提供するからポート番号が同じになる、つまり、同じIPアドレス上で2つのサービスが動かせないってわけだね。NICが1枚だけのマシンは通常、ループバックアドレス 127.0.0.1 とNIC用のアドレス、例えば、192.168.1.50 の2つを持っている。ローカルキャッシュはサーバの中で使えればいいし、逆に外部用キャッシュは他のマシンからアクセス出来るネットワークアドレスを使わないといけない。つまり、キャッシュだけを構築するとこんな感じだね。
そこにDNSサービスが必要になる。しかし、使えるアドレスがない。どうするか?実はLinuxマシンはアドレスを付け足すことが簡単に出来るん。つまり、NICに2つのアドレスを割り振ることも出来る、というわけ。これで3つとも動かすことが出来るようになる。NIC の eth0 に追加するにはこうするん。
# /sbin/ifconfig eth0:0 192.168.1.51 # 新しく割り振るIPアドレスを指定
# /sbin/route add -host 192.168.1.51 dev eth0:0
きちんと設定されたかチェック。念の為に別のマシンから ping を打っておくのもいいかも。
# /sbin/ifconfig eth0 Link encap:Ethernet HWaddr ##:##:##:##:##:## inet addr:192.168.1.50 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:81324 errors:0 dropped:0 overruns:0 frame:0 TX packets:83497 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:11 Base address:0x6800 eth0:0 Link encap:Ethernet HWaddr ##:##:##:##:##:## inet addr:192.168.1.51 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0x6800 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:3027 errors:0 dropped:0 overruns:0 frame:0 TX packets:3027 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0この設定はマシンをリブートすると元に戻ってしまうんで、/etc/rc.d/rc.local なんかの起動スクリプトに上の ifconfig 〜、route 〜 を書き加えておけばOK。最近のディストリビューションならこんなことしなくても X 上でスマートで簡単に出来そうやけど、ま、いいってことで(笑)
□ daemontools のインストール
daemontools は直接DNS とは関係無いけど、デーモンを管理してくれる便利なやつです。これがあると例えば、何かのきっかけでプロセスが死んでも自動的に再起動をしてくれたりと、管理者にとってはありがたい存在。
# su # mkdir -p /package # chmod 1755 /package # cd /package # tar xzf daemontools-0.76.tar.gz # cd admin/daemontools-0.76 # package/installその後、マシンを再起動すると監視用のプロセスが走り出します。
□ djbdns のインストール
# tar xzf djbdns-1.05.tar.gz # cd djbdns-1.05 # make # su # make setup check
◇ ローカルキャッシュを設定
まずDNSキャッシュプログラム用のアカウントを作成。グループdns を作成して、これに所属するユーザー dnscache と dnslog を登録。ホームディレクトリやシェルは使えないように設定。その後、必要なファイルを作成、/service 配下からのシンボリックリンクを張れば自動的にサービスが起動されます。最後に /etc/resolv.conf を編集してDNSサーバに自分自身(localhost)を指定しておきます。
# dnscache-conf dnscache dnslog /etc/dnscache # ln -s /etc/dnscache /service ----- FileName /etc/resolv.conf ----- # nameserver aaa.bbb.ccc.ddd # これまでの設定をコメントアウトしておく nameserver 127.0.0.1 ------ end of /etc/resolv.conf ------これで程ない時間(数秒?)でサービスが開始されます。DNS問い合わせが上手くいくかチェックしてみよう。
# nslookup www.plala.or.jp # 適当なサーバーを指定。この例ではISPのWWWサーバー Server: localhost # ローカルキャッシュへ問い合わせが行われているか確認 Address: 127.0.0.1 Non-authoritative answer: Name: www.plala.or.jp Addresses: ***.***.***.***, ***.***.***.***, ***.***.***.***, ***.***.***.*** # ↑隠しても意味なさげやね。ま、一応(^^;
◇ 外部用キャッシュを設定
手順はローカルキャッシュの時と少し違います。ローカルキャッシュを設定してない場合は、ローカルキャッシュと同様アカウントの作成を忘れずに。
# dnscache-conf dnscache dnslog /etc/dnscachex 192.168.1.50 # マシンに割り振られているIPアドレスを指定
# ln -s /etc/dnscachex /service
このままではリモートホストの問い合わせを受け付けないので、次のようにして問い合わせを受け付けるネットワークを指定します。
# touch /etc/dnscahcex/root/ip/192.168.1 # 許可するネットワークアドレスを指定
サーバ自身がローカルキャッシュを使わずに外部用キャッシュを使うために設定を変更。
----- FileName /etc/resolv.conf ----- nameserver 192.168.1.50 ------ end of /etc/resolv.conf ------◇ DNSサーバを設定
# tinydns-conf tinydns dnslog /etc/tinydns 127.0.0.1 # 今回は localhost を指定してるが、一般的にはサーバのIPアドレスを指定
# ln -s /etc/tinydns /service
続いて、ドメインのNS(ネームサーバ)を設定。add-ns (正引き/逆引きドメイン)(サーバのIPアドレス)と指定。
# cd /service/tinydns/root # ./add-ns localdomain 192.168.1.50 # 正引き用 # ./add-ns 1.168.192.in-addr.arpa 192.168.1.50 # 逆引き用(1.168.192.in-addr.arpa と並びが逆になる点に注意) # make次に、登録したいマシンのアドレスを追加する。
# ./add-host server.localdomain 192.168.1.50
# ./add-host desktop.localdomain 192.168.1.52
# make # make を忘れずに
後で変更や削除したい時には /service/tinydns/root/data をエディタで編集してねん。中を見れば多分分かると思うので。
# echo 127.0.0.1 > /etc/dnscachex/root/servers/localdomain # echo 127.0.0.1 > /etc/dnscachex/root/servers/1.168.192.in-addr.arpaこれで全ての設定が完了♪きちんと設定されてるかチェックしみよう。nslookup でLAN内部と外部のホスト名を問い合わせて見る。
#nslookup www.plala.or.jp # 外部の問い合わせ Server: server.localdomain Address: 192.168.1.50 Non-authoritative answer: Name: www.plala.or.jp Addresses: ***.***.***.***, ***.***.***.***, ***.***.***.***, ***.***.***.*** # nslookup desktop # 内部の問い合わせ Server: server.localdomain Address: 192.168.1.50 Non-authoritative answer: Name: desktop.localdomain Address: 192.168.1.52 # nslookup 192.168.1.52 # 逆引きもチェック Server: server.localdomain Address: 192.168.1.50 Name: desktop.localdomain Address: 192.168.1.52うん、OK!あとはWindows マシンのほうもDNSの設定を変える、っと。チェックの時、NT/2000 系には nslookup コマンドがあるけど、9x 系には何故か無い(あっても損はないんじゃ…)。ping ででも代用するか、nslookup 出来るツールを使おうね。
うちは常時接続やないねん、大丈夫〜、なんて思わないように。ダイアルアップでも十分侵入される可能性がある、というのがこれだけの分析でも分かるっしょ。WindowsNT、2000ユーザーは特に意識して一度チェックしてみてねん。
<Code Red Worm に関する情報>
IPAセキュリティセンター
コンピュータ緊急対応センター