T-comで おうちインターネットサーバー構築

T-com ADSL回線を使って自宅にインターネットサーバーを構築する おうちインターネットサーバー構築計画 です。 我家では上りのリンク速度は900Kbps以上あるので、十分使える速さです。

ダイナミックDNSを使って kitaguchi.ddo.jp ドメインを立ち上げました。 おかげで [email protected] のような覚えやすい家族専用のメールアドレスが作れました。

このサーバーでの私のホームページは http://kitaguchi.ddo.jp/ です。

このページでは、ADSLモデムルータTE4121Cに行うIPフォワーディングと静的NAT設定などのテクニックも同時に紹介します。



はじめに

ADSLなどのブロードバンドネットワークでインターネット常時接続環境が当たり前になってきました。 そうなるとユーザーの次なる欲求は「インターネットサーバーを自前で持ちたい。」に決まっています。 ところでインターネットサーバーを自宅に立ち上げるのは割と簡単ですが、サーバーというのは24時間電源ONしたままにする必要があります。 ここで問題が出てくるのです。

そうです・・・ワイフの冷たい視線です・・・電気代がもったいないなどと...。

これにはどう対処するか・・・ハードディスクなどの振動音を発するものや、LEDがピカピカなんていうのは御法度です。 電源が入っていないように見えて、それも目立たないハードが必要です。 「ハンドヘルドノート」「ぷらっとほーむのOpenBlock」「WEBくん」を検討しました。 「WEBくん」は設定をブラウザからでき、それほどコンピュータの知識がなくてもそれなりに動くと思われます。 一般ユーザーには Linuxの設定などほとんど不可能に近いと思います。 でも初心者になるほどインターネットサーバーを持ちたいという欲求が強いと思います。 これを解決する「WEBくん」のような商品がここ数年は絶対に伸びると思います。 それも急激に。



サーバーマシン

サーバーマシンは「WEBくん」です。 台湾の旧正月の影響で入手に時間がかかっていたのですが、2002年3月12日に送られてきました。 2月に注文して3月中旬まで待った代わりに標準64MBメモリを128MBにして同一値段で供給してくれました。 ウレシイ!!!

広島の アドバンス・ギア が製造している WEBくん です。 非常にコンパクトです。 これだけでインターネットサーバーが構築できます。 これ以外に他に何も要らないというのがウレシイ。 値段は 79,800円と手頃ではないけれど手間暇を考えると十分納得できる価格です。 通販のみの販売です。 この写真は 念写 で撮りました。

256MBのCFということでユーザーエリアが170MBですが、Webサーバーとメールサーバーを主体とした個人ベース(ファミリーベース)の用途なら十分な容量だと思います。 一般に結構良いサービスのプロバイダでもWebエリア5MB、メール容量5MBくらいですから、これに比べたら17倍もの容量を確保できるのですから。 しかも自分のサーバーですからメールアカウントなんか無制限に作れます。 MLサービスも自前でやることができます。 こういうことを勘案するとレンタルサーバーに月額1万円払うより自前サーバーを持ったほうが絶対コストパフォーマンスが良いです。 WEBくん代なんか1年以内で回収できてしまいます。

私は WEBくんとの付き合いの初期段階では手元に置くことで運用しますが、最終的な定常的運用では屋根裏に設置します。 火災などの危険性を考えると消費電力6WというのはADSLモデムの消費電力より少ないので、危険度は全然低いと思っています。



ダイナミックDNS

世の中にいろいろあるダイナミックDNSサービスで「無料」「Aレコード」「MXレコード」をキーに探すと Dynamic DO!.jp がヒットしました。 ここで私は「kitaguchi.ddo.jp」というドメインを取得しました。

最初は 家サーバープロジェクト を利用したのですが、ここは丸1日サービスを停止していたり、数日間もサービスの機能ダウンを繰り返していますので、使うのを断念しました。 私の評価は×です。

WEBくんの開発メーカであるアドンスギアからも Dynamic DO!.jp ほうが評価が高いとのコメントをもらいました。 私も調べましたが、通常のダイナミックDNSサービスの他にURL転送機能があるので障害時の対応に安心感があります。



WEBくん設定

2002年3月25日、WEBくん設定用の「Web Toll」のバージョンが上がり「ver2.0w」となりました。 画面デザインが大きく変わったので画像を入れ替えました。

WEBくんへの設定は超シンプルですが通常の使い方では十分だと思います。 あまり UNIXやネットワークの知識がなくても設定ができますが、やはりそれなりに知識は必要になってきます。 WEBくんではネットワーク的なセキュリティ(IPフィルタリングなど)がほとんど考慮されていないので、このセキュリティをルーター設定で稼ぐ必要があります。

WEBくんを設定するにはブラウザから「http://192.168.1.200:6001」として設定画面を呼び出します。 最初にこの「TOP」画面が出てきます。 左側がメニューで右側が設定画面です。 この画面で「アップグレードサーバー」へ接続することができます。 「アップグレードサーバー」では各種ソフトの更新が行えます。 当然ですが、インターネット接続しておく必要があります。


「ユーザー管理:追加」画面です。 ここでは必要なユーザー分だけユーザー登録します。

「ユーザー管理:一覧/変更」画面です。 ユーザー情報をメンテナンスします。

「サーバー管理」画面です。 named, apache, ftp, telnetサーバーの動作を設定します。 「システム起動時の状態」でブート時に稼動させるかどうかを設定します。 「稼動状況」で現状の稼動状況が判ります。 噛み合っているギアのイラストがクルクル回っていると稼動中です。 「設定選択」で停止/再起動をできます。

このWEBくんではセキュリティの設定ができないようです。 よってセキュリティはルーターの設定で確保すると同時に、FTPやtelnetは必要時以外は停止させておいたほうが良いと思われます。

「ネット設定変更」画面です。 このWEBくんでは唯一ネット機器らしい設定項目です。 ダイナミックDNSの Dynamic DO!.jp を使った場合の設定です。 私の場合、「kitaguchi.ddo.jp」ですから「ホスト名:kitaguchi」「ドメイン名:ddo.jp」とするのが正しいのですが、こうすると ddo.jp が正しく正引きできなかったので、「ホスト名:www」「ドメイン名:kitaguchi.ddo.jp」としました。 この場合、Webホームページは「http://kitaguchi.ddo.jp/」となります。 「http://www.kitaguchi.ddo.jp/」はアクセス不可です。

「システム」画面です。 WEBくんの再起動・停止ができます。

WEBくんは UNIXマシンなので、この画面で停止等をさせないとカーネルパニックになるかもしれませんよ。 注意しましょう。 他に時刻の表示と変更もできます。



TE4121Cの設定

ホームページとメールをインターネット公開するために TE4121C を設定します。
  1. TE4121C が T-com に常時接続されるようにします。 TE4121Cの「基本設定(接続先の設定)」にある「PPP自動接続」を「常にする」に設定します。



  2. ホームページの web は http(www)ポート(ポート番号:80)、メールは pop3ポート(ポート番号:110)、smtpポート(ポート番号:25)を使います。 これらのポート番号の通信を WAN(インターネット)から LAN 内の WEBくんに通す設定が必要です。 TE4121Cの「NATアドレス・ポート変換設定」で www, pop3, smtpを WEBくん(IPアドレス:192.168.1.200)に通します。

    (注)UNIXでいうポート番号とはアプリケーションソフトに対応する番号と考えてよいです。



  3. IPフィルタリング設定をします。 TE4121Cの「IPフィルタ設定」で行います。 No.1〜6で www, pop3, smtpポートを外部から起動可能にします。 これ以外のポートは No.8で外部から起動不可にします。 No.7の設定はこの次に述べる「アクセス制限」と関連ある設定です。



  4. TE4121C 自身は www と ftp によりルーター設定を行います。 この設定画面をインターネットに公開してしまわないよう「アクセス制限設定」します。 WAN からのアクセスを拒否します。 このアクセス制限で外部からの icmp を受け付けないようにして、IPフィルタリングの No.8 の設定のように icmp を受け付けるようにすると、WAN→LAN への ping が不可能で LAN→WAN への ping が可能になります。





WEBくんに ntpdate を設置(定期的にパケット通信をする)

T-com では一定時間 WAN 側へ通信パケットが流れないと PPP切断されます。 そして、T-comでは DHCP の IPアドレス・リース時間がゼロのようで、PPP切断すると必ず IPアドレスが変わってしまいます。 いくらダイナミックDNSとは言っても、頻繁に IPアドレスが変化するのは好ましくないです。 この対策として、WEBくんに ntpdate を導入しました。 ntpdate 導入目的は定期的にパケットを流すことにあります。 それと正確な時間ゲットです。 一石二鳥 のアイデアです。

  1. 別の開発マシンに rpm で導入した xntp セットから ntpdate を取り出し、これを WEBくんの /usr/sbin ディレクトリに入れます。

  2. /root/ntp.sh スクリプトを作成します。 パーミッションは 700 にします。
        /usr/sbin/ntpdate -s clock.kpix.org
        /sbin/clock -w
    
  3. 一度、ntp.sh を起動し、WEBくんのマシン時刻とハードクロックを正確な時刻に設定します。

  4. crontab -e で編集し、以下の行を追加します。
        5,25,45 * * * * /root/ntp.sh > /dev/null
    
これで毎時5,25,45分に標準時間を取り込みします。 すなわち、定期的なパケット通信がされるのです。



ddo.jp にADSLのグローバルIPアドレスを自動登録する

T-comでは PPP切断すると必ずグローバルIPアドレスが変わってしまいます。 このグローバルIPアドレスを常時チェックして、変化すればグローバルIPアドレスを再登録するスクリプトを考えてみます。 もう一つのやり方としては、スクリプトを組まずに定期的にグローバルIPアドレス登録を繰り返す方法が考えられますが、例えばこれを5分おきに実行したら ddo.jp のサーバー負荷が上がって迷惑をかけます。 やはり、スクリプトにて必要時だけにグロバールIPアドレスを登録するやり方が正しいです。

  1. 別の開発マシンに rpm で導入した wget セットから wget を取り出し、これを WEBくんの /usr/sbin ディレクトリに入れます。

  2. /root/ddoupdate.sh スクリプトを作成します。 パーミッションは 700 にします。

    ・(rootpw) には TE4121C のルートパスワードを入れます。
    ・192.168.1.1 には TE4121C の IPアドレスを入れます。
    ・(user)(password) には ddo.jp に登録したユーザー名とパスワードを入れます。
        #!/bin/sh
    
        wget -qO - http://root:(rootpw)@192.168.1.1/cgi-bin/main.cgi?cc_webname=STATUS\
         | grep 'ADSL IP' | sed -e 's|^ADSL IP:||'\
         -e 's|Peer IP.*||' > /root/ip_new
        cmp /root/ip_new /root/ip_old > /dev/nul
        if [ $? != 0 ] ; then
          cp -f ip_new ip_old
          wget -O - 'http://ddo.jp/dnsupdate.php?dn=(user)&pw=(password)'
        fi
    
    このスクリプトの動作説明です。

    1. wget で TE4121C の保守画面より現在のグローバルIPアドレスを抽出し /root/ip_new に保存する。
    2. cmp で以前のグローバルIPアドレス ip_old と ip_new を比較する。
    3. 比較結果が同じであれば、ここで終了。比較結果が異なると、ip_old = ip_new とし、wget で ddo.jp 登録のグローバルIPアドレスを更新する。

    構造的には、たった3ステップしかありません。 たぶん 世界一短いスクリプト です。 copyright (c) hirokun です。

  3. crontab -e で編集し、以下の行を追加します。
        2,7,12,17,22,27,32,37,42,47,52,57 * * * * /root/ddoupdate.sh > /dev/null
    
    これで毎時2,7,12,17,22,27,32,37,42,47,52,57分にこのスクリプトを実行します。

  4. グローバルIPアドレスが変わらなかったら ddo.jp へのグローバルIPアドレスを再登録しないのですが、この状態が1ヶ月以上続くと ddo.jp より(ダイナミックDNSサービスを長期に渡って使用しなかったとして)強制退会させられるようなので、crontab -e で次の行も追加しておいたほうが良いです。
        15 2 10,25 * * rm -f /root/ip_old
    
    これは、毎月10日と25日の2時15分に ip_old ファイルを消去します。 そうすると、その次の ddoupdate.sh スクリプト実行時(2時17分になります。)に強制的にグローバルIPアドレスを再登録します。



root宛メールの設定

「おうちインターネットサーバー」も現在、常時オンラインになっています。 オンラインにしながら設定ファイル確認というのは心苦しいのですが、ともかく WEBくんには詳細設定表というのがないのです。 ですから、今までの経験を基に調査して設定とならざるを得ません。

root関係のメッセージポスト先を調べてみました。
<qmail関係>
# ll /var/qmail/alias -a
total 9
drwxr-sr-x    3 alias    qmail        1024 Mar  6 14:14 .
drwxr-xr-x    8 root     qmail        1024 Mar  6 14:16 ..
-rw-------    1 alias    qmail          11 Oct 13 16:10 .qmail
-rw-r--r--    1 root     qmail           6 Oct 14 15:01 .qmail-daemon
-rw-r--r--    1 root     qmail           6 Oct 14 15:01 .qmail-mailer-daemon
-rw-r--r--    1 root     qmail           6 Oct 14 15:01 .qmail-postmaster
-rw-r--r--    1 root     qmail          22 Mar  6 14:14 .qmail-root
-rw-r--r--    1 root     qmail           6 Oct 14 15:01 .qmail-webmaster
drwx--S---    5 alias    qmail        1024 Oct 13 16:07 Maildir

# cat /var/qmail/alias/.qmail
./Maildir/

# cat /var/qmail/alias/.qmail-daemon
&root

# cat /var/qmail/alias/.qmail-mailer-daemon
&root

# cat /var/qmail/alias/.qmail-postmaster
&root

# cat /var/qmail/alias/.qmail-root
&postmaster@localhost

# cat /var/qmail/alias/.qmail-webmaster
&root

<apache関係>
# cat /etc/httpd/conf/httpd.conf
(省略)
ServerAdmin root@localhost
(省略)
結果、全て root宛にメールが行くようです。 よって、/root/.qmail ファイルを作成し、内容を以下としました。
# cat /root/.qmail
&taro
これで、全システムメールが [email protected] に配信されます。



「おうちインターネットサーバー」のチェック方法

英語翻訳サイトは「おうちインターネットサーバー」のチェックに使えるというお話です。

「おうちインターネットサーバー」を LAN内に構築して、同じ LAN内のパソコンのブラウザから
   http://kitaguchi.ddo.jp/
とやると、TE4121Cの保守画面をアクセスしてしまいます。
   http://192.168.1.200/
とすると、wwwサーバーにアクセスできますが、これでは同じ LAN間での通信でしかありません。 WAN側(インターネット側)から LAN内の wwwサーバーにアクセスできないのです。

いい方法があります。 英語翻訳サイト(例えば 英語ナビ )から
   http://kitaguchi.ddo.jp/
をアクセスすると、やりたい WAN側からのアクセスできます。 これで wwwサーバーがインターネットに対して公開されていることがチェックできます。

なお、メールのチェックは外部の smtpサーバーを使うことで簡単にテストできます。