步骤/目录:
1.DDNS简介
2.获取域名
3.配置路由器
4.配置端口转发
5.配置光猫
6.DDNS的安全性

本文首发于个人博客https://lisper517.top/index.php/archives/54/,转载请注明出处。
本文的目的是介绍DDNS,并在路由器上使用DDNS,以达到访问内网设备的目的。
本文写作日期为2022年9月30日。

1.DDNS简介

想要从公网访问自己的电脑或其他设备,笔者之前的文章中曾详细介绍过frp内网穿透,它的使用流程大概是:购买一台有公网IP的云服务器,在云服务器上运行frps,在需要从公网访问的机器上运行frpc,运行frpc时是将一个或多个内网机器的端口投射到云服务器的端口上,比如多个内网机器的22端口都需要开放到公网,那云服务器自己占一个22端口,其他机器就用云服务器的122、222、322等端口。frp是中心化的,优点是你可以将多个不同局域网(比如你在两个地方各买了一套房子,或者其他情况下不得不把需要投射的机器放在几个不相连的局域网中)的机器端口投射到同一个公网ip,安全性也有保障(如果你会设置tls、双向认证的话);缺点是带宽等于云服务器的带宽,而云服务器的带宽常常不够用,可能只有 5 Mbps 这种速度( 625 KB/s ),想看看家里的监控都有点卡。

本文介绍的DDNS则是另一种路线,使用流程为:向网络运营商申请公网ip(这个公网ip在每次拨号时都会变化,不是固定的。另外,据说电信的公网IP最容易申请,联通次之,移动基本不可能),到DDNS服务商处申请一个域名,在需要开放到公网的机器上安装DDNS客户端即可。它的原理是,每次装有DDNS客户端的内网机器联网时,都会要求DDNS服务商把你的域名解析到这台机器的公网ip上(所以虽然每次拨号时公网ip可能变化,但都能通过域名确定公网ip)。在实践中,一般这个开放到公网的机器是路由器,因为它开机时间长、不怕断电,能把连到路由器上的其他内网机器的端口投射到路由器上,而且现在很多路由器都自带DDNS客户端支持。DDNS是以域名为中心的,优点是网速可以很快,只和你的路由器速度、宽带(百兆还是千兆)相关;缺点是域名选择比较少(但是花一些钱,也可以把DDNS的域名设置为自己的域名,比如下文的no-ip是29.95$/年),所有要投射的机器都要在同一个局域网下,而且安全性上需要一点注意(在openwrt等固件上可以设置DDNS用HTTPS加密,但是路由器自带的固件很少有支持这个的)。
申请公网ip这一步,你需要找到当初帮你装宽带的师傅,或者你这一片区的网络负责人,可以告诉他家里要装监控,想申请一个公网ip,如果是电信、联通的基本都会帮你开。另外据说尽量不要通过10000或10010找师傅,因为这样算投诉、要扣工资,而是应该留一个师傅的私人电话或微信联系。

本文中,选择红米AX6S路由器,它自带支持花生壳(oray.com)、公云(3322.org)、 dyndns.com 和 no-ip.com 这四家DDNS服务商,其中笔者选择 no-ip.com ,很多路由器都支持 no-ip.com 。不过路由器支持最多的还是花生壳,可惜比较贵,而且用花生壳据说需要提交身份证信息。如果你想跟着本文实操,最好买一样的路由器,或者自己去找支持DDNS的路由器(同时还需要支持端口转发,一般支持DDNS的路由器都支持端口转发),查看该路由器支持哪些DDNS服务商;不要买太便宜的路由器了,两三百还是要出的,表示一下起码的尊重,如果一切顺利,你需要花钱的地方只有买路由器这一步,原本的路由器就支持DDNS的话甚至可以不用花钱。

2.获取域名

进入 https://www.noip.com/ ,右上角用自己的邮箱注册一个免费账号(高级账号有一些额外功能,但是这里就用免费账号演示一下),注册的时候可以先不填域名。登录后自己跳转到 https://my.noip.com/ ,点击左侧的 Dynamic DNS -> No-IP Hostnames ,点击 Create Hostname ,这里需要输入自己的域名、选择后缀域名,最后的样子是 自己的域名.后缀域名1.后缀域名2 ,意思就是比如 www.bing.com ,这3者当中你能随意改动的只有 www ; bing.com 则是固定的,不过还是可以有几种选择。自己的域名最好独特一点,否则路由器下线的时候这个域名可能被别人注册(虽然概率极低);后缀域名最好先试试能否访问,有些后缀域名因没有备案而无法访问。

接下来点击右侧的 Account -> Account Info ,在 Basic Info 里把Username改一下。这个用户名和密码要记住,设置路由器要用。

然后在右侧点击 Account -> Security ,有个二维码,下面有这样一段文字:

Account: No-IP.com: 你的邮箱
Key: 你的密钥 
Type: time-based

这个密钥最好记一下,本文中不需要用,但有些时候可能有用。

最后提醒,由于这是no-ip的免费DDNS服务,每30天你会收到一封邮件要求再次激活一下,但这个激活不算太麻烦。如果免费DDNS玩熟练后需要额外功能,请升级到no-ip的高级账号(1.99$/月,后缀域名比免费账号的选择更多)或最高级账号(29.95$/年,可以完全用自己的域名)。

3.路由器设置

以红米AX6S为例,就用原版固件、不用openwrt等其他固件(目前AX6S的openwrt固件用来看视频还行,玩一些在线游戏就会偶有断网,而且笔者对AX6S开SSH、刷其他固件的需求不强),在 高级设置 -> DDNS 里点击 添加服务 ,选择 no-ip ,用户名密码就填刚才的Username和你自己的密码,主机名称为你选的域名,状态检查和强制更新随便,比如填成5分钟和6小时。最后确定,路由器会尝试连接,等待几秒后 状态 变为绿色的 连接正常 ,就行了。如果是红色的 连接失败 ,就检查一下有没有填错的地方,等一会儿再尝试连接一下,直到成功。

另外在 常用设置 -> 局域网设置 -> DHCP静态IP分配 里,把连到路由器的所有机器的内网IP都固定一下,这样转发端口的时候不会乱。

最后是一些AX6S的其他推荐设置。在 常用设置 -> 上网设置 -> 上网设置 里,选择 手动配置DNS ,填入Google的两个DNS: 8.8.8.8 和 8.8.4.4 ;开启 IPV6网络设置 ,同样 手动配置DNS ,填入Google的IPV6 DNS服务器,即 2001:4860:4860::8888 和 2001:4860:4860::8844 。然后看看配置的效果,访问 http://test-ipv6.com/ (这个网址挺不错,还可以检测自己能否访问ipv6网址),看一下自己的ipv4地址、ipv6地址。最后提一嘴,在现在的主流浏览器上,比如chrome、edge这些,要访问ipv6的IP而不是域名(解析到ipv6地址的域名)的话,用 https://[ipv6地址]:端口号 类似的格式,比如 http://[2001:4860:4860::8888]:80 (这个网址访问不了,只是举个例子)。

4.配置端口转发

配置到这里,理论上说已经可以通过域名访问自己的路由器及内网机器了(但是可能只在局域网内,这将在后面说明),我们下面来实验一下。
首先是路由器的管理页,你访问 选择的域名 (比如 test.ddns.net ),应该就能访问到路由器登录页面,这已经说明成功了。

如果需要进一步实验,把内网机器的端口开放到公网,就要配置端口转发,在AX6S的 高级设置 -> 端口转发 里。
以树莓派为例,我想用realvnc访问树莓派桌面,realvnc使用的是5900端口,那么可以新建一个端口转发规则,名称可以写成 pi-realvnc ,外部端口比如是56789,内部ip地址为树莓派连到AX6S后的内网ip,内部端口为5900,然后把树莓派的5900端口打开,在realvnc的客户端里,ip填 选择的域名::56789 ,连接即可。
再以笔者之前文章提到的samba(一种NAS的搭建方案)为例,它使用的是445端口,那么ip填运行samba的机器的ip,内部端口填445,外部端口也填445(你也可以填其他外部端口,只是用windows连NAS稍微麻烦一点),在samba客户端中,比如windows机器上,访问 //选择的域名/... 即可。
其他就不再举例了。总之,搞清楚自己想开放的机器的ip,搞清楚需要开放哪一个或几个端口,就能非常轻松地从外网访问到自己的内网机器。

5.配置光猫

如果你家里是通过路由器拨号连到外网,那么就可以跳过这一步;如果你家是通过光纤连光猫(EPON、GPON),然后连到下级路由器上,则此时这个域名只能通过内网访问。具体可以查看AX6S的DDNS设置界面,如果 WAN口 IP 是 192.168. 开头的,那就说明只能内网访问;或者可以到 no-ip官网 ,登录自己的账号,可以看到自己的域名, IP / Target 对应的是 192.168. 开头。这是因为虽然你的光猫能获取一个动态的公网ip,但路由器拿到的是内网ip,在路由器上进行DDNS配置也是把域名解析到一个内网ip,自然无法在外网访问。

接下来就需要对光猫和路由器再进行一些设置,但下面的步骤笔者并未进行实操。

光猫的设置方法比较多变,建议自行搜索(搜索 光猫型号+超级密码 ),这里以TEWA-708E这个型号的光猫为例:
首先去光猫背面查看用户名和密码(或者你自行更改过密码,则是自己改的密码),然后访问光猫的ip,比如 192.168.1.1 ,但是这个ip可能只是一些基础设置,对TEWA-708E这个型号需要访问 192.168.1.1:8080 ,用户名密码是一样的。接下来的操作需要你知道自己上网拨号的账号、密码。在 状态 -> 配置向导 里把光猫的工作模式从 自动拨号 改成 桥接模式 ,这里也能看到上网拨号的账号。

然后是AX6S路由器,登录管理页面后,在 常用设置 -> 上网设置 -> 上网设置 里,把DHCP改成PPPoE,账号密码就是你上网拨号的账号密码。简单来说,DHCP是由上级的路由器或光猫等给自己分配网络,PPPoE则是自己拨号上网。成功配置后,在上面的上网信息里,应该能看到 IP地址 从 192.168 开头变成一个公网ip,你可以网页访问 https://www.whatismyip.com/https://www.ip138.com/http://www.test-ipv6.com/ 看看这三个网站显示的IPv4地址和AX6S路由器上显示的IPv4地址是否相同。在AX6S的DDNS设置里,也能看到 WAN口 IP 变成了这个公网ip。再等待3~10min(如果用的不是no-ip,有时可能要等30min),当DNS服务器里都把你的域名解析到路由器的这个动态公网ip后,就能通过域名访问到自己的内网。

最后提一下,很多光猫有一些隐藏功能,比如TEWA-708E这个型号,你还可以访问 http://192.168.1.1:8080/scdmz.html 这个页面来配置DMZ。DMZ功能需要输入一个ip,光猫会把所有端口的流量都转发到这个ip上,相当于转发所有端口。还有开启telnet(ssh),详情参考 这篇文章

6.DDNS的安全性

前面也提到过DDNS的安全性上需要一些注意,下面主要给出4点建议:

定期更换域名,或者定期更改路由器的登录密码(设置的复杂一点)。
一般情况下,国内的网络会屏蔽80、443端口,大家可能会把路由器的管理页面放到其他端口。虽然概率不大,但路由器长时间开着,总有些人会用一些脚本扫描no-ip的各种域名或ip,万一不巧扫到你的,他又恰好扫描端口到路由器的管理页面,一个一个试你的密码,说不定就给你试出来了。

从内网登录路由器后台。
不要在公网登录路由器,因为用的http是不加密的。笔者的解决方法是在端口转发规则里常备一个树莓派的22端口、5900端口转发,需要的时候先ssh登录树莓派、临时打开5900端口,用realvnc的客户端登录树莓派的桌面,浏览器访问192.168.31.1登录小米路由器后台,从内网这里操作路由器页面。这也是对上面一条的补充,因为你并没有在外网改端口开放路由器的管理页面,更安全。

使用非常规的端口。
在转发端口时,内网机器的端口号可以不改,路由器开放的公网端口建议要改一下(前文中的5900改成56789),而且在1~65535这个范围内尽量大一点,这样别人扫到端口的几率会降低,而且就算扫到也猜不到是用来干什么的。

最后,你转发端口时也要注意你的这些服务是否加密,比如SSH就是安全的,realvnc也在传输层有加密,samba用的是用户名密码认证,也算是安全的(只是建议定期修改密码);如果是redis的6379端口,则不应该直接开放到公网,而是要设置一下redis的tls加密才敢放开。有些路由器的DDNS支持在最外层用https加密,也可以打开,但是需要在DDNS服务商处有一些其他设置或收费。

标签: DDNS

添加新评论