DDNS对于有动态公网IP的小伙伴们来说意义非凡。这让我们免受IP不断变化的烦恼。有了DDNS,无论IP怎样变化,只需要记住一个固定的域名就可以连接到家里的NAS、路由器或者其他任何设备。如果你有公网IP,本文将会帮助你在Armbian上部署DDNS-GO,实现通过域名访问家里的设备。如果你的宽带上传够大,你甚至可以直接在外网观看你保存在家里的各种”电影“。
当然,有了域名,你也可以在家搭建各种各样的网站或服务(甚至搭建自己的网盘,摆脱百度云的限制,详情点击Armbian部署可道云:打造多功能私人云盘),并在任何可以进行互联网连接的地方访问这些网站和服务。最重要的是,DDNS可以充分利用宽带的上传和下载,跑满你的带宽,且没有流量的限制,这可比其他各种内网穿透不知高到哪里去了。
Table of Contents
部署DDNS-GO必读
在正式部署DDNS-GO之前,必须要了解下面的一些基本概念:
什么是DDNS
DDNS(Dynamic DNS,简称DDNS)即动态域名解析,是把域名指向可变IP地址的系统(来源:百度百科)。简单来说就是比DNS(什么是DNS点这里)多了一个“Dynamic(动态的)“。这主要是因为家庭宽带的IP是动态的,有的是拨号一次就变一次IP,有的地方是48小时自动变一次IP。这对于经常访问部署在家里的服务的小伙伴们来说非常不便。DDNS就是在你的IP变动时,将你的域名解析到新的IP地址,从而做到不受IP变动的影响,随时都可以通过域名访问家里的服务。要想实现DDNS,那就离不开一个自动监测IP地址变动,并将新IP地址汇报给DNS的软件——DDNS-GO。
什么是DDNS-GO
DDNS-GO是由jeessy2大佬开发的DDNS软件(项目地址及详细介绍:https://github.com/jeessy2/ddns-go),是笔者用过的最好用的DDNS软件,具有如下特性:
支持的系统 | Mac、Windows、Linux系统(ARM、x86架构) |
支持的域名服务商 | 阿里云、腾讯云(DNSPod)、Cloudflare、华为云 |
获取IP的方式 | 接口、网卡 |
域名个数 | 支持多个、多级域名同时解析 |
其他特性 | 支持Docker部署,支持以服务的方式运行,可以设置登录密码,Web管理界面 |
功能非常丰富,同时也非常简单易用。
什么是公网IP
能获取到公网IP是使用DDNS的前提条件。与公网IP相对应一个的概念是”内网IP“,即局域网IP。常见的局域网或内网IP段如下:
地址类型 | IP段 | 子网掩码 |
A类地址 | 10.0.0.0-10.255.255.255 | 255.0.0.0 |
B类地址 | 172.16.0.0-172.31.255.255 | 255.240.0.0 |
C类地址 | 192.168.0.0-192.168.255.255 | 255.255.0.0 |
以上地址为专用地址,即我们常说的内网IP地址。所以公网IP就是除了上面之外的IP地址。
但是你打开手机或者电脑会发现,你获取的IP必定是内网IP。这是因为局域网的设备通过NAT(网络地址转换)协议,用同一个网关访问互联网,也就是说,家用路由器下面的所有设备都会被分配一个内网IP,再通过路由器的NAT进行互联网连接。所以我们所说的能获取到公网IP指的是你的路由器的WAN口可以获取到公网IP。登录路由器的后台,可以看到WAN口获取到的IP:
或者你的是光猫拨号,则在光猫里查看:
如果WAN口获取到的是公网IP,基本就可以确定能使用DDNS了。
下面的几种特殊情况需要进一步确定:
①部分用户会获取到100开头的IP地址,这样的IP地址有一定的概率也是不能用DDNS的;
②获取到公网IP地址的设备(比如桥接模式的路由器,或者拨号的光猫)的端口转发是正常能用的,否则也不能使用DDNS。路由器拨号一般没什么问题,但是有的光猫的端口转发是不能正常使用的,只能改桥接才行。
部署DDNS-GO
设置端口转发
为了避免上面提到的情况②,所以我们先在路由器设置好端口转发,并测试一下是否能正常使用。
①端口转发的位置
不同的路由器端口转发所在的地方不一样,比如梅林的是:
京东云的是:
端口转发基本都是在外部网络里面,其它型号的路由器可以自己找一找。
②新建端口转发
新建端口转发需要填写以下几个项目(不同路由器的设置项名称不同,请灵活应变):
服务名称 | 这个只是方便自己区分和记忆,根据自己的需要填写,比如:玩客云SSH。 |
源IP | 指的是可连接到内网的外网设备IP,默认空,即任意IP都可访问。京东云无此选项。 |
通信端口(范围) | 即通过公网IP访问内网设备时输入的端口,根据需要自己填写即可,比如填写6789。 |
本地IP | 即内网设备的IP地址,填你的Armbian设备的IP地址。 |
本地端口 | Armbian设备上的服务所用到的端口,比如SSH的22端口。 |
通信协议 | 可选TCP/UDP/其他/全选,如果你不知道,推荐全选。 |
比如,我想在外部网络通过789端口连接内网IP为192.168.1.5的Armbian的SSH,即22端口(使用其他端口的服务同理),则上述的设置如下:
服务名称 | Armbian SSH |
源IP | 不填 |
通信端口(范围) | 6789 |
本地IP | 192.168.1.5 |
本地端口 | 22 |
通信协议 | 全选 |
那么在手机(通过数据流量连接互联网)上通过Juice SSH连接家里的Armbian设备时,只要输入:
公网IP:6789
这就等效于在局域网内输入:
192.168.1.5:22
如果你能在外部网络通过你的公网IP和你自己设置的6789端口成功连接SSH的话,证明你的端口转发设置是正确的,可以继续进行下一步了。如果你只想通过IP访问内网的设备和服务,到这一步就OK了。
部署并配置DDNS-GO
①下载并解压DDNS-GO
首先到github下载DDNS-GO,下载地址:https://github.com/jeessy2/ddns-go/releases
打开下载地址后,根据自己的系统选择对应的版本下载,对应关系如下图:
如果你的Armbian设备是64位的,如N1、R3300-L、我家云等就选arm64,如果是玩客云这样的32位设备就选armv6。
解压后会得到如下文件:
②部署DDNS-GO
将ddns-go这一个文件用WINSCP上传至Armbian设备里的任意文件夹:
打开终端,输入下面的命令,赋予ddns-go执行权:
chmod +x ddns-go
然后输入下面的命令安装ddns-go:
./ddns-go -s install
如果不是root用户要在前面加sudo即
sudo ./ddns-go -s install
这样安装会把ddns-go安装成一个开机自启的系统服务,可以很方便的用service或systemctl进行管理:
开启ddns-go:
service ddns-go start
关闭ddns-go:
service ddns-go stop
查看ddns-go状态:
service ddns-go status
或者用systemctl
开启ddns-go:
systemctl start ddns-go
关闭ddns-go:
systemctl stop ddns-go
查看ddns-go状态:
systemctl status ddns-go
设置ddns-go开机自启:
systemctl enable ddns-go
关闭ddns-go开机自启:
systemctl disable ddns-go
③配置DDNS-GO
在浏览器中打开:
http://Armbian设备IP:9876
选择你的DNS服务商,并填入对应的授权凭证(获取方式在选择DNS服务商后会有按钮,如下图红箭头所示):
紧接着是IPv4设置,如下图:
然后是IPv6设置,如果你用不到IPv6,那就不要启用。如果你是移动用户,只有IPv6,则必须启用,并且要关闭上面的IPv4。其他设置同上面的IPv4。
之后是其他配置,根据需要设置一下管理页面的密码以及是否禁止公网访问:
最后是Webhook,我暂时用不到,所以没有设置:
点击“Save”保存配置即可生效。至此DDNS-GO配置完毕。
访问你的站点和服务
完成以上配置后,你在外部网络访问内网服务时就不需要再输入IP了,只需要用你的域名和端口号就可以。即便是IP变动了,DDNS-GO也会及时更新。
有了DDNS,就解锁了很多的玩法。比如通过域名连接Windows的远程桌面,让你的电脑变身云电脑;远程连接SSH;者是自己搭建一个Web服务器(注意:80和443端口基本都被运营商封了):博客、私人网盘或者论坛;或者是将手机上的网站(手机建站请点击用闲置安卓手机搭建网站并实现内网穿透)映射出去;当然开个MC服务器更是不在话下。尽情发挥你的想象力吧!
最重要的是,DDNS不限流量和带宽,所有的限制都是你宽带的限制。
参考资料
https://github.com/jeessy2/ddns-go/
https://baike.baidu.com/item/ddns/670146?fr=aladdin
文章评论
没看明白,一般光猫和路由器好像都自带ddns吧。
玩客云做MC服务器性能够吗?
@George 只能说能用,N1当MC服务器都有点吃力
OK👌