什么是DNS
DNS就是一个网络电话本
上面记录了 baidu.com
(人) 的 IP地址(电话) 是 220.181.38.251
每个人都可以创建自己的电话本,网络上也有很多公开的权威电话本,如阿里云DNS、谷歌DNS,甚至是根DNS(全球最权威的电话本)
什么是IP
IP是一串能标识网络地址的字符,
如IPv4的 192.192.192.192
还有IPv6的 2001:6d0:6d06::53
两台计算机通信,必然要先知道对方的网络地址,也就是所谓的IP地址。
IP地址的数量是有限的
什么是域名
因为上面IP地址在公网中无法自定义(毕竟你的所在地址由运营商管着,给你什么你就是什么,像极了你的手机号一样)
人们为了记忆这串地址,想出了一个别名来标识,
比如 baidu.com
就是百度的域名,通过上面的 DNS电话本
做了记录,
映射了一个 baidu.com -> 220.181.38.251
的关系
域名通常按后缀做了一些分类,比如“国际的/国家的/地方的”,比如“商业的/民间的/政府的/教育的/其他的”
-
国际的:.com/.net/.org.........
-
国内的:.cn/.com.cn/.edu.cn/.org.cn..........(其他国家一样)
-
地方的:.cq.cn/.bj.cn............
-
.com(商业的)/.org(组织的)/.gov.cn(政府的)/.edu.cn(教育的).....
-
又有按流行程度所谓的 “主流的/非主流的”
另外,很多人有个误解,这些域名都很贵。
其实不然,瞎注册个也就一年十几块到几百块不等,当然,域名的可记忆性、更短的域名、更主流的后缀就决定了域名可能会有很高的价值了。
举个例子
-
王思聪的
bbbb.com
(撕逼) 目前好像没有解析了 -
小米的 mi.com
-
微信靠打官司仲裁回来的 weixin.com
什么是DDNS
因为 IP地址数量是有限 的,运营商一般会给一个接入点发一个临时的公网IP
地址,过一段时间不用或者有重新拨号等事件发生时,会将这个临时公网IP回收或者重新发一个新的IP地址。
然而我们刚好通过DNS电话本做了个域名到IP的映射关系(域名解析)
IP如果随时都可能改变的话(好比你经常换手机号),鬼知道这时候访问 baidu.com
的时候会映射到哪个IP上?
于是出现了DDNS这个产物
严格意义上只是个名词,标识D(动态的)DNS(域名IP解析)
也就是,我们本地会起一个服务,专门用来定时 主动上报 我们当前的公网IP地址给DNS服务器,像极了你换手机号后群发给好友们 “我换手机号了,望惠存”
这时候,DNS服务器收到数据后,会做一个解析更新,让访问者可以访问到对方已经变更后的最新IP上(当然,生效可能需要点时间)。
什么是端口转发
在国内网络环境下,运营商为了避免普通接入网络的用户在自己本地网络上搭建一些非法网站 (我不懂这个非法网站的意思,也没敢问) 于是普遍屏蔽了各种可能用于提供服务的端口,如“80/443/8080 web网站服务”
,“1723 VPN-PPTP”
,“445 SAMBA文件共享”
等等等等等等
但我们又需要将一些服务暴露到公网上,为了绕过运营商的限制,于是我们尝试端口转发
可惜了,端口转发有个前提,“你必须拥有公网的IP”
至于你有没有公网IP,可以自己看看自己路由器上获得的IP跟访问 https://ip.hamm.cn 后看到的IP一致,不一致的话,就代表了你没有公网IP。
如果你没有公网IP,可以尝试继续往下阅读内网穿透部分。
端口转发如其字面意思一样,将某个公网访问的端口转发到某个内外的服务端口上。
一般的路由器都会有这个配置,可以将公网的某个端口转发到局域网某个IP的某个端口上。
于是,我们尝试将公网的 10086 端口 转发到局域网里的 192.168.1.100
上的 80 端口,那么,我们通过 http://公网IP:10086 即可在外网访问到内网的 http://192.168.1.100:80 上的网站了。
什么是内网穿透
当我们没有公网IP时,端口转发就没法做了,但我们可以借助其他手段。
但这也有个前提,你必须有一台有公网IP的机子可以随时被公网访问(这里可以是公网固定IP,比如服务器;也可以是DDNS的公网动态IP)。
比如 ssh反向通道
代理,通过局域网ssh连接到对应公网IP上,公网IP通过Nginx等工具做 反向代理
,即可通过访问公网IP转发到内网IP的服务上,局域网的服务即可成功暴露到公网。
也可以使用VPN的方式,将局域网连接到一台公网的VPN服务器上,通过与公网VPN服务器组网,完成一个公网上的局域网通道,再通过上面的Nginx反代方式进行公网穿透。
当然,你甚至可以直接使用Socket方式的穿透,本机与公网IP的机子直接建立长连接,直接进行数据的传递与接收,完成内网穿透。
办法有很多。
今天就简单介绍了这么多,下次有机会的话,我们来聊聊NAT地址转换与内网打洞。