没有固定IP的情况下,想要提供外网访问,那么DDNS是必不可少的一个设置。
DDNS(Dynamic Domain Name Server,动态域名服务)是将用户的动态IP地址映射到一个固定的域名解析服务。需要注意的是,不是域名是动态的,而是IP是动态的。
提供DDNS域名服务的有很多,但是能长期稳定提供服务的不多。一个互联网服务要想长期稳定的发展下去,那么盈利一定要有。如果不是从这个服务获取利润,那么必须有其他服务为它买单,否则迟早要关门。
DDS是什么原理呢?可以看下图:
说白了很简单,有一个客户端,定期向某个服务器发送一个更新包。服务器收到这个包之后,解析一下客户端的IP(TCP包中包含IP源地址),然后将一个动态域名绑定到这个IP即可。然后其他人访问这个域名时,域名解析就会返回刚才绑定的IP。
当然,实际当中服务器处理流程要复杂一些,比如服务器需要验证一下这个更新包是否合法等等。
一般的路由器,都有带DDNS更新功能。路由器会提供一些DDNS服务商列表,然后你填写一下对应的用户名密码等等信息,就可以使用这个功能了。
聪明的你看了上面实现流程,就会发现,客户端和服务端基本上不是同一家公司做得。这样子有好处也有坏处:
好处:客户端服务端不关联,客户端的实现可以五花八门,应用程序啊,脚本啊,路由器啊,各种情况可能都可以,只要到达服务端的IP包符合服务器的要求即可。
但是好处也是坏处的由来:由于客户端服务端不关联,所以服务端一旦变更了数据格式或者参数等,你的客户端就需要同步更新。另外服务端由于需要验证用户,所以你必须自己去注册一个账号密码才行。
文章开头提到的,DDNS服务商需要保证流量,保证利润能持续运营下去,他会对注册的账号有一些限制。比如
- 每隔一段时间需要登录一下网站
- 有免费时间期限,比如一年之类的
另外国内的网站,比如花生壳等,注册时需要手机号等等,都比较麻烦。
那么,有没有省心省力的DDNS服务提供商呢?
这次,我们来介绍Mikrotik的ROS(RouterOS)提供的DDNS服务。
Mikrotik的RouterOS,这个应该不用我介绍了,大名鼎鼎。我是强力推荐!能用ROS的情况下尽量用。好处太多了:功能全,配置项简单明了,拥有完整的文档库,网上有大量的经验介绍等等。(自然,E文好一点的话,配置起来更不在话下。另外弄懂ROS是如何配置的,一生受用,只要TCP/IP不倒。)
要使用Mikrotik的DDNS,需要一个前提条件,那就是需要有一个跑着RouterOS的路由器....
什么?一台跑着RouterOS的路由器.........!!!
买新硬件?那是不可能的。关注我这个专栏的人都知道,我有一个FreeBSD虚拟主机。可以跑各种虚拟机。那么这次我们也用它来跑ROS吧。
首先建立一台虚拟机:
root@nas:~ # vm create ddns
修改虚拟机配置如下:
root@nas:/zones/vm/ddns # cat ddns.conf
loader="grub"
cpu=1
memory="128M"
network0_type="virtio-net"
network0_switch="v6plus"
disk0_type="virtio-blk"
disk0_name="chr-6.44.5.img"
grub_run0="linux /boot/vmlinuz-64 crashkernel=16M"
grub_run1="initrd /boot/initrd.rgz"
因为我们只是使用DDNS功能,所以虚拟机的配置按照最小的配置。
接下来我们去这个链接下载RouterOS的CHR镜像。
MikroTikwww.mikrotik.com下载并解压。
root@nas:/zones/vm/ddns # fetch https://download.mikrotik.com/routeros/6.44.5/chr-6.44.5.img.zip
chr-6.44.5.img.zip 32 MB 477 kBps 01m09s
root@nas:/zones/vm/ddns # unzip chr-6.44.5.img.zip
Archive: chr-6.44.5.img.zipextracting: chr-6.44.5.img
启动虚拟机!
root@vmhost240:/zones/vm/ddns # vm start ddns
Starting ddns* found guest in /zones/vm/ddns* booting...
root@vmhost240:/zones/vm/ddns # vm list
NAME DATASTORE LOADER CPU MEMORY VNC AUTOSTART STATE
ddns default grub 1 128M - No Running (34477) 21.7%
可以看到虚拟机正在运行。
接下来就是配置了。
RouterOS的配置方式可以有很多,网页配置,winbox等。在这里推荐winbox,因为RouterOS没有正确配置的情况下,可以通过MAC地址进行链接!比如下图,可以直接通过MAC连接。
跑起来我们马上看看ip/cloud这个DDNS服务!
咦?免费License不能用!.... 好吧,我先试用60天看看。
system/license里面先试用CHR的P1 License。
然后再打开ip/cloud
完成之后,直接就可以访问DNS Name里面的域名了。我们访问看看,我家里的apache缺省页面显示出来了!
完成!
另外觉得域名不好记得,可以设置一下CNAME,转换成自己好记的域名。
总结一下:Mikrotik CHR的DDNS开启起来非常简单,只需要点一下即可!不过遗憾的是,需要有License。P1的CHR License官方45刀,某宝150RMB左右吧....