动态公网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