动态公网 IP & DDNS 外部访问家庭网络指北

in with 0 comment

谈谈我的家用服务器

我组装的二手服务器已经平稳运行了 2 年有于。

详见:年轻人的第一台双路服务器

去年下半年搬家 + 忙于新的工作 + 适应新环境,外网环境一直没有恢复,最近整好了网络,故分享下当前的网络情况。

动态公网 IP

什么是动态公网 IP

动态公网 IP 功能,即一个随时会变化的公网 IP,可外部直接利用 IP 访问,直通到家庭网络中。

众所周知, IPV4 资源枯竭(或许),家用宽带网络默认没有公网 IP。

国内最大固网运营商,中国电信,相比联通移动,拥有较多的 IP 资源。

如此,电信申请动态公网 IP 还是比较容易的,我个人实践下在江苏省 南通,南京,通过微信公众号 “江苏电信”,人工客服渠道可轻易获取到公网 IP。

如何判断自己拿到了公网 IP?

一般情况下,通过 http://192.168.1.1/ 访问你的光猫,在 高级 -> 网关信息中的 WAN IP信息若为外网 IP,则获得了外网 IP,反之为局域网 IP。

image.png

若不清楚公网/内网 IP 具体划分端。 访问 https://jsonip.com/ 会直接返回你的外网 IP, 若此 IP 和光猫的 WAN IP 一致,则为获取到了公网 IP。

例:

{
"ip": "114.232.104.12",
"country": "CN",
"geo-ip": "https://getjsonip.com/#plus",
"API Help": "https://getjsonip.com/#docs"
}

DDNS

DDNS(Dynamic Domain Name Server,动态域名服务)

你现在拥有了一个公网 IP,可他是会变化的或者说动态的,你需要稳定的地址去访问家庭网络,这时自然就需要一个域名,域名是固定的地址,绑定到这个 IP 上。

然后再添加一段逻辑:每当公网 IP 发生变化时,便修改域名绑定的IP。

路由器可以帮你完成这段逻辑。

当然,自己完成也可以。

路由器的 DDNS 服务

最简单的方式,当然是使用华硕的路由器(其他很多品牌可能也有 DDNS 功能)。
我使用的路由器是华硕的 RT-AC68U,在 外部网络 -> DDNS 页面中即可轻松设置,并且拿到一个华硕提供的域名。

image

当然,这个域名必须是 asuscomm.com 的子域名,并且会很长。

如果你想拥有一个性化的,短的域名,那就得购买域名和使用域名服务商的 DDNS 服务了。

域名服务商的 DDNS 服务

我的域名是在万网购买的,也就是阿里云,所以参考了阿里云的 动态域名解析,完成了授权。

参考了 Java 的 SDK 实现了程序,部署在了我的家庭网络中的服务器上。

https://github.com/qq418745/Ali-DDNS

这段代码的逻辑很简单,轮询获取当前的公网 IP,若发生变化,便调用阿里云的 API 修改域名绑定的 IP。

端口映射

家庭带宽 80、443 端口不可用,同时尽量避开 22、8080等常用的端口使用。

拥有了动态公网 IP 和 DDNS 服务后的域名后。

例如访问 home.coala.top:8097 当然要经过光猫和路由器的允许,在猫中配置端口的转发路径,转发给你的局域网地址。

image.png

好奇宝宝篇

IPV4 真的不够用了吗?

我的印象里,接收到的媒体资料都是 “IP资源枯竭”、“IPv4是非常宝贵的资源”。

但是在这几年的工作中,阿里云几百块钱购买个云服务器也能轻易拿到一个免费的公网 IP。

可用的 IPv4 地址数为约 42.94 亿个。中国有多少个 IP 呢? 又在谁的手里?

image.png

找到的统计数据里大部分 IP 都在电信移动联通手里。

家庭宽带下利用 NAT 技术,一栋楼甚至一个小区,只用一个公网 IP 就可满足需求,主动去申请动态公网 IP 的人少之又少。

数亿的 IP,真的如此匮乏吗? 要知道我们的大部分设备都是在家庭带宽网络中的,就算有几亿户,几千万 IP 大概也能满足家庭需求。企业真的有那么大的需求用掉数亿的 IP 吗?

配合上 IPV6 的缓慢推进,再我看来,IPV4 资源紧张,但远没有到火烧屁股的地步,远远达不到 “枯竭” 、“宝贵”这种用词的地步。

参考:

全中国一共有多少IP地址: https://www.51cto.com/article/693790.html

科学上网不完全指北: https://stackia.notion.site/2369da8fe56d416d87569c50cd8bbb7d#051e064434ff4420b187c3e886621cd3