このページでは自宅サーバーを公開サーバーとするためのダイナミックDNSの利用に必要なDiCEの設定方法について初心者向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
CentOS4.8インストール後の設定

インストール後の設定

ログインシステムの変更

ユーザーアカウントの作成

X-Windowと通信の確認

簡易テキストエディタ"nano"

ネットワークの詳細設定

日本語文字セットの設定

sshクライアントの導入

yumによるアップデート

不要デーモンの停止

公開のためのルーター設定

ダイナミックDNSの登録と設定

ダイナミックDNSの自動更新


ダイナミックDNSの自動更新

私的DynamicDNS(MyDNS.JP) を利用して自宅の サーバー機 の 名前解決 を行う場合、 グローバルIPアドレス の情報を DNSサーバー に送る手段として、

1.メール受信の仕組みを利用する。

2. FTP 接続の仕組みを利用する。

3. HTTP のベーシック認証の仕組みを利用する。

の三つの方法が用意されています。

ここでは ダイナミックDNS で最も一般的に利用されている、HTTPのベーシック認証を自動で行う DiCE という アプリケーション を利用した方法を説明します。

DiCEのインストール

DiCE は、必ずしも 構築中のLinuxサーバー 上で稼動させる必要はありません。

仕組みを考えてもらえばお分かりと思いますが、実際には、同じ サブネット の中にある別の ホスト に インストール して、そのホストで稼動させてもOKです。

しかしながら、 グローバルIPアドレス はいつ何時変化するかわかりませんから、DiCEは常時稼動させておかなれけば充分に機能しません。

従って、常に動作している 構築中のLinuxサーバー に直接インストールするのが正しい方法といえます。

プログラムのダウンロード

まず、 構築中のLinuxサーバー の実機に、任意の ユーザーアカウント で ログイン して、 X-Window を起動してください。

[tanaka@web1 ~]$ startxEnter

X-Windowが起動したら、 Webブラウザ "FireFox" を起動し、アドレスバーに http://www.hi-ho.ne.jp/yoshihiro_e/dice/linux.html とタイプして Enter キーを押してください。下のように"DiCE for Linux"のページが表示されます。

ページの中から "Download!!" をクリックすると、次の ダイアログ が表示されますので、 "ファイルを保存する(S)" にチェックを入れて、 OK ボタンをクリックします。

CentOS4の "FireFox" はせっかちで、処理選択のダイアログが表示されるときには、もうダウンロード処理を始めています。
DiCEはデータ量が小さいので、ダウンロードマネージャが開く頃にはもうダウンロードは終わっているかもしれません。
ダウンロードマネージャが開いたときは、クローズボックスをクリックして閉じてください。
実際にダウンロードが終わっているかどうかは、デスクトップ上のファイルを確認してください。

ダウンロードが終了したら、 "FireFox" のウインドウを閉じ、デスクトップ上にダウンロードした "DiCE" のインストーラプログラムがあることを確認してください。

確認が終わったら、X-Windowを ログアウト して構いません。

"DiCE" のインストールと設定は、 CUI 操作で行います。

"DiCE"のインストールと設定

インストール 作業と設定作業は、 構築中のLinuxサーバー を直接操作しても、リモートで操作してもかまいませんが、ここでは SSHクライアント でリモート ログイン しているケースで説明します。

プログラムのインストール先はあまりこだわる必要はないのですが、一般的な LinuxOS の作法に従って "/usr/local/bin/" 以下にインストールします。

まず、 su コマンド でユーザーアカウントを "root" に変更し、 ダウンロード した "DiCE" の アーカイブ を cp コマンドで "/usr/local/bin/" 以下にコピーします。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cp /home/tanaka/Desktop/diced01913.tar.gz /usr/local
/bin/
Enter
[root@web1 ~]#

次に、 cd コマンドで カレント ディレクトリを "/usr/local/bin/" に移動し、 "DiCE" のアーカイブを tar コマンドで解凍します。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cp /home/tanaka/Desktop/diced01913.tar.gz /usr/local
/bin/
Enter
[root@web1 ~]# cd /usr/local/bin/Enter
[root@web1 bin]# lsEnter "/usr/local/bin"の中を確認します。 lsコマンドの説明
diced01912.tar.gz
[root@web1 bin]# tar -xzf diced01912.tar.gzEnter 解凍のコマンドです。
[root@web1 bin]# ls -lEnter "/usr/local/bin"の中を確認します。
合計 1076
drwxrwxr-x 3 root root  4096 9月 10 2005 DiCE
-rw-r--r-- 1 root root 1093163 9月 4 20:53 diced01912.tar.gz
[root@web1 bin]#

"DiCE" は、解凍すればインストールは終わりです。次に設定を行いますが、対話形式になっていますので非常に簡単です。

"DiCE" は、解凍すればインストールは終わりです。次に設定を行いますが、対話形式になっていますので非常に簡単です。

ただし、DiCEの対話プログラムは "EUC" でなければ文字化けしてしまいますので、TeraTermProの "送受信する文字コード" を "EUC" 以外で使用してるときは、一時的に "EUC" に変更しなければならない点に注意してください TeraTermProについて 。

設定プログラムを起動して、以下のように作業していきます。

[root@web1 bin]# cd DiCE/Enter カレントディレクトリを"DiCE"に変更します。
[root@web1 DiCE]# ./dicedEnter 設定プログラムを起動します。 パスが通っていないディレクトリにあるファイルの実行方法
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

:addEnter DiCEは複数の設定(イベント)を同時に扱うことができますが、"add"は「これから新規に設定(イベント)の追加を開始する。」というコマンドです。
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>MyDNS.JPEnter MyDNS.JPを指定します。
-------------------------------------------------
<< MyDNS.JP >>
URL: http://www.mydns.jp/
*** 情報 ***
ドメイン名、ホスト名についてはマスターID(ユーザー名)にて管理されています。
IPアドレスはサーバー側で自動検出します。
(これらは入力しても無視されます)
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
>obenri.comEnter 名前解決の対象となるドメイン名を入力します。
=================================================
ホスト名を入力してください
(P)戻る
>*Enter 独自のドメインの場合は"*"を入力します。
=================================================
ログインユーザ名を入力してください
(P)戻る
>  Enter  ※My.DNS.JPから送られてきた"MasterID"を入力します。
=================================================
ログインパスワードを入力してください
(P)戻る
>  Enter  ※My.DNS.JPから送られてきた"Password"を入力します。
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
>Enter IPアドレスは自動検出しますから何も入力しません。
=================================================
このイベントに題名を付けてください
(P)戻る
>obenri01Enter 自分で整理しやすい「設定の名前」をつけます。
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
>5Enter 構築中のLinuxサーバーでIPアドレスの変化を監視して、変化したときにMyDNS.JPのサーバーに情報を送信するようにします。"5"を選択します。
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎  (1)14日毎 (2)21日毎 (3)28日毎
(4)35日毎 (5)56日毎 (6)84日毎
(P)戻る
>0Enter  My.DNS.JPは、30日間情報が送信されないと登録が抹消されてしまいます。"0〜3"ならばどれでも構いません。
=================================================
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
>yEnter 現時点では無効にしておいても意味がありません。有効にします。
=================================================
イベントを保存しますか? (Y/N)
>yEnter もちろん保存します。
イベント"obenri01"を保存しました
=================================================
:listEnter 設定(イベント)の一覧を表示するコマンドです。(No.)の右横に"*"が表示されている設定が「有効になっている」ものを表します。
(No.) (イベント名)       (スケジュール)      (次回予定)
 0 * obenri01         IPアドレス変化時 (7日毎) 11/09 23:18
:quitEnter 対話型設定プログラムを終了します。
[root@web1 DiCE]#

以上で接続ための設定は完了しました。

ところで、お使いの環境によってはこのままでも良いのですが、利用するDDNSや通信環境によってはDiCEの基本的な設定を修正する必要があるかもしれません。引き続きDiCEの基本設定を行いましょう。

そのまま "setup" を実行します。

:setupEnter DiCEは複数の設定(イベント)を同時に扱うことができますが、"setup"でこれらに共通する設定を行います。
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
>nEnter 通常はそのまま自動検出を選びます。(※1)
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>nEnter 名前解決の対象は グローバルIPアドレス です。
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>yEnter テストします。
検出IPアドレス>218.217.212.***
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>nEnter 前のステップできちんと検出されたら次へ進みます。
-------------------------------------------------
IPアドレスをチェックする間隔を指定してください(分)
設定可能範囲は5分以上です
<現在:10>
(N)変更しない (P)戻る
>nEnter 通常は10分でOKです。(※2)
=================================================
DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります
前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して
ください(分) 設定可能範囲は10分から1440分です
<現在:60>
(N)変更しない (P)戻る
>nEnter ご利用のDDNSにあわせて適切に設定します。(※3)
=================================================
設定を保存しますか? (Y/N)
(P)戻る
>yEnter 保存します。
設定を保存しました
=================================================
:quitEnter 対話型設定プログラムを終了します。
[root@web1 DiCE]#

※1 は、自宅のグローバルIPアドレスを調べるための手段の選択です。この手段を使って ※2 で設定した時間間隔で自宅のグローバルIPアドレスの変化を監視し、DDNSサーバーにレコードの修正を要求するわけです。

リストは テキスト ファイルなので内容は cat コマンド や less コマンドなどで見ることができます。

ここで (0) 自動検出 を選択すると、DiCEであらかじめ用意されているグローバルIPアドレスの通知サーバーリスト "/usr/local/bin/DiCE/ipcheck.dat" を利用して検出を試みます。

何らかの理由でこれらの通知サーバーが利用できないときは、次の検出テストでグローバルIPアドレスが表示されませんから、こういう場合は別の手段が必要になります。

(1) ローカルのネットワークアダプタから検出 は、 構築中のLinuxサーバー の NIC に設定されている IPアドレス を利用する選択肢ですが、今回のモデルでは プライベートIPアドレス である "192.168.100.11" が設定されていますからこれを利用することはできません。

早い話、 (0) 自動検出 は予め "ipcheck.dat" に記述されている外部スクリプトを利用しているに過ぎません。

(2) 外部のスクリプトから検出 を選択した場合、

IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
>2Enter
-------------------------------------------------
スクリプトのURLを入力してください
<現在:dee.dws>
(N)変更しない (P)戻る
>
IPアドレスの通知サーバー :一般的にはインターネット空間に設置してあり、 HTTP の要求元にその要求元のグローバルIPアドレスを教えてくれるサーバーを指します。このお便利サーバー.comにもオマケ付きで設置してあります あなたのホスト情報を表示 。

となりますので、ここに具体的な通知サーバーの URL を入力することになります。もしもご利用のDDNSのサイトが通知サーバーを公開している場合は、そのURLをタイプしてください。そして次の検出テストのステップできちんとグローバルIPアドレスが表示されればOKです。

もしも適当な通知サーバーが利用できない場合、例えば自分が契約している ISP などからホームページの公開スペースが借りることができて、なおかつそのスペースで任意の CGI や PHP が利用できるのであれば、これを通知サーバーとして利用することができます。

ipsend.cgi の先頭行のPerlの パス は、お使いのサーバーの環境に合わせて適宜書き換え、実行属性をセット ファイルの実行属性について してお使いください。

IPアドレスの通知サーバーといっても大袈裟に考える必要はありません。 Perl が利用できる場合は ipsend.cgiアーカイブ を、PHPが利用できる場合は ipsend.phpアーカイブ を、それぞれが実行できるディレクトリに、実行可能な名前で設置します。設置の方法はそれぞれのISPのホームページスペース運用マニュアルを参考にしてください。

そして設置したファイルのURLをここに入力すればOKです。

※2 のチェック間隔は、もちろん短ければ短いほどIPアドレスの切り替わり時の「アクセス不可」の時間を短くすることができます。

「アクセス不可」の時間は通常のDDNSの利用で20〜30分程度ですが、仮に ※2 のチェック間隔を デフォルト の10分から最短の5分に変更しても、計算上はこれが15〜25分に短縮されるだけです。

こういう「取るに足らないこと」がどうしても気になる方は、そもそもDDNSを使うべきではなく、固定のIPアドレス契約にすることをお勧めします 固定のIPアドレス契約について 。

つまりIPアドレスの切り替わりが一日に一回程度しか起こらないとすると、短縮できる5分という時間は全体の0.3%に過ぎませんから、チェック間隔を短くして得られる効果と、 サーバー機 と通知サーバーへ負荷の増大を考えれば、このチェック間隔の短縮があまり意味を持たないことはお解りと思います。

※3 は、DDNSサーバーに大して頻繁にIPアドレスの変更要求を行わせないための措置です。

DDNSの意味をよく理解できていないユーザーの中には「できるだけアクセス不可の時間を無くしたい!」とばかりに頻繁にIPアドレスの変更要求を行う方がいて、DDNSサーバーの負荷を無駄に増やしてしまうケースがあります。

DDNSサーバーを管理する側からすれば、こういう過剰なアクセスは他のユーザーの迷惑になりますから、強制的にレコードを削除して対処せざるを得ません。

しかし例えば自宅の ルーター の設定変更を繰り返したり。通信の不具合などでインターネット回線が頻繁に切断されてしまうような場合、自宅の WAN 側の ゲートウェイ はコロコロ変わることになりますから、上と同様の「IPアドレスの過剰変更要求」現象が起こってしまいます。これを「意図的なIPアドレスの過剰変更要求。」と誤解され、レコードを削除されてはマズいわけです。

もちろんそういう状況になると「アクセス不可」の時間が多くなってしまいますが、それは仕方のないことなのであきらめるしかありません。

ここで ※3 をデフォルトの 60分 に設定しておけば、一時間に一回以上の変更要求は行われなくなり、「不可抗力によるIPアドレスの過剰変更要求。」が行われなくなるというわけです。

実際にどの程度のタイミングでIPアドレスの変更要求を行って良いかはご利用のDDNSによって異なりますから、確認のうえ適宜設定を行ってください。わからないときはデフォルトのままで問題はないはずです。

なお、DiCEの詳しい使い方は、設定プログラムを起動して ? Enter で調べることができます。

[root@web1 DiCE]# ./dicedEnter
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

:?Enter
*** 起動オプション ***

diced [-s|-d|-h|-e] [-b] [-l]

-s      起動と同時に開始します
-d      起動と同時にバックグラウンドで開始します
-h      コマンドオプションを表示します
-b      イベント実行時にビープ音を鳴らします
-l      ログを作成します
-e 指定のイベントを実行して終了します


*** コマンド一覧 ***

exit       DiCEを終了します
start      DiCEを開始します
startd      DiCEをバックグラウンドで開始します
setup      DiCEの環境設定を行います
list       登録済のイベント一覧を表示します
add       イベントを追加します
ed[it] <番号>  イベントを編集します
del <番号>    イベントを削除します
en[able] <番号> イベントを有効にします
dis[able] <番号> イベントを無効にします
ev[ent] <番号>  イベントの情報を表示します
ex[ec] <番号>  イベントを今すぐ実行します
logcr      ログをクリアします
:

操作がわからなくなったときは参照してみてください。

このページの先頭へ↑

DiCEの稼動

"DiCE"の自動実行の設定

"DiCE" は、実行ファイル "/usr/local/bin/DiCE/diced" を、 "-d" オプションで起動すると デーモン として稼動させることができます。

また同時に、 "-l" オプションを付けると、 "/usr/local/bin/DiCE/log/" 以下に ログ を記録することができます。

従って一般的には、

"/usr/local/bin/DiCE/diced -d -l"

で起動すると良いでしょう。

ただ、 構築中のLinuxサーバー を 公開サーバー として使用するのであれば、DiCEは常に稼動させておかなければなりません。

従ってDiCEは、 ホスト機 の電源を入れたときに自動的にデーモンとして動作するように設定しておきましょう。そうしておけば、停電の後でも、ホスト機が自動的に復旧したときDiCEも稼動することになります。

CentOS4 ではこのDiCEのように、単純にファイルを実行させるだけで良い アプリケーション (デーモン)をホスト機の起動時に実行させるには、 "/etc/rc.local/" に登録しておきます。

登録は、 nano エディタで"/etc/rc.local"を編集して行います。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# nano /etc/rc.localEnter

↓

デフォルトの/etc/rc.conf
デフォルトの"/etc/rc.conf"

↓起動コマンドを書き加えます。

/usr/local/bin/diced -d -lを書き加える
"/usr/local/bin/diced -d -l"を書き加える

"/etc/rc.local"を編集が終わったら保存してnanoエディタを終了してください。

そして、ホスト機の起動時にきちんとDiCEが稼動するかどうか、 reboot コマンド で再起動して確認してみましょう。

"DiCE"の動作チェック

DiCEの設定が終了して ホスト機 を再起動したら、DiCEの デーモン である "/usr/loca/bin/DiCE/diced" がシステム上で稼動しているかどうかを確認しましょう。

動作確認は ps コマンド で行います。任意のユーザーで ログイン して、次のように確認してください。

[tanaka@web1 ~]$ ps ax | grep dicedEnter grepコマンドの説明
  "ps ax"の結果から"diced"を含む行だけ表示します。
 1223 ?    S   0:16 /usr/local/bin/DiCE/diced -d -l ←稼働中の"diced"。
 1468 tty1   S   0:00 grep diced ←実行中のこのコマンド自身。
[tanaka@web1 ~]$

もし、dicedデーモンが動作していることが確認できなかったら、もう一度上の "/etc/rc.local" の中の記述と、dicedの パス 、オプションスイッチなどが正しいかどうかをチェックしてください。

dicedデーモンの動作が確認できたら、次にdicedの動作 ログ を確認します。

dicedは"-l"オプションで実行すると、 "/usr/local/bin/DiCE/log/" 以下にログファイルを生成します。

[tanaka@web1 ~]$ cd /usr/local/bin/DiCE/log/Enter cdコマンドの説明
  ↑カレントディレクトリを"/usr/local/bin/DiCE/log/"に移動します。
[tanaka@web1 log]$ ls -lEnter lsコマンドの説明
  ↑カレントディレクトリを一覧します。
合計 8
-rw-r--r--  1 root  root    569 9月  4 11:16 events.log
-rw-r--r--  1 root  root    134 9月  4 11:16 id000000.log
[tanaka@web1 log]$

ここに生成されている "events.log" には、dicedが稼動を始めてからの動作記録が、 "id??????.log" には現在の状況がそれぞれ記録されています。これらが、

最後の行で、catの出力結果と プロンプト "[tanaka@web1 log]$"がくっついているのは、"id000000.log"の最後に改行コードが入っていないためです。
これは異常なことではなく、ままあることですから気にする必要はありません。
[tanaka@web1 log]$ cat events.logEnter catコマンドの説明
  ↑"events.log"の内容を表示します。
○ 9/4 23:10 デーモン動作を開始しました
○ 9/4 23:10 IPアドレスが変わりました >218.218.238.???
★ 9/4 23:10 にobenri01が実行されました
  IPアドレスを更新しました
○ 9/8 11:24 IPアドレスが変わりました >210.133.35.???
★ 9/8 11:24 にobenri01が実行されました
  IPアドレスを更新しました
[tanaka@web1 log]$ cat id000000.logEnter
  ↑"id000000.log"の内容を表示します。


IPアドレスの更新をしました!!

masterid = ??????????
login_status = 1
REMOTE_ADDR = 210.133.35.??? ←このホストが所属するサブネットのIPアドレスです。
DAYTIME = 2006/9/8 11:24:16[tanaka@web1 log]$

のようになっていれば設定、稼動はうまくいっています。

ちなみにこの状態は WAN 空間上で、

"*.obenri.com=210.133.35.???"

という 名前解決 が行われていることを示しています。

ここまで確認ができたら、 DDNSの動作確認方法について で実際に名前解決が継続して行われているかどうかをチェックしてみましょう。

もし、 "events.log" の内容が、

▲ ??/?? ??:?? にobenri01の実行に失敗しました

や、

Error: ユーザー名(マスターID)またはパスワードが無効です

あるいは、 "id??????.log" の内容が、

データベースが混雑しているか、パスワードが違います!?

のようになっている場合は上で行った設定のどこかに誤りがありますのでもう一度内容を確認し、再設定してください。

このページの先頭へ↑

DiCEで複数のドメイン名を扱う

"DiCE" は複数のイベントを設定可能で、それらを異なる条件で並行して運用することができますから、もしも複数の ドメイン名 をお持ちで、それぞれを ダイナミックDNS に登録している場合でも、簡単に利用することができます。

CentOS5で
サーバー構築なら
これがベストかな?
↓

上で説明した"DiCEの インストール と設定"、更に自動実行実行の設定が済んでいれば、以下のように新しいイベントを作成して追加し、既に有効になっているイベントと並行して稼動させることができます。

[root@web1 DiCE]# ./dicedEnter 設定プログラムを起動します。 パスが通っていないディレクトリにあるファイルの実行方法
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

:addEnter
       .
       .
 利用するダイナミックDNSの種類にあわせて設定を行います。
       .
       .


=================================================
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
>yEnter
=================================================
イベントを保存しますか? (Y/N)
>yEnter
イベント"obenri01"を保存しました
=================================================
:listEnter 設定(イベント)の一覧を表示するコマンドです。(No.)の右横に"*"が表示されている設定が「有効になっている」ものを表します。
(No.) (イベント名)       (スケジュール)      (次回予定)
 0 * obenri01         IPアドレス変化時 (7日毎) 11/09 23:18
 1 * ugegege01        IPアドレス変化時 (7日毎) 11/09 24:08
:quitEnter
[root@web1 DiCE]#

これで複数のドメイン名の自動更新が設定されました。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System