今天给大家分享的是如何利用 IPv6 免费把家里面的电脑变为服务器。我们家电脑与服务器最大的区别就是服务器有一个公网 IP,可以公网访问其服务,当我们给家里面电脑用上 IPv6 公网 IP 时,使家里面电脑运行的服务,可以被公网访问,那它就可以当服务器用。
先说一下,家里面电脑做服务器不太适合的场景:
-
搭建网站,因为现在像 GithHub Pages、Cloudflare Pages 和 Vercel,它们都提供托管网站的功能,并且免费稳定,是完全没有必要用家里面的电脑做服务器来搭建网站的。 -
如果你是想远程控制家里面的电脑,也没有必要通过这种方式,我更建议你用 Tailscale 实现,再使用屏幕共享的方式去控制,使用这种方式的话,你可以完全关闭你的防火墙,会更安全。当然,如果你家里有 IPv6 公网 IP 就更好了,你可以直接让 Tailscale 建立这种点对点直连,延迟更低,体验更好。
那哪些场景可以用呢?我举 2 个例子:
-
比如你经常有远程控制家里面的电脑的需求,但又不方便使用 Tailscale 的时候 -
比如你需要一台云服务器接口联调,比如说我跟微信公众平台做接口联调。这种情况用自己的电脑性能会更好,也会更方便
这些场景就比较适合把家里面的电脑当服务器来用,其它的场景你可以探索一下,可玩度还是挺高的。
前置要求
如果你想把家里面的电脑当服务器来用的话,还是有一点前置要求的。
1、IPv6 公网 IP
首先,需要你有一个公网 IP,现在 IPv4 公网 IP 都需要收费,但如果你的宽带是电信的话,你可以免费获得 IPv6 公网 IP,电信宽带都有 IPv6 公网 IP,只是默认关闭了,只要你的路由器支持 IPv6,只要在路由器上面设置开启一下就行。移动和联通宽带我因为没有用过,不确定,你可以问下客服,应该是已经支持了的。
2、防火墙可配置
其次,因为你需要对外提供服务,所以你就需要防火墙配置指定 IP 可被公网访问,而默认光猫的防火墙是关闭了的,我们是配置不了光猫的防火墙的,所以我们只让光猫做光信号转电信号,而不使用其拨号,这样它就没有防火墙。像有的路由器,它是支持防火墙配置的,比如华硕的一些路由器,但大多数路由器都不支持,所以如果你的路由器不支持的话,要想配置防火墙,你要么就换个路由器,要么就买个软路由,要么给你让路由器刷个 OpenWRT 系统,但给路由器刷这个 OpenWRT 系统,也是需要路由器满足一定要求的。我用的小米路由器,我没有刷这个 OpenWRT 系统,我买了个软路由,软路由是电犀牛的 R68s,我用了几个月了,使用下来还是比较稳定,我个人还是比较推荐的。
因为主题原因,这里我就展开如何开启 IPv6 和折腾软路由了,可以先网上搜索一下。后面我会专门出一期教程来专门讲这个。
所以前置要求也可以说是需要你宽带支持 IPv6,你路由器支持 IPv6,你路由器防火墙可配置(或者你有一个软路由)。
3、域名 / Cloudflare(可选)
我们还可以进一步通过在 Cloudflare 上设置域名解析实现域名访问。如果你只想通过 IP +端口的方式访问的话,当然也就不需要域名了,也不需要使用 Cloudflare 了,所以域名与 Cloudflare 是可选的。注意,使用 IPv6 公网 IP + 端口访问的话,你访问网络也是需要支持 IPv6 的,现在手机网络默认就有 IPv6,如果使用电脑接的网络不支持 IPv6 访问,可以连接手机热点。使用这种方式,我强烈建议你要开启来源 IP 白名单配置,因为如果你的公网 IP 泄露的话,可能会被 DDoS 攻击,虽然我们用的软路由或者是路由器它有一定的 DDoS 防护,但也不能应对大规模的攻击,可能会被打穿。如果你不方配着来源 IP 白名单的话,那我就强烈建议你要用域名的方式访问,因为用域名的话,我们用 Cloudflare,可以使用它的 DDoS 防护,这样就更安全。
现在域名也比较便宜,几块钱你就能买一年,Cloudflare 也是可以免费注册使用的。域名的话,你也可以在这个Cloudflare 上面购买,因为它的价格基本上是最低的,也没有一些第一年便宜第二年贵的套路。
当然,使用 Cloudflare 实现域名访问,其实也还是有一个缺点,因为它是国外公司的产品,在国内访问托管在上面的域名的时候,可能不是很稳定,所以可能有的同学访问就会比较慢。
配置步骤
配置 IP + 端口访问
获取电脑 IPv6 公网 IP
首先需要获取一下电脑的 IPv6 公网 IP,我们可以通过这个命令来获取自己的电脑的 IPv6 公网 IP,这个 240C::6666
是一个 IPv6 公共 DNS 地址。
240
开头就是公网 IP,红色就是我的 IPv6 公网 IP。
防火墙配置只有电脑 IP 可外网访问
获得了 IPv6 公网 IP,我们还需要在我们防火墙里面配置指定 IP 可被公网访问,我在 iStoreOS 系统中配置,在「网络-防火墙-数据规则」里面配置我添加一条规则,配置我电脑的 IP 和端口 9090 可被公网访问,保存并应用。
让启动的应用服务可通过 IPv6 访问
我们有 IPv6 公网 IP,配置了防火墙,但此时应用服务也需要支持 IPv6 访问才行,我使用一个简单 Flask 项目来举例说明,下面创建一个简单的 Flask 项目,使其启动后可通过 http://[ipv6]:9090
来访问。
创建 Flask 项目:
mkdir flask-demo
cd flask-demo
python3 -m venv venv
. venv/bin/activate
pip3 install flask
vi app.py
app.py 代码:
#app.py
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='::', port=9090)
启动:
python app.py
启动结果:
我使用 telnet 命令和网页访问测试一下,我利用 Tailscale 使用屏幕共享控制另一台电脑测试,这台电脑是连的热点,所以是支持 IPv6 访问。
结果显示 telnet 与网页访问都没有问题。如果只想通过这种方式访问家里电脑的服务的话,那后面就不用看了。
配置域名访问
Cloudflare DNS 配置实现可域名 + 端口访问
可以通过 Cloudflare 配置域名解析实现可域名访问,因为现在的 80 和443 端口是被运营商封禁了的,你不能直接使用 80 与 443 端口。先配置实现域名 + 指定端口访问。
在 Cloudflare DNS 中配置 DNS 解析:
DNS 解析可通过 DNS Checker[1] 来检测是否已生效,再用另一台电脑通过 ping6
来测试是否已生效,注意是 ping6
不是 ping,我就在这里踩坑了,一直用 ping,结果不通,以为 DNS 解析有什么问题,浪费不少时间。以下代表 ping 通了。
目前就可以通过域名 + 端口访问了。
Cloudflare 配置实现不要端口直接域名访问
前面说这个 80 和 443 端口被运营商封禁了,但我们可以使用 Cloudflare 实现免端口访问。Cloudflare 可以通过配置端口转发的方式实现不要端口直接访问,相当于把 80/443 端口转发到指定端口。
首先,我们需要在 「规则 - Origin Rules」里面创建一个自定义规则。配置当访问二级域名 wx.depp.wang 时,请求转发到 9090 端口:
第二,在 DNS 解析这里打开这个代理状态:
我解释一下,为什么要打开,打开后,我们在访问域名的时候,它会先解析到 Cloudflare 的主机上,Cloudflare 在那个主机上面给做一个代理转发,转发到我们配置的公网IP 和端口对应的服务上。这样就实现了直接域名访问。
DNS Checker 检测已生效后,通过 ping6
与网页测试。
都没有问题,说明我们配置成功。
因为公网 IP 可能随着网络的变化而变化,根据你自己的 IP 变化的情况,你可以自己判断要不要使用 DDNS,它可以动态的把你的公网 IP 更新到 Cloudflare 的 DNS 上去,这样你不用自己手动更新 IP,如果你用的话,我推荐使用 ddns-go[2],如果使用 macOS,可以用 brew 安装
版权声明:本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系客服并出示版权证明以便删除!
下不了
下