0%

我在往家里路由器上迁东西

说在前头

上次文章还没写完呢,先鸽着。我已经决定不续费阿里云服务器了(费用和资源利用率问题)。但是少部分项目,如SnowBao雪宝,迁移到云函数上要改很多东西,我懒得动,所以还是要有一个简单的服务器。要不自己部署一个?

开始折腾

回家了,得继续折腾!为此,我入手了一台入门软路由,配置如下:

硬件型号
主板升腾NI945W-3
CPUIntel(R) Atom(TM) CPU D2550 x86_64
内存金士顿DDR3 2G
SSD慧荣SM2244LTAB 8G

配置好像不咋地?没关系,我部署的应用不怎么占内存和CPU的。卖家帮忙刷好了eSir编译的OpenWrt,由于我家联通宽带有公网IPv4地址,所以我就想说干脆搭一台宝塔服务器放家里算了。我部署的一些网站并不要求高可用,故家里短暂停电也没有太大关系。

我没有将其作为主路由使用,而是作为客户端使用,那么它的路由功能相当于废了!因为我不想引起现有路由配置的改变,懒得动。

哪来的公网IPv4地址

现在运营商一般拨号后给的是内网IP地址了,不像十几年前我家刚接入ADSL 12M铜线宽带每个人还有一个独立IP,甚至80端口还是开放的。现在买宽带的人越来越多,而我们国家被分配的IPv4地址才3亿多个,很少很少,所以运营商只能使用NAT技术来缓解公网IPv4地址紧缺的情况。但是!长沙联通可以在宽带账号后面加上@changsha,其他地区联通可以加上@pppoe拨号来获取公网IPv4地址,如果不行或者是其他运营商请致电客服获取公网IPv4地址。

我家是光猫拨号咋整

现在安装网络的时候,师傅帮你在光猫里面配置好了宽带账号密码啥的,而且光猫的DMZ功能好像是假的,所以我们需要用路由器来拨号。我们可以去网上搜索光猫的超级管理员账号密码,然后进Telnet后台把宽带账号密码查出来备份,最后在网页管理端把连接方式修改为桥接模式(Bridge )即可。然后我们可以重置路由器,使用PPPoE拨号上网即可。

IPv4地址变化怎么搞

我们家庭宽带不像企业专线一样有固定IP地址,我们的IP地址都是由运营商随机分配的,所以我们做域名解析的时候咋弄?最简单的就是路由器的DDNS功能了,像我家TP-LINK的路由器自己有DDNS,注册一个账号登录即可,会给你一个域名,然后把自己想要解析的子域名做CNAME到DDNS的域名即可。我总觉得这样不是很优雅,我的域名解析商是DNSPod,提供了API接口供修改解析。刚好Python里面有朋友封装了这些接口,模块名是:dns-dnspod,使用pip3 install dns-dnspod即可。所以我们可以使用这个来给域名做A记录。我们先去创建一个解析记录,然后通过API取得record_id,然后定时修改解析记录即可。

我用Python相关代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
import requests
import pydnspod
user_id = '{YOUR_DNSPOD_ID}'
user_token = '{YOUR_DNSPOD_KEY}'
try:
ip = requests.get("https://ip.yinghualuo.cn/getip").text # 取得公网IP地址,如果你是软路由拨号可以直接取系统的ip地址。
# ip = json.loads(requests.get("http://pv.sohu.com/cityjson").text[19:-1])["cip"] 备用
dp = pydnspod.connect(user_id, user_token)
# print(dp.record.record_id("{主域名如baidu.com}","主机记录如www")) 这个是来获取record_id的 获取后填在下面即可
print(json.dumps(dp.record.modify("{主域名如baidu.com}","{上面获取到的record_id}","{主机记录如www}","{记录类型}",ip)))
except:
pass

然后使用crontab创建定时任务,每几分钟运行一次即可。

OpenWrt怎么安装宝塔

OpenWrt本身应该不能安装宝塔,但是这个固件有Docker呀,我们可以pull一个CentOS最新的镜像,然后执行

1
docker run -itd --privileged -e "container=docker" -p 443:443 -p 8000-9000:8000-9000 --name="centos" --restart=always 300e315adb2f /usr/sbin/init

就创建了一个新的容器,并暴露了一些端口。为啥不暴露80,是因为家庭宽带的80端口被封啦。然后再在容器里面执行

1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

等一会儿就OK啦,记得把默认的8888端口地址改改。

怎么守护Python后端服务

宝塔安装Supervisor进程管理器,添加守护进程即可。用到Python虚拟环境的可以写上虚拟环境里Python的完整路径来执行程序。

结语

用了几天感觉这个小主板还是挺不错的,不卡也稳定。百来块钱,体验到了非一般的感觉~

目前SnowBao雪宝已经完全迁移到了软路由上了,希望大家用的开心。