LANDISKを外部に公開するには、外部からのリクエストがLANDISKへ届くように、 ルータを設定する必要があります。
さらには、世界中からユニークな名前でアクセスできるよう、 DynamicDNSサービス等を使用する必要があります。
本章では、その辺のTipsを記したいと思います。

ルーターの設定 Edit

  • 静的IPマスカレード設定
    インターネットとLANDISKを接続するADSLモデムにパケットの通り道を設けて、
    インターネット上からLANDISKをアクセスできるようにしなければなりません。
    私のADSLモデム(ルーター)では、「静的(スタティック)IPマスカレイド」という
    機能を使用し、それを実現します。
    ルーターによっては「IPフォワーディング」や「アドレス変換」と表記された物もありますので、
    マニュアル等を参考に設定してください。

    さて、具体的な設定ですが、WEBサーバが通信に使うポートは通常80番ポートと決まっています。
    したがって、80番ポートに送信されたパケットは、何であれ、とにかく強制的にLANDISKのローカル
    アドレスへ転送するよう設定を行います。設定が終わったら外部から接続実験を行います。

  • 外部からの接続実験
    • まず/share/www/内にindex.htmlファイルを用意してください。
      (私のページを「名前をつけて保存する」等して適当に準備してください。)

    • 次に自分のグローバルアドレスを調べましょう。
      http://ipdetect.dnspark.com/ ← ここをクリックすると表示されるはずです。

    • 「http://グローバルアドレス/www/index.html」と、ブラウザで自分自身をアクセスしてください。
      大抵の場合エラーが出てうまくいかないと思います。これはルーターが自分自身のアドレスを
      インターネットの外に探しにいったためです。

    • 発想をかえて、外部のコンピュータにLANDISKのアドレスをアクセスさせてみましょう。
      携帯電話のi-modeを使ってアクセスしてみても良いですが、もっと簡単な方法があります。
      exciteのWebページ翻訳を使用して自分のページを英語等に翻訳してみます。
      (翻訳サーバは、翻訳用の原文を取得するためにLANDISKをアクセスするはずです。)

    無事、外部からアクセスできることを確認できたでしょうか?
    もし、アクセス制限をかけているディレクトリ等があるならば、ついでに、アクセスできないことを確認しておくと
    より安心でしょう。

Dynamic DNS の登録 Edit

  • 初めに
    私の環境では、プロバイダから割り当てられるIPアドレスは約3日毎に 変化します。
    Dynamic DNSとは、そのような不定期かつ高頻度に変化するIPアドレスとHOST名の対応付けを
    してくれるサービスです。

  • Dynamic DNS 探し
    google等で"無料 Dynamic DNS"等のキーワードで検索すると、
    サービスを提供している業者さんがたくさん見つかると思います。
    私は次のDynamic DNSサービスを使わせていただくことにしました。

  • DNSの更新
    DNSの更新は、通常、DynamicDNSサービス業者が指定する特定ページをアクセスして行います。
    Dynamic DO!.jp の場合は次の様にWEBブラウザでアクセスします。
    http://free.ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード 
    または、ブラウザの代りに wget コマンドを使うこともできます。
    wget -O - 'http://free.ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード'
    ここでは後者の wget コマンドを用いた例を紹介します。
    そのまえに、肝心要のwgetコマンドをインストールしましょう。

  • wgetのインストール
    landisk:/home/src/openssl096# apt-get install wget
  • 動作確認
    wgetコマンドでDDNSの更新ページをアクセスしてみましょう。(各自の環境に合わせてください。)
    landisk:/# wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード'
    <html><body>
    <a href="http://ddo.jp/">Dynamic DO!.jp</a><br>
    SUCCESS: eggplant.ddo.jp <= [ xxx.xxx.xxx.xxx ]<br>
    IPアドレス更新完了.<br>※IPアドレスに変更がありませんため、パスワードはチェック
    しておりません。<br>
    2005/12/05 00:57:25<br>
    <input type="button" value="閉じる" onclick="window.close();">
    </body></html>
    

DDNSの自動更新 (*.ddo.jpの例) Edit

  • 自動更新スクリプト
    DDNSの自動更新スクリプトを作成して、cronで定期的に実行させます。
    [/root/bin/ddns.sh]という名前で作成。(実行属性をセットすること)
    #!/bin/sh
    
    DATE=`date +"%Y/%m/%d %X"`
    
    wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード' | \
    awk '$0 ~ /SUCCESS/ || $0 ~ /FAIL/ { print date, $0;}' date="$DATE" >> /var/log/ddns.log
    
  • スクリプトのテスト
    /var/log/ddns.logに結果が出力されます。
    landisk:~# /root/bin/ddns.sh
    landisk:~# cat /var/log/ddns.log
    2004/07/11 17:37:19 SUCCESS: eggplant.ddo.jp <= [ 218.230.147.84 ]<br>
    
  • /etc/crontabの設定
    「時刻の分の桁が45の時、/root/bin/ddns.shを実行しなさい」という意味です。
    # m h dom mon dow user  command
    45  *  *   *   *  root  /root/bin/ddns.sh	
    
  • cronの起動
    landisk:~# /etc/init.d/cron start
    Starting periodic command scheduler: cron.
    landisk:~# ps aux | grep cron
    root       518  0.0  1.2  2020  764 ?        S    14:11   0:00 cron
    root       900  0.0  1.2  2220  760 ?        S    14:49   0:00 /usr/sbin/cron
    root       912  0.0  0.7  1472  460 ttyp1    S    14:50   0:00 grep cron
    
    psコマンドで確認してみると2つのcronプロセスが動作しています。
    前者はLANDISKのオリジナルのcronで、ntpクライアントを起動して時刻の補正を行います。
    後者は先ほどスタートさせたdebianのcronです。
    無理に一つのcronに統合する必要もないので、このまま運用することにします。
  • cronの停止
    landisk:~# /etc/init.d/cron stop
    必要に応じて、debian_start,debian_stopコマンドに追加すると良いでしょう。

hostsファイル Edit

  • LAN内からアクセスできない
    LANDISKは、eggplant.ddo.jpという名前で、世界中の何処からでもアクセスできるようになりました。
    しかし残念なことにローカルネットワーク(LAN)内のマシンからは、その名前を使ってアクセスすることができません。

    本問題を解決するために、eggplant.ddo.jpのエイリアスをhostsファイルに記述する方法を紹介します。
    次の記述をLAN内のマシンのhostsファイルに追加してください。
     192.168.0.80 landisk
     192.168.0.80 eggplant.ddo.jp
    # (注:192.169.0.80はLANDISKのローカルアドレスを指定してください。)
    # (注:eggplant.ddo.jpはDDNSに登録したLANDISKの名前を指定してください。)
    
    • Windows XPの場合
      C:\WINDOWS\system32\drivers\etc\hosts
    • MacOSX 10.3(Panther)の場合
      /private/etc/hosts
    これでLANDISKへLANの内側からアクセスする時も、外側からアクセスする時も、eggplant.ddo.jpという名前で区別なくアクセスできるようになります。

    Counter: 3962, today: 1, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-13 (火) 20:02:26 (6534d)