Rough English Here
 

chmodx.dyndns.orgの秘密

10/18, 2003: 更新停止
1/6,2002: リンク先がつぶれてたのを削除。
6/8,2001: ちょこっと加筆。「そそう家の人々」へのリンク追加。
6/2,2001: cronを使ったチェックの記述を更新
4/18,2001: ページ公開
[008602]

内容が古くなったため、今後このページは更新されません。ご了承下さい。

"chmodx.dyndns.org"は自宅のノートPCがWWWサーバになっています。
どういうことかというと、ADSLを使って自宅のノートPCを常時接続しているのです。

注: 現在はプロバイダをYahoo!BBに変更し,ドメインも "paken.org"を取得しています.このため,以下の内容は現状とは合わなくなっています.


ネットワーク構成

ADSLは日本テレコムのJ-DSLパーソナルに加入してODNにつながっています。 折角の常時接続なのですぐにでもWebサーバを置きたいところですが、 JDSLパーソナルではstaticなグローバルIPはもらえません。 そこで、無料のDynamic DNSサービス (http://www.dyndns.org) を利用して、DNSの"chmodx.dyndns.org"のエントリをIPアドレスが変わる度に自動 的に更新するようにしています。

ここでは実際にWWWサーバを公開するまでの手順について説明します。

Dynamic DNSに登録する

"dyndns.org"のページで ユーザ登録をします。"Members NIC"のページでとても簡単に登録できます。
登録が完了したらLoginして、Dynamic DNSの登録をします。 ホスト名("chmodx.dyndns.org"など。"dyndns.org"の部分は数種類ある中から選択できます) /ADSLモデムのインターネット側IPアドレス(自動的に表示されます)を指定します。 "Enable Wildcard"と"Mail Exchanger"はとりあえず空欄でいいでしょう。

これでDNSへの登録は完了です!すごく簡単ですね。うまく登録できたかどうか、試してみましょう。

# nslookup chmodx.dyndns.org
Server:  ns5.odn.ne.jp
Address:  143.90.130.165

Name:    chmodx.dyndns.org
Address:  61.116.161.244

(IPアドレスが登録したものと同じであればうまく登録されています)

実際にDNSに登録されるまで数分かかるかもしれません。

ここではDynamic DNSの設定を手動で行いましたが、モデムのIPアドレスは 時間がたつと変わってしまいます。そこで後述する方法で自動的に設定する ようにします。

WWWサーバを用意する

LAN側にWWWサーバを用意します。サーバはなんでもいいのですが、僕はノートPCに Vine Linux 2.1.5をインストールしてApacheを立ち上げました。Vineだとほとんど 設定することなく使えるので楽チンです。ただ、ハードディスクが小さかったので 不要なものはインストールしないようにしました。サーバ用途だとX Window System すらなくても大丈夫ですね。

ノートPCを使った理由は、サイズが小さいのはもちろんのこと、消費電力が小さく バッテリがついているので停電に強いためです。

Apache以外にも、SambaでLAN内のWindowsマシンとファイルを共有したり、 SSHサーバを立ち上げて外部から安全にloginできるようにしておくと便利です。 LAN内で正常に動作することを確認しておきましょう。

ADSLモデムでNATの設定をする

インターネット側にWebサーバ(ここでは'kappa')を公開するためには、 ADSLモデムでNATテーブルの設定をして、特定のポート(ここではWWW,SSH)だけ についてインターネット側からのパケットをLAN内の特定のマシン(ここではkappa) に通すようにします。
'kappa'のIPアドレスは192.168.1.4なので以下のように設定しました。

No.LAN側アドレスWAN側アドレスプロトコルLAN側ポート番号WAN側ポート番号優先度
1 192.168.1.4 mywanif TCP www www 1
2 192.168.1.4 mywanif TCP/UDP 22 22 2

パケットフィルタリングの設定をしている人は、"WWW"の設定を「通さない」から「通す」に 変更してください。

これでインターネットに接続された世界中のコンピュータから、 あなたのPCにアクセスできるようになります! セキュリティには十分に気をつけましょう。不要なポートは決して開かないように するのはもちろんのこと、サーバマシンでも不要なサービスはすべて停止し、 定期的にログを監視します。セキュリティパッチが出ていないかどうかまめにチェック することも大切です。

さてここで、外部から本当にアクセスできるかどうかチェックする必要があります。 これには2通りの方法が考えられます。

  1. 外部のPCからアクセスしてみる。
    学校などからアクセスしてみたり、友達に見てもらう、 という手が考えられますがちょっと面倒ですね。
  2. プロバイダにダイヤルアップ接続して、アクセスしてみる。
    ADSLを通さずにインターネットに接続すれば、外部からアクセスするのと同じことになります。
うまくいったでしょうか?ここまでくれば設定はあと少しだけです。

自動的にDynamic DNSの設定を更新する

ADSLモデムに割り当てられたglobalなIPアドレスは変化してしまうため、 IPアドレスが変更されたことをチェックしてDNSの登録を更新する必要があります。 更新を行うソフトウェアはdyndns.orgの"Dynamic DNS"-"Clients"のページに多数登録されています。
ここではこの中の一つ"ipcheck"を使ってみることにします。 (ipcheckのページ: http://ipcheck.sourceforge.net/)
ipcheckは"ipcheck.py"というシンプルなPythonスクリプトで、コマンドラインから簡単に使えます。

まず、"ipcheck.py"に実行権を与えておき、以下のように引数を与えると、 checkip.dyndns.orgにアクセスしてIPアドレスが変更されていないかどうかチェックし、 必要があれば設定を更新してくれます。

 > chmod +x ipcheck.py
 > ./ipcheck.py --makedat (datファイルを作ります。新しいバージョンで必要みたいです)
 > ./ipcheck.py -r checkip.dyndns.org [ユーザID] [パスワード] [ホスト名]
 (例:./ipcheck.py -r checkip.dyndns.org komoriya xxxx chmodx.dyndns.org)

"cron"を使って自動的にチェックするように設定するといいでしょう。 以下の内容で/etc/cron.d/ipcheckを作成すれば、15分おきにチェックしてくれます (dyndnsのサーバに負荷をかけるを避けるため、15分未満には設定しないでください)。 また、長期間(30日以上)IPアドレスが変化しないとdyndnsの登録更新が行われないため、 登録が取り消されてしまいます。そこで2行目で月2回強制的に更新するようにしています。

 # ipcheck updates DynamicDNS entry
 */15 * * * *    root    (cd [ipcheckがあるディレクトリ]; ./ipcheck.py -r checkip.dyndns.org [ユーザID] [パスワード] [ホスト名])
 6 6 1,15 * *    root    (cd [ipcheckがあるディレクトリ]; ./ipcheck.py -fr checkip.dyndns.org [ユーザID] [パスワード] [ホスト名])

おわりに

これで安価なADSLサービスと古くなったPC1台だけで自宅に公開サーバを 構築することができました。

サーバを好き勝手にできるので、CGIを置くのも自由ですし、Apache+PHP+PostgreSQLで Webデータベースアプリケーションを構築、なんてことも可能です。夢がひろがるなぁ。

ただし、インターネット上にサーバを公開した時点で、あなたのPCが悪用される危険性が 飛躍的に高まります。自分が被害をうけるだけならまだしも、第三者へのアタックの踏み台に されることもありえます。セキュリティ対策の努力を惜しまないようにしましょう。


Copyright © 2001-2002 KOMORIYA Takeru リンクはご自由に (参考) →Linux Lifeにもどる