Armbian部署DDNS-GO实现全速“内网穿透”

2021年9月2日 6376点热度 0人点赞 4条评论
Armbian部署DDNS-GO实现家用宽带的动态域名解析
DDNS(图片来源:robustel

DDNS对于有动态公网IP的小伙伴们来说意义非凡。这让我们免受IP不断变化的烦恼。有了DDNS,无论IP怎样变化,只需要记住一个固定的域名就可以连接到家里的NAS、路由器或者其他任何设备。如果你有公网IP,本文将会帮助你在Armbian上部署DDNS-GO,实现通过域名访问家里的设备。如果你的宽带上传够大,你甚至可以直接在外网观看你保存在家里的各种”电影“。

当然,有了域名,你也可以在家搭建各种各样的网站或服务(甚至搭建自己的网盘,摆脱百度云的限制,详情点击Armbian部署可道云:打造多功能私人云盘),并在任何可以进行互联网连接的地方访问这些网站和服务。最重要的是,DDNS可以充分利用宽带的上传和下载,跑满你的带宽,且没有流量的限制,这可比其他各种内网穿透不知高到哪里去了。

部署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.255255.0.0.0
B类地址172.16.0.0-172.31.255.255255.240.0.0
C类地址192.168.0.0-192.168.255.255255.255.0.0

以上地址为专用地址,即我们常说的内网IP地址。所以公网IP就是除了上面之外的IP地址

但是你打开手机或者电脑会发现,你获取的IP必定是内网IP。这是因为局域网的设备通过NAT(网络地址转换)协议,用同一个网关访问互联网,也就是说,家用路由器下面的所有设备都会被分配一个内网IP,再通过路由器的NAT进行互联网连接。所以我们所说的能获取到公网IP指的是你的路由器的WAN口可以获取到公网IP。登录路由器的后台,可以看到WAN口获取到的IP:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

或者你的是光猫拨号,则在光猫里查看:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

如果WAN口获取到的是公网IP,基本就可以确定能使用DDNS了。

下面的几种特殊情况需要进一步确定:

①部分用户会获取到100开头的IP地址,这样的IP地址有一定的概率也是不能用DDNS的;
②获取到公网IP地址的设备(比如桥接模式的路由器,或者拨号的光猫)的端口转发是正常能用的,否则也不能使用DDNS。路由器拨号一般没什么问题,但是有的光猫的端口转发是不能正常使用的,只能改桥接才行。

部署DDNS-GO

设置端口转发

为了避免上面提到的情况②,所以我们先在路由器设置好端口转发,并测试一下是否能正常使用。

①端口转发的位置

不同的路由器端口转发所在的地方不一样,比如梅林的是:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

京东云的是:

Armbian部署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
本地IP192.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部署DDNS-GO实现家用宽带的动态域名解析

如果你的Armbian设备是64位的,如N1、R3300-L、我家云等就选arm64,如果是玩客云这样的32位设备就选armv6。

解压后会得到如下文件:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

②部署DDNS-GO

将ddns-go这一个文件用WINSCP上传至Armbian设备里的任意文件夹:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

打开终端,输入下面的命令,赋予ddns-go执行权:

chmod +x ddns-go
Armbian部署DDNS-GO实现家用宽带的动态域名解析
赋予ddns-go执行权

然后输入下面的命令安装ddns-go:

./ddns-go -s install
如果不是root用户要在前面加sudo即
sudo ./ddns-go -s install
Armbian部署DDNS-GO实现家用宽带的动态域名解析
安装成功

这样安装会把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服务商后会有按钮,如下图红箭头所示):

Armbian部署DDNS-GO实现家用宽带的动态域名解析

紧接着是IPv4设置,如下图:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

然后是IPv6设置,如果你用不到IPv6,那就不要启用。如果你是移动用户,只有IPv6,则必须启用,并且要关闭上面的IPv4。其他设置同上面的IPv4。

之后是其他配置,根据需要设置一下管理页面的密码以及是否禁止公网访问:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

最后是Webhook,我暂时用不到,所以没有设置:

Armbian部署DDNS-GO实现家用宽带的动态域名解析

点击“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

麦克斯和雪莉

非常规文科生

文章评论

  • hello

    没看明白,一般光猫和路由器好像都自带ddns吧。

    2021年11月29日
  • George

    玩客云做MC服务器性能够吗? :biggrin:

    2021年12月26日
  • George

    :biggrin: OK👌

    2021年12月28日