如何利用家庭宽带和自己家里的电脑,搭建可在公网访问的服务器
像软件开发工程师,我们经常需要在任何地方访问家里的文件服务器,或者通过 http与https访问自己家里的web服务器。但是,由于公网IP稀缺,家庭宽带一般都没有 IPv4的公网IP。而且,即使你有IPv4的公网IP,一般运营商为家庭宽带封禁了80,8080,443,23等端口。非常的不方便。
但是,好消息是,中国所有的宽带运营商,给所有的家庭宽带分配了/64的巨量的IPv6地址。这些都是全球可以访问到的公网IP,只是,大多数人都不知道如何利用这些IPv6资源。
1,首先,你需要将您的光猫设置为桥接模式:很多人家里的宽带,安装师傅会用光猫进行PPPoE拨号,这种情况下,一般你是获取不到IPv6地址的。只有一个192.168.1.X的私有地址。所以,我们需使用无线路由器来进行PPPoE拨号,而运营商提供的光猫,大多数没有给你管理密码。好在你可以打运营商电话,要求他们派人上门,帮你把光猫修改成桥接模式,而使用无线路由器来拨号。
2,光猫修改成了桥接模式之后,要进入你的无线路由器中,设置PPPoE拨号的账户和密码,这个只要问以下安装师傅就可以。或者打运营商客服电话,就可以问到。
在无线路由器中,一般都有启用IPv6的选项,你启用IPv6,如果还有关闭IPv6防火墙的功能,你也一并选择关闭 IPv6防火墙。一切设置好之后,你手机或电脑连接 wifi,如果一切正常,你的手机或者电脑的wifi连接中可以看到240开头的公网IPv6地址,比如:240e:300:1f8c:2000:7738:43c:34b1:5213,这个就是中国电信宽带分配的公网 IPv6地址。240e开头的,就是中国电信目前分配的地址。2409开头的好像是中国移动的,中国联通的好像是2403开头,anyway,当然,开启了 IPv6,并不是IPv4就不能用,这个双栈支持的。一般你还会获得一个192.168开头的内网IPv4地址,可以自动访问IPv4网络。
这个时候,你可以在你家里的电脑上开启一个web服务器在80端口,再用你的手机连接wifi,在手机浏览器中输入地址 http://[240e:300:1f8c:2000:7738:43c:34b1:5213]:80 (把其中的IPv6地址,修改成你电脑上获得公网IPv6地址,主要,要在IPv6地址两边加上中括号[ IPv6地址])访问你家里电脑上的web服务器。如果能成功打开你电脑上的web服务器,那么说明你的IPv6网络配置没问题。
测试用外网通过IPv6访问自己家里的电脑上的web端口: 用你的手机,关掉wifi,而连接手机流量网络,中国的所有移动运营商都给手机开启了IPv6(部分流量卡没有IPv6地址),手机连接 4G 或者5G网络之后,在手机浏览器中输入前面的地址,http://[家里电脑IPv6地址]:80
尝试打开你家里电脑的web服务器。如果能打开,则说明你的无线路由器上的配置正常,可以进入第3步。
在这一步,您可能会遇到一些问题,一个是误把fe开头的地址当成公网IPv6地址,这个是不对的。在IPv6里,fe开头的,不是公网地址,类似IPv4的192.168或者10.x.x.x的地址。如果没有获得240开头的地址,说明你的无线路由器配置不正确。继续折腾你的无线路由器。
如果获得了240开头的公网 IPv6地址,手机连wifi,可以访问到web服务器,但是,手机连4G,5G网络的情况下,访问不到家里的web服务器,那么,可以尝试把端口修改成其他端口,比如9999,因为,我们前面的设置,是把web服务器的端口设置为了80,而有的地方的宽带运营商,是封禁了IPv6网络的80端口以及8080端口的,你修改好端口之后,你再用手机访问 http://[ 家里电脑的IPv6地址]:9999,后面的9999,就是你家里的web服务器的端口号。如果能访问,说明你的无线路由器设置正常。如果确定你的运营商封禁了80和8080端口。打电话去给运营投诉,要求开放80端口,威胁不解决就换宽带。(大多数情况下,可以给你解封。)
如果不解决,也不准备换宽带,也可以用,只不过,你无法通过IPv4网络访问你家里的web服务器了。
如果换了端口为9999或者其他端口可以在外网用手机访问到你的web服务器,说明你的无线路由器折腾好了。如果9999端口都无法在外网访问到。那么,很有可能是你的无线路由器内置了一个不可关闭的IPv6防火墙。
此时,怎么办呢?A: 网上搜索你的无线路由器品牌型号,看看如何关闭 IPv6防火墙。可悲的是,大多数家庭是运营商赠送的无线路由器,这些无线路由器都有一个毛病,就是支持 IPv6,却无法关闭IPv6防火墙。比如,你如果是用的H3C magic rc3000路由器,我就找华三公司让他们给我弄了一个新固件,通过无线路由器的web管理界面,就可以把新固件刷入这个路由器。然后就关闭了IPv6防火墙。如果你恰好也是这款H3C magic RC3000路由器,那么,你可以访问这里分享:华三H3C magic RC3000路由器已关闭ipv6防火墙的官方固件_Andy漫漫说,仅这个号的博客-CSDN博客,下载H3C 公司给我发来的固件更新你的路由器。
如果你在网上找不到你的路由器如何关闭IPv6防火墙,我的建议是你在淘宝重新买一个无线路由器,现在支持IPv6的Wifi6无线路由器特别多。而且特别便宜,比如,我买了一台小米的AC2100,价格才140元,再加上20元,让卖家刷成 OpenWrt的固件。就可以完全自己设置自己的无线路由器了。如果你的无线路由器,让卖家刷成了openwrt系统,那么,你也要进入无线路由器里,设置好IPv6防火墙的规则。简单的规则是,允许所有区域,所有协议,所有地址,所有端口的流量通过。删除里面的其他所有IPv6防火墙规则。就可以了。
3,第2步解决了,你可以用手机,在外网通过4G,5G网络访问到你家里的web服务器的80端口。还有两个问题需要解决,一个是你的电脑只有IPv6的公网 IP和IPv4的私网IP,你手机4G,5G网络是自带IPv6地址的,所以你能访问,但是,如果你想让没有IPv6地址的公司电脑也能访问到。怎么办呢?另外一个,那就你的IPv6地址是动态的,只要你的路由器重新断开重新拨号,那么,你也不能无法知道家里电脑的新的IPv6地址了。
这两个问题,都可以通过 cloudflare 来解决。
到cloudflare.com去免费注册一个账号。
要使用 cloudflare的服务,你手续先需要注册一个域名,比如,你可以到namesilo.com去注册一个便宜的域名。1美元的域名很多,比如 xyz结尾的域名,top结尾的域名,等等,0.99美元一年。有了域名之后,在cloudflare“添加站点”,这个过程,请查看 cloudflare的相关教程。简单过程是,输入你的域名,然后,在域名注册商的界面上,把dns解析服务器设置成cloudflare提供的即可。一般是 nameserver设置成:
crystal.ns.cloudflare.com, felipe.ns.cloudflare.com
接下来,需要让 cloudflare 来给你的家里的电脑做反向代理。这部分知识,可以google到很多文章,另外,为了解决你家里电脑的IPv6在路由器重新启动之后地址变化的问题,你还需要搜索以下如何使用 cloudflare的DDNS服务,就是动态域名服务。简单来说,就是在你电脑上安装一个 cloudflare推荐的软件,这个软件,可以通过cloudflare的 API,(当然要秘钥),每过几分钟就把新 IPv6地址更新到cloudflare。
通过以上步骤操作,你就可以在全球任何电脑上,通过https://你的域名,来访问到你家里的电脑的web服务了。而且,还有一个好处,由于这个域名是解析到了cloudflare的IP地址,还对你的家里的IPv6地址隐藏起来了。
cloudflare是全球最大的CDN提供商。。。。。没有之一。可以放心的使用他们的服务。绝大部分服务是免费的。
当然,如果后续大家觉得这篇文章有价值,可以在文章后面留言,留言如果踊跃,我会再写一篇文章来接着讲如何设置cloudflare的反向代理,以及动态域名