Home Linux / CentOS 5.2 TipsCentOS5.2の利用について  Nutch/Java  Heritrix/Java

Linux / CentOS 5.2 Tips

RedHat3-9/RHEL/CentOS系などRPM系のLinux利用のためのTipsメモ・ページです。

  1. cgi開発評価用のCentOS 5.2設定手順

  2. 1. LinuxOS(CentOS 5.2)をインストールする。(sshはデフォルトで起動。ファイアウォール、セキュリティはとりあえず無効化する。)
    2. vsftpdの設定。
    3. sambaの設定。
    4. perl-5.8.8の設定 (/usr/local/bin/perl)
    5. J-Code, Crypt-CBC, Crypt-Blowfish 等のCPANモジュールのロード、実装。
    6. gnomeのサービス設定を用いて、実行モード3/4/5でsamba,httpd,vsftpdを起動時実行に変更保存する。
    7. Windows VISTA側から putty, ffftp, MS-Network等を利用して接続確認を行う。
    8. GUIの「仮想化サーバーマネージャー」を利用してゲストOS(CentOS等)を必要数インストールする。
    9. 手順8でインストールしたゲストOSそれぞれについて上述1-7の手順を繰り返す。
    10. /etc/inittabを変更し、CUI起動に設定して再起動する。

    #1 ローカルホストに適当なurl設定をおこなうために、ローカルdns設定を予め行うこと。

  3. CentOS 5.2のインストール

  4. CentOS 5.2のインストールを行う場合、x86/64bit対応のCPUを搭載したサーバーが望ましい。さらに、仮想化に対応したIntel-VTあるいはAMD-V対応であった方がなおさら良い。Pentium3/4など古めの32bitCPUなサーバーはこの際であるから、ヤフオクなどで処分してしまうのが吉である。というのも、CentOS5.2は後述するように、xenを利用した仮想化サーバーの構築に対応しており、しかも実に簡単に実装できる。インストールの際のオプションで仮想化サーバーの項目にチェックを入れれば、インストール終了時のリブートでxenが即時的に動作するようになるからだ。この点で、dual-core以上の今的なCPU搭載サーバーなら何でも良い。

    それと、xen仮想サーバーを立ち上げる前提で言えば、32bit版より断然64bit版を推奨したい。仮想化サーバーとして利用するなら4GB上限の32bit系CPU/OSでは役不足。また、複数のゲストOSを同時起動させるならば、メモリは大容量である方が望ましいし、昨今2GBのメモリーはとても安価である(2000円以下で買えたりする)。

    インストールメディアはDVD1枚にまとまっていた方が何かと都合がよい。CD-ROMだと7枚組。ディストリビューションの配布サイトの多くはCD-ROMベースのイメージ配布がメインだが、理研サーバーのようにDVD1枚イメージを置いていてくれているサイトも少なからずある。ゲストOSを複数インストールする場合、DVD-Rなメディアで1枚にまとまっていた方が断然手間が省ける。

    インストールはディストリビューションCD/DVDの自動起動によるGUIベースでも、"linux text"コマンドによるCUIインストールのいずれでも構わない。/etc/inittabを書き換えれば起動をCUI/GUIのいずれかに変更することはいつでもできるからだ。長年CUI利用のインストールや設定を繰り返してきたが、最近、Fedra5/8/9を使うようになって以降、LinuxでもGUIを使うことが普通になった。GUIの「サーバー設定」toolやネットワーク設定がお気軽簡単で便利であるというのがその理由。

    最近は大容量HDDも安価なので、インストールはマイ・ルール的に「全部入り」がお約束。サーバー導入の目的が「サーバー構築術」の習得にあるなら話は別でそれはそれで楽しいものではある。だが、私のサーバー導入の目的は「運用利用」それ自体なので、unix/linux的な難しげな手動設定は限りなく省力化したいと考えている。だからインストールに際してはできるだけGUIとマウスだけで行い、最後にCUIに戻して24時間放置で運用するようにしている。

    CentOS 5.2のOSそれ自体のインストールで生じる問題・トラブルはあまり無いが一点だけ。gcc/cc がデフォルトでインストールされなかったことには驚いた。Linuxは80年代末の初期ディストリビューションCDのYagadrasi(0.97)が最初で96年頃からslackware, WalnutCreekのCD-ROMセット, RedHat3,4,5,6,7,8,9と使い続けてきた。cコンパイラがインストールされなかったのは今回が初めてだ。ただし、インストール直後にRPMコマンドとかで所在確認すると未インストール。そこであえてGUIのパッケージ確認でチェックするとインストール済みと表示される。もしかすると、5.2のディストビューションパッケージの実装それ自体に問題があるだけなのかもしれない。これも後述するがgcc/ccはyumインストールで簡単にインストール可能である。

  5. RPM

  6. スタートメッセージの変更方法
    /etc/issueという(テキストファイル)の内容を変更すれば接続(起動)時の文字列を変更できる


    インストール済みパッケージの存在確認
    rpm -qa "package_name"


    インストール済みパッケージの設定ファイルのインストール場所の確認
    rpm -ql "package_name"


  7. Appache

  8. Appacheの設定ファイルの所在場所
    /etc/httpd/conf/


    Appacheの再起動
    /etc/rc.d/init.d/httpd restart


    Appacheの起動
    /etc/rc.d/init.d/httpd start


    Appacheの停止
    /etc/rc.d/init.d/httpd stop



  9. 時刻合わせ

  10. 時計の再設定(root権限が必要)
    date --set=HH:MM:SS
    ntpdate 133.100.9.2 (ntpによる時刻合わせ)


  11. Reboot/シャットダウン

  12. リモート・リブート(root権限が必要)
    shutdown -r now
     あるいは
    reboot


    シャット・ダウン(root権限が必要)
    shutdown -h now


  13. tar

  14. 圧縮
    tar -cvf file_B.tar dir_A      dir_Aをfile_B.tarという名前で集約。
    tar -cvzf file_B.tar.gz dir_A    dir_Aをfile_B.tarという名前で集約、gzipで圧縮
    展開
    tar -vxf  file_A.tar         tar形式のファイルを展開。
    tar -xvf  file_A.tar file_B      アーカイブから特定ファイルを展開。
    tar -xzvf  file_A.tar.gz        tar.gz形式のファイルの解凍&展開。


  15. Linuxのブートモードの切り替え

  16. Linux起動時、x/gnome表示あるいは文字端末表示のいずれかは/etc/inittabの設定で選択可能。18行目。
    d:5:initdefault:  x/gnome表示モードで起動
    d:3:initdefault:  文字端末モードで起動。サーバー利用時はこちらを推奨。

    CUI画面からgnomeを起動する場合は、startx コマンドでGUIを起動できる。

  17. vsftpdの設定

  18. vsftpdはインストール時点では自動起動されない。chkconfigコマンド等で自動起動設定する必要がある。ただしデフォルトの設定だとanonymous設定で起動されるのでcgi等の転送には不向き。
    /etc/vsftpd/vsftpd.conf の11行目、のYES設定をNOに変更するだけでユーザ認証に切り替わる。

    anonymous_enable =YES → NO

  19. デーモンの起動・停止・再起動

  20. demon類の起動設定を行う場合はGUIであるgnomeのサーバー設定メニューにある「サービス設定」が超便利。クリックだけで任意のdemonを起動、停止、再起動したり、Boot時のランレベル3(CUI)、ランレベル5(x/gnome)などの自動的起動の設定が行える。
    GUIなgnomeは何も操作していなくても結構マシンに負荷がかかる。純然なサーバー利用の場合はCUI起動が望ましい。gnome起動はすなわちランレベルが5なので、サーバー利用時をCUI起動としてvsftpd等を自動起動するのであればこの「サービス設定」でrun-level3のチェックマークにチェックを入れて設定保存すること。
    CUIあるいは文字端末からコマンドでデーモンを起動・停止・再起動する場合は以下の様に打ち入れる。

    /etc/rc.d/init.d/httpd restart  httpdをリスタート
    /etc/rc.d/init.d/vsftpd start  vsftpdをスタート
    /etc/rc.d/init.d/smb stop  sambaを停止

    ls /etc/rc.d/init.d でディレクトリ確認すれば、起動・停止・再起動可能なインストール済みのdemonが一覧できる。

  21. samba設定

  22. CentOS5.2等、最近のディストビューションはGUI設定がそこそこ使い易く改良改善されている。WEBベースの901なswatも不要かもしれない。ただし、sambaユーザの追加、パスワード設定などにはsambaそれ自体がversion3に更新され、パスワードファイルの構成に変更があり、GUIツールが未対応であるため、結果バグに似た挙動があってうまく設定できない。以下にユーザ認証ベースの設定手順をメモ書きしておく。

    まず最初にすべきは、smbpasswdの生成。smbpasswdファイルはデフォルトでは存在していないのであらかじめユーザが自己責任で生成する必要がある。 以下が/etc/passwdをコピペして使う例。ただしnobodyとかも全部smbpasswdに含めるのは難ありかも。

      cat /etc/passwd | sh mksmbpasswd.sh > /etc/samba/smbpasswd

    CentOS5.2のGUI/gnomeに組み込まれている「Sambaサーバー設定」toolはversionが1.2.39。2005年版なのでsamba version3 には適応していないのであろう。sambaのシステム構成についてはうまく設定できるようであるが、ユーザ登録機能ではユーザマップ(smbpasswdファイルそれ自体)の削除操作だけで、/etc/samba/passdb.tcbやsecrets.tdbの操作では追加も削除も失敗するようである。それ故、sambaのユーザ追加・削除・変更などは以下のpdbeditコマンドで行うのがよい。pdbeditはsamba version3対応のパスワードファイルの生成・変換も同時に行う。ただしユーザ名一覧としてのsmbpasswdのユーザを全てパスワードファイルに登録変換するわけではない。よって、次にすべきは、sambaユーザの追加設定。以下のコマンドで行う。コマンドを打ち入れるとパスワードを聞いてくるので、Windows機で使用しているパスワードを入力する。

      pdbedit -a ユーザ名

    sambaユーザの設定を終えたら、X/Gnomeのsambaサーバー設定ツールを起動する。root権限が必須。このツールでは、最初にワークグループを指定する。次に、セキュリティ。セキュリティは指定ユーザ限定とする。書き込み許可のチェックマークを入れておくこと(ただしこの設定も挙動観察でいえばどうも無意味に近い)。次にsamba公開するサーバーのディレクトリの切り出し位置を指定する。指定後にタブ切り替えで、そのディレクトリパスのアクセスを許可するユーザを指定する。一覧は上記smbpasswdファイルに登録されていなければ指定できない。Windowsのネットワーク設定などから見られるsambaサーバーの論理名は、Linux機のIP/DNS等を設定するnetwork設定で指定されたドメイン名 "xxx.hoge.com"の最左端なサブドメイン名"xxx"が使用される。ここまで設定した後、x/gnomeのサービス設定を開いて、3-4-5レベル全開でチェックマークを入れ、smbを再起動させる。nmbの指定は不要。設定保存すれば次回リブート時から自動起動するようになる。

  23. perl のコンパイル&インストール

  24. perlのtar.gzファイルをCPAN等からダウンロードする。5.8.8が推奨?
    以下のコマンドを実行。実行オブジェクトは /usr/local/bin/perl として生成する。
    # rm -f configure.sh Policy.sh
    # sh ./Configure -de
    # make
    # make test
    # make install


  25. gcc のインストール

  26. CentOS5.2など、設定によってはgcc/ccがインストールできない。その場合のyum/RPMは以下のコマンドで。

    # yum install gcc* compat-gcc* compat-glibc* compat-lib*

    実際には、gnomeデスクトップからパッケージマネージャーを起動し、[開発]→[開発ツール]:[開発ライブラリ]にチェックを入れて自動追加更新するのが面倒でない簡便なやり方。

  27. cgiファイルのサーバーエラー回避

  28. /usr/bin/perlで直接実行、エラー無しにも関わらず、cgiモジュールがapacheでサーバーエラーが生じる場合は、cgiファイルの改行コードがLFだけであるかどうかを確認すること。ftp転送中とかでsjis変換されていると改行コードがCR/LFとなる場合があり、この場合だとエラーが生じる。ソースコードはUTF-8記述が望ましい。

  29. Sun Microsystems のJavaのインストール

  30. CentOS5.2にインストールされているJavaはGNUのJavaだが、Sun MicrosystemsのJavaの方が標準度もあり一般的。共存切り替えで利用することもできるが、ここではGNU版を削除し、Sun版と取り替えてしまうやりかた記しておく。

    JavaSEはここからダウンロードする。

     #sh ./jre-6u11-linux-i586-rpm.bin       ;Javaのバイナリファイルのインストール
     #yum -y remove java-1.4.2-gcj-compat   ;GNU Javaの削除

    以下の三行を /etc/profile に追加
     export JAVA_HOME=/usr/java/latest
     export PATH=:/bin
     export CLASSPATH=.:/jre/lib:/lib:/lib/tools.jar

     #source /etc/profile ;上記環境変数の変更を即時反映。

     #env           ;環境変数の確認


  31. Tomcatのインストール

  32. JavaSE/servletをブラウザで表示させるためのtoolであるtomcat(6.0.18)をはApache Tomcat 6のページからダウンロードする。

  33. リバースプロキシpoundのリモートホストIPの取得

  34. poundをロードバランサとして使用するとログ記録のためのリモートホストのIP情報が全てpoundサーバーのIPで記録されてしまう。ログ取得をperl記述で次のように行っているなら($ip_addr = $ENV{'REMOTE_ADDR'};)、この記述を($ip_addr = $ENV{'HTTP_X_FORWARDED_FOR'};)と書き換えればよい。ただし、httpd側でIPからリモートホストのドメイン名をリゾルブ解決( $host_name = $ENV{'REMOTE_USER'};)して拾ってくるように設定されていても効き目はないので要注意。

  35. xenを利用した仮想化サーバー

  36. CentOS5.2の良い点は、仮想化ツールのxenが組み込み済みであること。特にIntelならVT, AMDならAMD Virtualization(AMD-V)対応のCPUを利用すればxenの完全仮想化機能を利用することができる。この点でAthron64なサーバーはOK。Celeron420/430/440なサーバーでは完全仮想化機能は利用できない。要注意。

    完全仮想化の用途はケースバイケースだが、poundを利用したクラスタリング・システムのワークベンチの構築などにxenは最適。この場合、domain0サーバーではpoundを走らせ、appacheは停止。ゲストOSとして複数のCentOS5.2を組み込み、それぞれをゲスト・httpdサーバーとして構成する。こうした場合、少なくとも3~5台程度のゲストOSの組み込みが必要となる。従来ならその台数だけサーバー実機を用意しなければならなかった。電気代もバカにならない。しかし仮想化サーバーなら電気代は1台分で全てまかなえる。

    仮想化を行う場合、CentOS5.2の64bit版を使用しメモリは8GBフル実装が望ましい。最近は2GBのDDR2メモリーもとても安価(2000円以下で買える)なのでメモリーは可能な限り増設すべきだと思う。xen/LinuxはSwapに弱い。メモリーが不足してスワップが走るような状態になると、xenは暴走して突然リセットという事態になる場合がまだある(特にインストール時のファイルを利用したドライブの新規作成時)。

    xenで仮想化ゲスト・サーバーを組み込む場合、簡単なのは10GB~40GB程度のサイズ指定のファイルベースのゲストOS設定。パーティションを別切りで設定する場合、ファイルシステムは特定ディレクトリを占有するような論理的な構成では組み込めない。あくまで物理パーティションが要求される。CentOS5.2の場合、そうした物理パーティションは1台のHDDでは2つまでしか設定できないようなので、ゲストOSを複数用意する場合はdomain0の管理下にあるファイルベースの組み込みが安易ではあるが現実的。ただしファイルベースで構築するとファイルを管理しているdomain0の負荷が大きくなる。オーバーヘッドも大きくAthron3500+な単独サーバー利用時と比較して1.5倍程度処理が遅くなる。マルチコアなCPUを利用すればこのdomain0の負荷は軽減されるかもしれない。仮想化利用はマルチコアなCPUを利用すべきだが、ワークベンチ利用ならシングルコアなCPUでも十分実用的。特にトラブルなく安定して使えている。

    実際にdomain0からゲストOSを全てCentOS5.2(64bit版)で構成してみた。ゲストOSは合計で6セット。CPUはHP ML115G1/8GB/500GBHDD/。シングルコアなので負荷が重くなるとCPU使用率が100%推移することが多々ある。特にインストール直後やアップデート直後にLinuxはバックグラウンドでmanファイルやライブラリファイルの集約toolが起動して長時間高負荷状態になる。この高負荷状態は一時的・過渡的だから安定稼働状態なればそうそう高負荷にはならない。個人利用ならロードは0.0推移が普通。

    ゲストOSのインストールや稼働管理を行うために利用するツールはx/gnomeの「仮想化サーバーマネージャー」。簡易だが実に便利なツールだ。ゲストOSをファイルベースで組み込むなら何の設定もなしに速攻で組み込んで行ける。簡易であるが難点はある。例えばスナップショット起動ができないこと。それとゲストOSの起動は手動で行わなければならないこと。24時間運用ならdomain0を再起動する必要はそれほど無いから問題も少ないが面倒ではある。このGUIツールを使う限りcronリブートなどの設定はできない。またGUI/gnomeを走らせたままだとCPUの負荷が常時かかる。load換算で0.2程度だが、サーバー利用中は無駄な負荷でもある。本体の起動はレベル3なCUI起動にすべきである。設定時のみstartxコマンドでGUI/gnomeを起動し、サーバー利用時はログアウトしCUIに戻して放置しておくのが良い。GUIからCUIに戻してもxen/ゲストOSは動いたままだから心配はない。もちろんxenそれ自体の設定で起動時にゲストOSの自動起動させることは可能。現時点ではワークベンチ的に使用しているので選択的な起動ができる余地があったほうが良いと考えてあえて自動起動するような設定はしていない。

    これまでdomain0/ゲストOS(CentOS5.2)×6の合計7サーバーを仮想化状態で半年近く安定稼働させていたが、仮想コンソールの表示が遅いので現在はVirtualBoxに切り替えている。

  37. Sun Microsystems のVirtualBoxを利用した仮想化サーバー WindowsVista版

  38. 普段の作業用PCとして利用しているWindowsVISTA機(ML115/4850e/RAM:3GB)をホストとして、Sun MicrosystemsのVirtualBoxを実装し、AMD64bit版のVirtualBox上でCentos5.2を実装してみた。実装上の要点はWindowsVISTA上のホストアダプタ・ブリッジ設定のみ。実に簡単お気軽に実装できた。

    宅内DNSサーバーを動かしているので、個々のゲストOS/VirtualBoxにも固定IPを振り当て、サーバー利用できるかどうかが要である。VirtualBoxをインストールした後、VirtualBoxを起動し、早速ゲストOSのインストールを行うことができる。インストールは、[新規]ボタンをクリックすることで始められる。まずOSの名前をCentOS5.2等と適当に設定する。OSタイプはLinux2.6。メモリサイズは512MB。起動ディスクをデフォルトのまま8GBサイズで設定してインストールをDVD-Rの1枚インストールメディアから行うのが簡便だ。初期設定が終わったら、再度セレクタから新規に作成したゲストOS名をクリックすればインストールが開始される。インストールを開始する前にネットワークのホスト設定を行うのがよい。

    VirtualBoxのゲストOS固有の設定はゲストOS起動中に出来ないのでゲストOS停止中に行わなければならない。VirtualBoxのGUIウインドウのOSセレクタからゲストOSであるCentOS5.2を選択状態にしてからウィンドウ右の[ネットワーク]を選択する。そして、ネットワークの設定ダイアログ上でホストインタフェースを新規作成する。ホストインターフェースを新規作成したら、VISTAの[ネットワーク接続の管理]ウィンドウを開いて、これまで利用しているネット接続と新規に作成したホストインタフェース(デフォルトでは"VirtualBox ホストインタフェース1")の二つを同時に選択しマウスの右ボタンを押してブリッジ接続を選ぶ。すこし時間が掛かるが、"ネットワークブリッジ"のアイコンが表示されたら、ネットワークブリッジのプロパティを開き、そこで従来用いてきた接続設定と同様のIP等の設定を行う。私はDHCPを用いていない。あくまで固定IP利用「主義」。もちろん、ユーザPCはDHCP利用でも構わないだろう。その場合、ベースIPは192.168.0.とかサーバー利用するべきゲストOSのIPと同じく設定する必要があるだろう。

    留意すべきは、VirtualBoxのホストインタフェースの利用。ホストインタフェースの利用は排他的・唯一的で、2つ以上のゲストOSが同時に共有利用することができない。ゲストOSを複数同時起動する場合、ゲストOSそれぞれに割り当てるホスト・インタフェース、アダプタはユニークでなければゲストOS起動時にエラーが生じる。アダプタは4つ。つまりNICの4枚差しまで仮想的に試すことができる。いずれにせよ、ゲストOSを新規インストールするたび毎にホストインターフェースを新規作成しブリッジ接続指定する必要がある。やや面倒ではあるが、初期これだけのことで仮想的にいくらでもゲストOSを作成することができるのはありがたい。
    ホストインタフェースをブリッジ接続する可能最大数がいくつかはわからない。実用上は無制限といえる。ブリッジ接続を行うと、旧版のFFFTPが動かなくなる。このバグは既にFFFTPの最新版で対策解消済みであるので、FFFTPユーザはFFFTPをダウンロードするのがよいだろう。

    ubuntuのvirtualBox用のVDIイメージは正式に配布されている。VDIイメージはそれ自体で保存可能。しかし同一マシン上でコピー利用することはできない。VDIイメージ自体にVirtualBoxの設定項目が保存されるわけでなく、xmlファイルとして別ファイル保存され、そのxmlファイルのパスをVDIイメージが保持するからである。ゲストOSを新規作成する時点で、VDI内蔵の設定ファイルパスで示される設定ファイルが存在していなければVDIイメージを用いたゲストOSの新規作成は可能。しかし設定ファイルが既に存在しているコピーを新規登録で使用しようとすると、その設定ファイルの存在を理由とするエラーが発生して新規登録ができない。基本的なサーバー設定が終わっているVDIイメージをベースに複数のゲストOSが登録できたらずいぶん設定も楽になるのにとやや残念な気がする。それでも他機へのコピー利用は可能だと思う。まだ試してはいないが、Windows上で作成したVDIイメージをLinux上のVirtualBox環境へ持ち込んでみる。というのも面白いかもしれない。

  39. Sun Microsystems のVirtualBoxを利用した仮想化サーバー Linux版

  40. xenサーバーの高速化を目論んで、ML115G5とAMD Phenom9350e(Quad Core)+8GB-RAMという構成で、まず現状稼働しているML115(Athron3500+ Single Core)なサーバーと同じ構成で仮想サーバーを構築してみた。xenはCPUの数をゲストOS毎に割り当てることができるから、パフォーマンスの調整ができる。4コア割り当てだとマウスの動きも大分改善される。それでもリアルなサーバー同様とは言い難いほどに遅い。おそらくマウスポインタの描画がポーリングというかソフトウェアによる逐一的描画であるからだろう。単純なサーバー利用であるなら、仮想コンソールは無用ではあるが、OpenSUSE Linux等のように何をするにせよgnomeが必須などというLinuxディストリビューションも増えているから、画面の描画はユーザビリティという観点からいえば重要な点。そしてこの点ではVirtualBoxの方が断然優れている。

    4コアなサーバーでも期待していたほどに描画性能が上がらなかったので、VirtualBoxのLinux版をインストールしてみた。ML115G1なWindows機はVGAカードを巡るBIOSやWindowsOSの問題などがあって、64bitOSでもメモリは3GBまでしか実装できない。そのためゲストOSを複数同時に稼働させるには環境的にやや貧弱。そこで、OpenSUSE LinuxをベースにVirtualBoxをインストールしてみた。

    ゲストOSのインストールはWindows版とほとんど変わらない。唯一、留意点があるとすれば、ネットワーク接続のホストインタフェースの指定のあり方だけ。Linux版ではホストアダプタ1にeth0を指定すればよいだろう。この組み合わせはどのゲストOSでも問題なく同時起動させることができる。割り当てメモリがゲストOSの同時利用の限界となる。
    2009/1/20現在のVirtualBoxはバージョンが2.1.0。インストール直後なので定かではないが、この版では、SuSE Linuxベース+CentOS5.2ゲストだと、キーボードのキー2つか利用できない。エンターキー近くの[|/ ]と[_ろ]キーが無反応となる。設定の問題のような気もするが、| が打ち込めないのでパイプ利用のコマンドラインが打てない。困ったものである。もちろんコマンドならリモート端末側から操作すれば済むことなので問題回避は可能である。これはVirtualBoxのバージョンが上がるのを待つほかないのだろう。
  41. BIND9を用いたローカル・ドメインのDNS設定

  42. CentOS 5.2は、インストール直後の状態でDNSは起動していない。/etc/rc.d/init.d/named startとコマンドすればとりあえずクライアント用のDNSサーバーとして利用可能になるはず。ただしこの場合、ネット設定でゲートウェイ設定を行い、インターネット接続が可能な状態でなければならない。

    BIND9は巨大なブログラムなので全てを使い切るのも説明するのも難しい。そういうことは他にお願いするとして、ここでは、あくまで個人の私的な利用に限ったローカルドメインのDNSのメモ書きに留める。

    ローカル・ドメインの設定とは、192.168.0.0~192.168.255.255までのローカルネットIPに接続された機器にドメイン名を割り振って利用する場合の設定。たとえば、pilots.eva などというドメインを自分自身で勝手に設定し、以下の様にドメイン名を割り振ることができる。

    dns.pilots.eva   192.168.1.10
    www.pilots.eva   192.168.1.10
    rei.pilots.eva   192.168.1.11
    asuka.pilots.eva  192.168.1.12
    sinji.pilots.eva  192.168.1.13

    上記のような身勝手ドメインといえども、きちんと設定すれば、自宅サーバーもイントラネットサーバーとしてドメイン名を用いて自在にアクセスできる。ただしあくまでイントラネット利用に限るが、ローカルサーバー上のリンクページをクリックして他のリアル・サーバーにアクセスした際、先方のアクセスログのリファラ記録には身勝手なローカルサーバー名が記録として残るようである。

    CentOSのBIND9の設定は手動設定が望ましい。というのも、CentOSの設定ではセキュリティ強化の観点からchroot機能を用いられていて、named.conf等の設定ファイルが/etc/から/var/named/chroot/etc/ 他に蜃気楼的に移動しているからである。
    /var/named/chroot/以下はサーバーのルートディレクトリの配置イメージであるが、root権限者でなければ見ることが許されない。そうしたセキュリティがかけられている。よってBIND9/DNSの設定を行う場合は、/var/named/chroot/etc/named.conf が設定ファイルとなる。


    /var/named/chroot/etc/named.confの例
    =====================================================
    //
    // BIND 9 簡易設定
    //
    // ローカルホストのリゾルバ。
    // キーボード操作によりホスト自身が参照する場合のDNSの定義設定
    view "localhost_resolver"
    {
        match-clients       { localhost; };
        match-destinations    { localhost; };
        recursion yes;    // インターネット内の様々なドメイン名参照を許可するという意味

        // RFC1912で定義される localhost, localdomainの定義ファイル。BIND9のパッケージに含まれているもの。
        include "/etc/named.def";

        // all views must contain the root hints zone:
        // rootservers.defはroot name サーバーのIPアドレスを記録したファイル。
        zone "." IN {type hint; file "/etc/rootservers.def"; };

        zone "pilots.eva" {
            type master;
            file "/etc/pilots.eva.db";
        };

    // ローカルドメインといえど、きちんと逆引き定義はするのが吉。
        zone "1.168.192.in-addr.arpa" {
            type master;
            file "/etc/1.168.192.in-addr.arpa.zone.db";
        };
    };

    // イントラネット接続クライアント向けのリゾルバ定義。
    // 以下はイントラネット内のクライアントPC(Windows/Mac等)がDNS参照する場合に応答する部分の記述。
    view "internal_resolver"
    {
        match-clients      { localnets; };
        match-destinations   { localnets; };
        recursion yes;    // インターネット内の様々なドメイン名参照を許可するという意味

        // all views must contain the root hints zone:
        // rootservers.defはroot name サーバーのIPアドレスを記録したファイル。
        zone "." IN {type hint; file "/etc/rootservers.def"; };

    // 以下にローカルドメインを定義するファイルの所在を記述する
        zone "pilots.eva" {
            type master;
            file "/etc/pilots.eva.db";
        };

    // ローカルドメインといえど、きちんと逆引き定義はするのが吉。
        zone "1.168.192.in-addr.arpa" {
            type master;
            file "/etc/1.168.192.in-addr.arpa.zone.db";
        };
    };

    //以下はローカル利用の場合は不要。
    //公開サーバーを設置する場合のドメイン定義ファイルの所在は以下に記述する。
    view  "external_resolver"
    {
        match-clients      { !localnets; !localhost; };
        match-destinations   { !localnets; !localhost; };
        recursion no;     // BIND9の公開サーバーはnoがお約束。DDoS攻撃の踏み台化の防止がその理由。

        zone "." IN {type hint; file "/etc/rootservers.def"; };

    };


    正引きファイル:/var/named/chroot/etc/pilots.eva.db の例
    =====================================================
    $TTL 1H
    @    SOA   ns1.pilots.eva.   root.pilots.eva. ( 
                            24
                            3H
                            1H
                            1W
                            1H )
           IN   NS   @
    @      IN   A    192.168.1.10
    dns    IN   A    192.168.1.10
    www    IN   A    192.168.1.10
    rei     IN   A    192.168.1.11
    asuka   IN   A    192.168.1.12
    sinji    IN   A    192.168.1.13


    逆引きファイル:/var/named/chroot/etc/1.168.192.in-addr.arpa.zone.db の例
    =====================================================
    $TTL 86400
    @  IN  SOA  ns1.pilots.eva. root.localhost (
          1 ; serial
          28800 ; refresh
          7200 ; retry
          604800 ; expire
          86400 ; ttk
          )

      IN  NS  ns1.pilots.eva.
    2IN  PTR  mac.pilots.eva.
    3IN  PTR  xp.pilots.eva.
    5IN  PTR  vista.pilots.eva.
    10IN  PTR  www.pilots.eva.
    11IN  PTR  rei.pilots.eva.
    12IN  PTR  asuka.pilots.eva.
    13IN  PTR  sinji.pilots.eva.


    正引き・逆引きファイルは本来、/var/named/とかに保存管理するのが通例である。ここでは、設定のし易さを考慮して同一ディレクトリで保存するように記述してある。CentOSの場合ならchroot機能が働いているので、/var/named/chroot/var/named/ が本来の保存場所。named.confのパス名では、/var/named/chroot/ のオフセットが暗黙省略されている。
    zone定義について、BIND8の時は

    dns    IN   A    192.168.1.10
    www    IN   A    192.168.1.10
    ikari     IN   A    192.168.1.11
    gendou.ikari     IN   A    192.168.1.11
    yui.ikari     IN   A    192.168.1.11
    shinji.ikari     IN   A    192.168.1.11

    等と、1レベル深いサブドメインを同一の定義ファイルで記述できたが、BIND 9で上記のような2レベル混在なドメイン定義を行うとエラーになるようだ。virtual host定義で用いるサブドメインの定義はサブドメインのレベル(深度)を考慮しなくてはならない。yui.ikariのような(.)付きのサブドメインは別ファイルに分けて定義すべきである。

    逆引きファイルはcgi開発前提ならきちんと記述しておくのが当然。また、クライアント機のIPもきちんと割り当て定義しておくとよい。ログの検証・確認などの場合に役立つはずである。







Copyright(C) Satoshi Hanji 1997-2014. All Rights Reserved.