dyndnsが有料化されたので無料のmydnsへ乗り換えてみました。
mydns.jpはこちら
https://www.mydns.jp/
@右上の「Join US」からユーザー登録します。
A登録情報を入力します。
Bメールで送られてきたユーザーパスでログインします。
Cdomain infoをクリック
DdomainとMXに希望のドメインを入れます。
Echeckを押して既に使用されていなければ登録できます。
FIPを設定します。
IP ADDR DIRECTをクリック
GIPを入力します。
これで登録完了です。
このままでは、動的IPの場合更新が大変ですので自動で更新できるようにします。
使用するソフトはwgetで可能です。
# cd /usr/ports/ftp/wget
# make install clean
インストールが終了したら自動更新の為、cronで動くコマンドを作成しておきます。
/root/mydns.shあとは定期的にcronで走らせれば完了です。
#!/bin/sh
/usr/local/bin/wget -O /dev/null https://ユーザー名:パスワード@www.mydns.jp/login.html
起動時にも動いて欲しいが、なぜか/usr/local/etc/rc.d/でもcronの@rebootでもwgetで名前解決ができない。
resolv.confをunboundではなくプロバイダーにしてもダメ。
そもそもtun0にIPが割り当てられるまで少しタイムラグがある。
かと言ってcronの@rebootでシェルをスタートさせ、sleepで時間稼ぎしても変わらず。
ならばwgetのオプションでdnsサーバーを指定しようにも、libcaresを入れたオプションでコンパイルが必要なのだが
make configでオプションが無いのでソースからコンパイルする必要があるので断念。
そこで似たようなソフトでcurlが指定できそうだったのでこれにしてみる。
make configで不要なオプションは外してからインストールしましょう。
# cd /usr/ports/ftp/curl
# make install clean
そしてシェルスクリプトを作成します。
#!/bin/sh
sleep 60
curl --dns-servers XXX.XXX.XXX.XXX -u ユーザー名:パスワード https://www.mydns.jp/login.html
これをcronで@rebootのタイミングで動かせば完了です。
リブートするたびにIPが変わりますが、login表示後1分で更新してくれます。
mydnsはアクセス過多だと制限されるとのうわさもあるので、セルフチェックのスクリプトも作ってみました。
ifconfigでIPアドレスを抜き出し、newipへぶち込んで、前回のIPをoldip.txtへ保存してあるようにしておけば
#!/bin/bash ifconfig tun0 > null if [ $? = 0 ] then newip=`ifconfig tun0 | grep "inet" | cut -d" " -f 2` oldip=$(cat /root/oldip.txt) if [ "$newip" != "$oldip" ] then echo "change" echo "$newip" > /root/oldip.txt /usr/local/bin/wget -O /dev/null https://ユーザー名:パスワード@www.mydns.jp/login.html fi fi
これと比較して変更が無ければスルー、違っていればwgetで更新します。
これを短い時間で回して、上の/root/mydns.shは1週間弱で回せばアクセス過多にならずIPが変更されても1分以内に更新される仕組みになります。
固定IPでもアカウントが消えないようにcronで回してアクセスはしておくと良いと思います。