家里吃灰的电脑再利用,买个域名就能当服务器用
家里吃灰的电脑再利用买个域名就能当服务器用家里不用的旧电脑经过简单的配置也能当服务器使用。不是那种只能在局域网里自嗨的服务器是从外面用手机5G、用公司WiFi都能直接通过域名访问的那种。而且全程只需要花39元购买一个域名。之前我租了台最低配的ECS跑个人项目到期续费时发现涨价了不少。为了省点钱不如把旧电脑再利用一下。IPV6 DDNS 方案只需要准备一个域名就能实现家里电脑当服务器用。你家宽带大概率已经有IPv6了我用的是移动宽带光纤入户。之前一直以为IPv6是个很遥远的东西直到有天在路由器后台瞥了一眼——嗯居然已经分配了IPv6地址查了一下才发现三大运营商这几年已经把IPv6铺得差不多了。移动尤其积极基本上只要你家光猫不是十年前的古董IPv6默认就是开的。光猫有IPv6不代表万事大吉了。后面还有几个坑得我挨个说。配置路由器支持ipv6路由器也需要配置我使用的是小米路由器在路由器运行模式的界面切换到中继模式。连接到路由器的设备直接被分配了ipv6地址光猫负责ipv6地址的分配。光猫的IPv6防火墙光猫设备拿到了公网IPv6地址。路由器工作在了中继模式。从电脑ping外网的IPv6地址也通了。但是外网设备能访问家里设备吗不行。后来经过调查发现光猫默认开启了IPv6入站防火墙把所有来自外部的请求全挡了。问题也好解决登录光猫后关闭ipv6防火墙就好了。进光猫后台找安全或者防火墙相关的设置页把IPv6入站防火墙关掉。每个光猫的选项位置不同有的叫IPv6 SPI防火墙有的叫IPv6入站规则。总之找到它关掉它。关掉之后从外面访问家里的IPv6地址——通了IPv6地址居然会变家庭宽带的IPv6前缀是通过DHCPv6-PD动态分配的。路由器重启、ISP那边维护、或者DHCPv6租约到期重新获取——这些情况都可能导致你的前缀发生变化。前缀一变后面所有设备的地址就全跟着变了。 为了应对ipv6地址变化我们需要一个DDNSDynamic DNS服务。通过将域名和IPv6地址做一个映射来实现动态更新IPv6地址。DDNS方案Python脚本 阿里云域名写个脚本每隔几分钟检测一次本机的稳定IPv6地址如果变了就调阿里云API更新域名的AAAA记录。域名我用的阿里云便宜。.cn后缀的一年三十多块.com也就六七十。在阿里云控制台申请就行跟买东西一样没什么好说的。然后是权限。别用你的主账号AccessKey去RAM访问控制创建一个子账号专门给DDNS脚本用。权限给最小化——只需要三个操作DescribeDomainRecords、AddDomainRecord、UpdateDomainRecord。脚本的逻辑其实很简单整个脚本不到200行纯Python标准库不需要pip install任何东西。Python 3.6以上就行现在几乎所有Linux发行版都自带了。定时任务用cron每5分钟跑一次*/5 * * * * /usr/bin/python3 /opt/ddns/ddns.py/var/log/ddns.log215分钟这个频率我觉得刚好。够快——就算前缀变了最多5分钟的不可达时间。也够慢——一个月下来API调用次数也就八千多次阿里云的免费额度完全够用。跑起来了到现在跑了两个多星期还算稳定。 现在在外面用手机5G打开浏览器输入域名直接就能访问到家里那台电脑上的服务。跟访问云服务器没什么区别。总结当然免费的东西总有代价。家里宽带的上行带宽一般就30~50Mbps跟云服务器比确实差了点意思。另外运营商基本都会封掉80和443端口家庭宽带不允许对外提供标准Web服务你得换别的端口比如8080、8443。还有稳定性——家里断个电断个网服务就挂了。不像云服务器有SLA兜底。但如果你跟我一样只是跑个个人项目、搭个开发测试环境、挂个API或者私人网盘之类的这个方案绰绰有余。