概要
ダイナミックDNSを設定するとIPでなくドメイン名で自宅サーバへアクセスできます。
ただしグローバルIPが更新された時に、利用しているダイナミックDNSのサービスにに通知する必要があります。
DiCEは通知するためのツールです。
他にもddclient
やinadyn
などのツールがありますが、サイトが対応しているかどうかで使い分けしてください。
環境
名称 | 値 |
---|---|
利用DDNS | CyberGate - DDNS - |
登録ID | xxxxxx |
登録パスワード | yyyyyy |
取得ドメイン | example.luna.ddns.vc |
DDNSパスワード | zzzzzz |
事前準備
文字化け対応
そのままだと文字化けするので文字コードを変更します。
$ export LANG=ja_JP.eucJP
また使用しているターミナル自体の文字コードも変更する必要があるので注意。
依存ライブラリ
Ubuntu 64bit版だと実行できないのでi386バイナリが実行できるようにパッケージをインストールします。
$ sudo aptitude install ia32-libs
ダウンロード
$ wget -O dice019.tar.gz http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=diced019 $ sudo mv diced019.tar.gz /usr/local/bin $ cd /usr/local/bin $ sudo tar xvzf diced019.tar.gz $ cd DiCE
DDNSパスワードの設定
CyberGateにはWebログインとは別でDDNSのログイン用のパスワードがあります。そちらを設定します。
パスワード変更をクリック
CybarGate -DDNS-
という部分があるのでこちらを設定
DiCEの設定、実行
dicedは対話的な設定になります。
$ sudo ./diced :
このようにコロン「:」が出ます。ここにsetup、add、exit、などのコマンドを入れて設定していきます。
※コマンドの詳細を知りたいときは
:?
のように?
を入力します。
まず設定をします。
:setup IPアドレスの検出方法を指定してください (0) 自動検出 (1) ローカルのネットワークアダプタから検出 (2) 外部のスクリプトから検出 <現在:0> (N)変更しない (P)戻る >n ------------------------------------------------- プライベートIPアドレスも検出対象ですか? (Y/N) <現在:いいえ> (P)戻る >n ------------------------------------------------- IPアドレスを検出をテストしますか? (Y/N) (P)戻る >y 検出IPアドレス>122.122.122.122 <-自分のグローバルIPが表示されればOK ------------------------------------------------- IPアドレスを検出をテストしますか? (Y/N) (P)戻る >n ------------------------------------------------- IPアドレスをチェックする間隔を指定してください(分) 設定可能範囲は5分以上です <現在:10> (N)変更しない (P)戻る >n ================================================= DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります 前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して ください(分) 設定可能範囲は10分から1440分です <現在:60> (N)変更しない (P)戻る >n ================================================= 設定を保存しますか? (Y/N) (P)戻る >y 設定を保存しました =================================================
次にCyberGate用のイベントファイルを作成します。
:add 新しくイベントを追加します DynamicDNSサービス名を入力してください "?"で対応しているサービスを一覧表示します (P)戻る >CyberGate ------------------------------------------------- << CyberGate - DDNS - >> URL: http://cybergate.planex.co.jp/ddns/ *** 情報 *** <ポート3495を使用します> ================================================= ドメイン名を入力してください "?"でドメイン一覧を表示します (P)戻る >? luna.ddns.vc mars.ddns.vc planex.ddns.vc sun.ddns.vc ================================================= ドメイン名を入力してください "?"でドメイン一覧を表示します (P)戻る >luna.ddns.vc ================================================= ホスト名を入力してください (P)戻る >example <-- 自分が取得したサブドメイン。 ================================================= ログインユーザ名を入力してください (P)戻る >example <-- サブドメイン ================================================= ログインパスワードを入力してください (P)戻る >zzzzzz <-- DDNSパスワード ================================================= 登録するIPアドレスを入力してください 空白にすると現在のIPアドレスを自動検出します (P)戻る > ================================================= このイベントに題名を付けてください (P)戻る >DiCE <-任意 ================================================= このイベントを実行するスケジュールを設定します ------------------------------------------------- 実行する頻度を指定してください (番号入力) (0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回 (4)その他の周期 (5)IPアドレス変化時 (6)起動時 (P)戻る >5 ------------------------------------------------- IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると アカウントを削除されてしまうことがあります IPアドレスの変化が無い時に実行する間隔を指定してください (0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎 (4)35日毎 (5)56日毎 (6)84日毎 (P)戻る >0 ================================================= 詳細オプションを設定します ------------------------------------------------- [ オフライン ] (0)No (1)Yes 番号>0 ================================================= このイベントを有効にしますか? (Y/N) (イベントの有効/無効は"EN/DIS"コマンドで切替えられます) >Y ================================================= イベントを保存しますか? (Y/N) >Y イベント"DiCE"を保存しました =================================================
ちゃんとイベントが設定されたか確認します。
:list (No.) (イベント名) (スケジュール) (次回予定) 0 * DiCE IPアドレス変化時 (7日毎) 06/01 16:47
一度実行しておきます。
:ex 0 + 5/25 17:46 にDiCEが実行されました IPアドレスを更新しました
自動実行設定
$ sudo crontab -e @reboot /usr/local/bin/DiCE/diced -d -l > /dev/null 2>&1
と加えます。@rebootはcronのキーワードの1つで、起動時に1度だけ実行されます。 ちゃんと実行されたかは
$ less /var/log/syslog
で確認してください。
以上で完了です。お疲れ様でした。
補足
./dicedしたのに反映されない、オフラインのまま
起動時に実行してくれない?ので、自分で実行すると確実です。
$ sudo ./diced :ex 0
とするとその場で実行してくれるので反映されます。
No such file or directory といったエラーがでる
DiCEは32bit向けバイナリなので、64bitで動かすとこうなります。
$ sudo aptitude install ia32-libs
とすると、32bit向けのi386バイナリを実行できるようになります。
Exception EInOutError in module at xxxxxxxx. といったエラーがでる
root権限で実行しないとこれが出ます。
$ sudo ./diced