DDNS概念
DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。
DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
服务原理
DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流。而最终客户所要记忆的全部,就是记住动态域名商给予的域名即可,而不用去管他们是如何实现的。
动态域名服务的对象是指IP是动态的,是变动的。普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个。但DDNS的IP是变动的、随机的。随着市场需求的变化,DDNS需求功能也越来越多,越来越要求方便,市场现在已经有了不要第三方DDNS方支持的设备 。
简单来说就是通过DHCP服务器分配的IP地址可以动态更新到DNS服务上,免除了手动指定的麻烦。
DDNS原理:DNS + DHCP =DDNS
DHCP负责ip解析,和分配给客户机ip,ip为随机数。
DNS负责域名解析,A记录里记录了每个ip对应的域名。
服务作用
1、目前ISP大多提供动态IP(如拨号上网),我们若想在网际网络上以 自己的网域公布,DDNS提供了解决方案,它可以自动更新用户每次变化的浮动IP,然后将其与网域相对应,这样其他上网用户就可以透过网域来交流了。
2、DDNS可以让我们在自己的或家里架设WEB\MAIL\FTP等服务器,而不用花钱去付虚拟主机租金。(前提是你可以承受ADSL上传的速率)
3、主机是自己的,空间可根据自己的需求来扩充,维护也比较方便。有了网域与空间架设网站,FTP 服务器、EMAIL服务器都不成问题。
4、如果您有对***的需求,有了DDNS就可以用普通上网方式方便地建立Tunnel。透过网域的方式连结,实现远端管理、远端存取、远端打印等功能。
服务应用
目前ISP大多为我们提供动态IP(如ADSL拨号上网),而很多网络视频服务器和网络摄像机通过远程访问时需要一个固定的IP,而固定IP的费用很难让客户接受。所以DDNS为大家提出了一种全新的解决方案,它可以捕获用户每次变化的IP,然后将其与域名相对应,这样客户就可以通过域名来进行远程监控了。
因为各家公司的产品和实力的不同,DDNS的解决方案也不一样。
路由器外挂
具体的说路由器外挂就是采用集成DDNS的路由器,通过申请其域名和服务,把申请所得用户名密码填入路由器DDNS模块相关项,再由路由器上作端口映射指向所需访问的监控设备即可,远程监控端通过访问域名即可访问到当前路由器,根据不同的端口来判断并指向所需访问的监控设备。
目前已经开始有部分动态域名供应商将自己的硬件和DDNS捆绑销售 ,这样子保证了域名的稳定性,并且没有任何后期费用,为使用者提供了一个永久稳定且免费的DDNS,这种设备无需申请和绑定动态域名,因为每一个设备出厂的时候都会内置一个动态域名,只需要做端口映射即可访问。
集成DDNS的监控设备
对于无人值守或不方便外挂路由器的状况下,视频监控也可采用集成DDNS的网络摄像机,同样把申请DDNS服务得到的用户名密码填入相关项,通过一条ADSL等宽带线路直接相连。远程监控端通过域名直接访问。
运行DDNS客户端软件
在局域网内部的任一PC或服务器上运行到DDNS客户端,此时域名解析到的IP地址是局域网网关出口处的公网IP地址,再在网关处作端口映射指向监控设备即可。
主要作用:
1.宽带营运商大多只提供动态的IP地址,DDNS可以捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来与用户交流了。
2.DDNS可以帮你在自己的公司或家里构建虚拟主机。
实战记录
服务器端
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@localhost ~]# ifconfig | head -2
em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.241 netmask 255.255.255.0 broadcast 192.168.2.255
[root@localhost ~]# ss -antulp | grep :29003
tcp LISTEN 0 128 *:29003 *:* users:(("beam.smp",pid=4223,fd=28))
[root@localhost ~]# ps -aux | grep beam.smp
ocean 4223 1.9 0.9 1208044 78356 pts/1 Ssl+ 7月06 288:47 /usr/local/lib/erlang/erts-6.4/bin/beam.smp -K true -c -- -root /usr/local/lib/erlang -progname erl -- -home /home/ocean -- true -pa /soft/ocean/ocean/ebin /soft/ocean/ocean/deps/amqp_client/ebin /soft/ocean/ocean/deps/cowboy/ebin /soft/ocean/ocean/deps/epgsql/ebin /soft/ocean/ocean/deps/erlydtl/ebin /soft/ocean/ocean/deps/gen_bunny/ebin /soft/ocean/ocean/deps/gen_smtp/ebin /soft/ocean/ocean/deps/gettext/ebin /soft/ocean/ocean/deps/iconv/ebin /soft/ocean/ocean/deps/jiffy/ebin /soft/ocean/ocean/deps/log4erl/ebin /soft/ocean/ocean/deps/meck/ebin /soft/ocean/ocean/deps/mochiweb/ebin /soft/ocean/ocean/deps/pgpool/ebin /soft/ocean/ocean/deps/poolboy/ebin /soft/ocean/ocean/deps/rabbit_common/ebin /soft/ocean/ocean/deps/rrdtool/ebin /soft/ocean/ocean/deps/strftimerl/ebin /soft/ocean/ocean/mod/mod_alarm/ebin /soft/ocean/ocean/mod/mod_assist/ebin /soft/ocean/ocean/mod/mod_base_data/ebin /soft/ocean/ocean/mod/mod_call_records/ebin /soft/ocean/ocean/mod/mod_cds/ebin /soft/ocean/ocean/mod/mod_common/ebin /soft/ocean/ocean/mod/mod_conference/ebin /soft/ocean/ocean/mod/mod_db/ebin /soft/ocean/ocean/mod/mod_files/ebin /soft/ocean/ocean/mod/mod_fsevent_http/ebin /soft/ocean/ocean/mod/mod_ippbx/ebin /soft/ocean/ocean/mod/mod_ivr/ebin /soft/ocean/ocean/mod/mod_log/ebin /soft/ocean/ocean/mod/mod_menu/ebin /soft/ocean/ocean/mod/mod_ola/ebin /soft/ocean/ocean/mod/mod_product/ebin /soft/ocean/ocean/mod/mod_recording/ebin /soft/ocean/ocean/mod/mod_routing/ebin /soft/ocean/ocean/mod/mod_skel/ebin /soft/ocean/ocean/mod/mod_switch_config/ebin /soft/ocean/ocean/mod/mod_ticket/ebin /soft/ocean/ocean/mod/mod_wechat/ebin /soft/ocean/ocean/mod/mod_xcds/ebin -boot start_sasl -s reloader -s ocean -s -sname ocean@localhost -setcookie ClueCon -config ocean
rabbitmq 4657 1.0 0.9 2328468 78008 ? Sl 7月06 155:51 /usr/local/lib/erlang/erts-6.4/bin/beam.smp -W w -A 64 -P 1048576 -K true -B i -- -root /usr/local/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/ebin -noshell -noinput -s rabbit boot -sname rabbit@localhost -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit@localhost.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@localhost-sasl.log"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@localhost-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@localhost" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672
root 5149 0.0 0.0 112732 988 pts/2 S+ 16:59 0:00 grep --color=auto beam.smp
可以看到我们服务器上已经部署了端口为29003的服务,em1网卡为内网,服务器网卡1口与公司企业级路由器相连,企业级路由器与运营商网关/光猫相连(运营商网关/光猫为动态IP),要想通过外网来访问到我们公司内网服务器上的服务,要么使用内网穿透,要么就使用DDNS动态域名服务,接下来我们就使用DDNS动态域名服务来解决这个问题。
路由器端
1.登录到TP-LINK企业级路由器中
2.进入“系统服务”中,点击“动态DNS”功能
可以看到TP-Link企业级路由器支持多种动态域名解析,我们默认使用TP-LINK动态域名。
3.注册TP-LINK ID来登录
4.使用刚注册的TP-LINK ID登录TP-LINK动态域名服务
5.根据TP-LINK动态域名要求新增动态域名并绑定WAN网接口
6.使用TP-LINK路由器中的DDNS动态域名访问内网服务器上的服务
可以看到我直接使用刚才设置的DDNS动态域名加上内网服务器服务的端口29003,直接就能够访问到我们内网服务器上的服务了。
总结:
通过我们在路由器上设置的DDNS动态域名后,不管以后运营商网关上的外网IP怎么动态变化,客户都可以直接使用我们上面在路由器中设置的域名来访问公司内部相应的服务了。