ダイナミック DNS


2004/07/30

せっかくLinuxを使っているのだから、サーバを立ててみましょう。
サーバを立てるには、インターネットのどこかから、自分のコンピュータに接続出来るようにする必要があります。通常は、インターネットにつながっている サーバには、名前が付いています。そして、その名前は変わりません。たとえば、グーグルで検索するためには、http: //www.google.co.jp/ に接続しますよね。この「www.google.co.jp」という部分がコンピュータの名前(ホスト名)ですね。この名前が変わってしまうと、グーグル が使えなくなってしまいます。通常私たちはインターネットに接続するために、プロバイダに接続して、この名前をもらっています。ここで困ったことに、接続 するたびに違う名前になってしまいます。これでは、サーバとして使うには不便です。そこで、たとえ毎回違う名前になっても、同じ名前でアクセスできるよう にしてくれるのがダイナミックDNSです。

インターネットで使用される通信規約であるTCP/IPでは、IPアドレスと呼ばれる数値でコンピュータを識別します。人間は 「www.google.co.jp」という文字を使いますが、コンピュータの通信ではこの名前ではなく、IPアドレスと使うため、コンピュータに付けら れた名前とIPアドレスを相互に変換する仕組みが必要になります。その機能を持つのがDNSです。DNSに問い合わせを行うときには、nslookupか digを使います。"dig ホトス名"でホスト名をIPアドレスに変換したものを表示してくれます。ためしにやってみましょう。



$ dig www.google.co.jp

; <<>> DiG 9.2.1 <<>> www.google.co.jp
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20138
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.co.jp.              IN      A

;; ANSWER SECTION:
www.google.co.jp.       17      IN      A       66.102.7.147

;; Query time: 8 msec
;; SERVER: xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx)
;; WHEN: Sat Jul 31 23:57:37 2004
;; MSG SIZE  rcvd: 50



この結果から、www.google.co.jpのIPアドレスは、66.102.7.147ということが分かります。なので、「http://66.102.7.147/」としてもグーグルにつながります。


じゃ、自分のコンピュータにも名前を付けてあげればよいのですが、個人的に名前を付けても意味がありません。付けた名前を世界中のどこからでも、自分のIPアドレスに変換できるように登録する必要があります。これを無料でやってくれるサービスがいくつかあります。

例:私的DNS(MyDNS.JP)

登録は簡単です。登録が済んだら、自分のIPアドレスをDNSに教えるために、メールを受信します。指定されたメールサーバからメールを受信しようとすれ ば、自分のIPアドレスが自分で決めたホスト名として登録される仕組みです。一定の間隔でメールを受信するようにお使いのメーラで設定するのも良いです が、メーラが起動していない(誰もログインしていない状況など)と受信されませんので、あまり良い選択とはいえません。そこで、cron(クーロン)と呼 ばれる一定時間でコマンドを実行するデーモンにお願いしましょう。

cron を使って、一定間隔でメールを受信するために、fetchmailを使いましょう。fetchmailは、メールを受信してくれるコマンドで色々とすてき な機能があったりしますが、ここではPOPサーバから受信できれば良い+実際にメールはこないので、設定は簡単です。
HOMEディレクトリに下記のような「.fetchmailrc」というファイルを作っておけば、fetchmailと打つだけで受信してくれます。

$HOME/.fetchmailrc

poll mail.MyDNS.JP
     protocol pop3
     user mydns00000
     password yourpass


赤の太字の部分をご自分のIDとパスワードに置き換えてください。これでfetchmailを使ってメールを受信する準備が出来ました。試しに、実行してみましょう。下記のように表示されれば問題ありません。



$ fetchmail
fetchmail: アカウント mydns00000 , サーバ mail.MyDNS.JP 宛にメッセージは届いておりません。




メールを受信する準備が出来ましたので、cronに実行してもらえるように登録します。登録するためには、「crontab -e」と打ってください。cronを実行する権限がない場合は、rootで登録しましょう。rootは必ずcronが使えます。
「crontab -e」と打つとエディタが起動しますので、次のように打ち込んでください。

crontab -e

*/20 * * * * fetchmail > /dev/null 2>&1


この例では、20分ごとにメールを受信します。最後の「 > /dev/null 2>&1」の部分はfetchmailを実行するたびに、cronからメールが送られてくるのを防ぐためのものです。「MAILTO= ""」と1行目に書いても同じ事になります。
さぁ、これでサーバを立てる準備が出来ました。dig xxx.mydns.jpとして自分のIPアドレスが引けるか試してみましょう。(メールを受信してから5分程度末必要があるようです)

うまくいったら、サーバにこの名前を名乗るように教えてあげましょう。

/etc/sysconfig/network

NETWORKING=yes
HOSTNAME=xxx.mydns.jp

いままで、味気ない localhost.localdomain だったのが、なんか一人前のサーバっぽくなりましたね。


戻る