转载自我的博客: https://mengz.me/posts/2015-01-25-set-ddns-for-myhome-via-myonlineportal/
动态域名
动态域名(英文:Dynamic DNS,简称DDNS),简单的讲就是为那些将域名指定到经常改变的IP地址的一种方法或者服务。
这里主要是记录下我通过MyOnlinePortal提供动态域名服务来更新我家里的小米路由器IP。 当然,很多路由器提供了配置花生壳的动态域名服务,就直接配置及好了。
这样就可以通过绑定的域名来访问家里的路由器了,不用知道路由器的IP到底是什么(因为一般的拨号上网,每一次拨号ISP都会重新分配一个新的IP地址)。
<!-- more -->
在MyOnlinePortal上配置域名
MyOnlinePortal为个人用户提供了10个免费的动态域名服务。 首先你得先注册一个帐号,然后就可以创建一个二级域名来作为你的动态域名了。
填写你的子域名称,然后你可以选择以下几个主域名:
- myonlineportal.net
- myonlineportal.org
- myonlineportal.eu
- myonlineportal.at
- my-homeip.com
- my-homeip.net
- my-homeip.de
然后你就可以看到你注册的这个域名,如下图
这里你可以设置当前的IP地址,你也可以看到给出了一个更新IP地址的URL,后面我们就可以用这个URL来动态地更新该域名指向的IP了。
MyOnlinePortal提供了多种方法来更新IP地址,针对不同的平台,具体方法可以参看帮助。
在我的小米路由器上添加Cronjob来更新IP
我的小米路由器是基于OpenWRT系统的,所以可以使用基于Linux的curl命令来更新IP。当然需要获取SSH登录路由器的权限。
为此我写了一个简单的脚本,然后放到Crontab去
<!-- lang: shell -->
#!/bin/ash
<!-- lang: shell -->
#==============================================================================
<!-- lang: shell -->
CURL=`which curl`
<!-- lang: shell -->
USER="Your_username"
<!-- lang: shell -->
PASSWORD="Your_password"
<!-- lang: shell -->
OPTS="-k --user $USER:$PASSWORD"
<!-- lang: shell -->
URL="Your_update_url"
<!-- lang: shell -->
LOGFILE=/var/log/updatehip.log
<!-- lang: shell -->
<!-- lang: shell -->
runTime=`date`
<!-- lang: shell -->
echo "$runTime" >> $LOGFILE
<!-- lang: shell -->
$CURL $OPTS $URL >> $LOGFILE 2>&1
<!-- lang: shell -->
echo -e "--------------------------------------" >> $LOGFILE
其中,Your_username
是注册的MyOnlinePortal的用户名,Your_password
是密码,Your_update_url
是你的动态域名的更新URL,如:
URL="https://myonlineportal.net/updateddns?hostname=xxx.my-homeip.com"
这里我们没有在URL后面的添加“&ip=<ipaddr>”,这样的话,MyOnlinePortal会自动的去检查IP,如果你需要明确指定IP的话,就添加上,但是你需要写代码去获得当前IP。
然后就是添加Cronjob:
0 12 * * * /data/usr/bin/updateMyHomeIP.sh
我这里是希望每天的12点的时候更新一次,还有可以添加到/etc/rc.local
,让每次启动路由器的时候更新一次。
当然你可以直接将crul语句加到cronjob里,我这里是为了记录一些更新的log信息所以写了个简单的脚本。
最后,你就可以在公司或者在外面的时候通过你绑定的动态域名来访问你家里的路由器了。