来源:公众号【鱼鹰谈单片机】
作者:鱼鹰Osprey
ID :emOsprey
在前面的两篇笔记《家里宽带搞个服务器,YYDS(一)》《家里宽带申请公网 IP(二)》,介绍了如何获取公网 IP,算是打好了基础。
也有很多道友说,很难获取公网 IPv4,可能每个地方政策不同,运营商不同,政策也不同,因此如果确实有需要的话,可以更换运营商,或者使用 IPv6(这个一般运营商都会给,如果没有,可以打客服问问)。
但是也有道友说 IPv6 现在不少路由器可能不支持,这样连接路由器可能访问不了家里的服务器。但是我们可以用手机热点(电脑连接手机热点)解决,现在手机一般除了分配IPv4,也会有 IPv6 地址,只要流量够多,自用的话,完全够用了。
那么公网IP(v4 or v6)有了,又该如何访问呢?
因为光猫设置了桥接,因此必须使用宽带的账号和密码进行拨号上网。
一般的路由器都有这个功能,自己上网搜一搜就行。
(图片来源网络)
宽带账号和密码就是入网通行证,有了这个,运营商才会认可你,允许你联网,因此必须设置。
设置完成后,正常情况下就应该能够连接路由器上网了,不行的话,重启路由器试试。
现在网络的掌控权已经算是掌握在我们自己手里了,可以为所欲为了。
如何将自己的服务器(电脑、树莓派等联网设备)暴露到互联网呢?即别人可以像访问百度一样访问你的服务器。
最简单方法:DMZ 主机
如果你的路由器支持 DMZ 主机,直接开启这个,就可以免去一大堆设置。
1、在路由器上设置服务器固定 IP
让你的服务器固定局域网的 IP,这样重启后,服务器的 IP 地址就不会变化了(通过 MAC 绑定)。
2、设置服务器 IP 地址
在 DMZ 主机界面,设置服务器的固定 IP,比如192.168.1.100。
(图片来源于网络)
如此一来,你就可以直接通过公网ip ping 通家里的服务器了。
比如可以手机关闭wifi,然后使用自身网络访问 ping 公网ip(事实上,没有接服务器也能 ping 通,tp-link测试是这样的)。
这样所有从外部访问公网 ip 的流量都自动到了 192.168.1.100 这个服务器中,这就是 DMZ 主机的作用。
此时你可以通过手机 ssh 登录家里的服务器(建议使用树莓派测试,没有防火墙限制,配置简单,功耗也很低)。
注意先在内网测试 ssh 登录没有问题,再尝试使用 公网 ip 登录。
比如 ssh pi@172.70.214.xx, 正常情况下,不管在内网还是外网,都可以正常登录。
端口转发
上面的方法,将服务器的所有端口都开放了,比如外部访问的 2080 端口对应服务器的 2080 端口,一一映射,可能不是很安全(注意,有些端口是从运营商的层面禁用了,因此怎么样都是无法访问的)。
因此我们可以放弃开启 DMZ,转而使用端口进行转发。
(图片来源于网络)
比如外部端口 10000,内部端口 2000,IP 地址 192.168.1.100。
那么你可以通过内网访问192.168.1.100:2000,进而访问服务的 2000端口,如果这个端口是网页,那么可以在浏览器输入上面的信息访问。
而如果使用公网 IP,也是类似的,不过端口变成 10000,如 172.70.214.xx:10000 就能访问家里的资源了(用手机访问)。
如目前鱼鹰老家的树莓派,安装了 Nginx 服务,端口号 20081,在浏览器上就能看到鱼鹰存放的一些测试文件了(后面有机会分享这个)。
(后面准备有时间,把分享的公众号资源放在这里,方便大家下载,云盘速度实在太慢了,但前提是先把树莓派的安全问题搞定,不然被黑客黑了就得不偿失了)。
ssh 登录默认端口是 22(考虑到安全问题,可以换一个),因此这个映射一定要有,否则你在外面就登录不了服务器了。
怎么像访问百度一样访问服务器呢
回到今天的主题,如何像上面图片一样,能随时随地访问呢?答案是 DDNS。
有点网络常识的都知道,网络是通过 IP地址互联的,但是我们ip地址不容易记住,因此有了域名,这样我们可以通过域名来间接得到 IP ,从而访问。
这里需要 DNS 服务来得到我们需要的 IP,比如,我们访问 www.baidu.com,电脑其实也不知道它对应的 IP,但是它可以一级一级往上查,从而得到它的 IP 地址:
可以看到,百度的 IP 是 39.156.66.10
但是这种 IP 一般是固定的,DNS 服务器有存档(就算IP改变了,也会更新),而我们家里的宽带虽然申请了公网 IP,但它是动态的,可能隔一段时间或重启,IP 就变了。
此时我们可以通过邮箱或者其他方式告诉我们公网 IP,通过 IP 访问。但这种方式显然很麻烦。
因此我们可以使用 DDNS 服务。
鱼鹰采用了公云(https://www.pubyun.com/products/dyndns/)的免费 DDNS 服务(TP-Link路由器有这免费功能,但我家的不能用,哎)。
只要在上面注册好,就可以拥有一个免费的 xxx.f3322.net 的域名。xxx 可以任取自己喜欢的。
然后在树莓派中定时通过脚本定时更新公网 IP 到服务器中。
这样你访问域名 xxx.f3322.net 时候,就可以通过公云的 DDNS 服务得到你家里的 IP 地址了。
限于篇幅,下期详述,感谢支持。