说说我的homelab。

homelab

宽带

宽带是电信200M下行,光纤入户,电信提供的光猫,带无线功能。光猫的无线也会开启,备用。电信的光猫只有2.4G。

网件 WNDR4300 无线交换

家里的无线设备比较多,手机若干,MBP,Windows笔记本,Linux笔记本,Switch,天猫魔盒,Sony/Sharp电视。大部分无线设备并没有连接电信光猫的无线信号,而是连接了网件WNDR4300。

WNDR4300是网件比较老的型号了,刷成了openwrt。穿墙比较一般,所以放到了房子中间的位置。它的WAN口连接光猫,对外提供2.4G、5G无线接入,以及给HP Gen8、Optiplex 5050和玩客云的有线接入。

WNDR4300硬件还不错,可以带几十台机器。

HP Gen8 虚拟化

家里主要提供计算的是两台设备。

一台是HP Gen8,安装了ESXi 6.5 HP定制版,直接通过Web就可以管理了。

Gen8连了两条线到WNDR4300,一条是带外iLo,一条是vSwitch0。

Gen8虚拟了多台虚拟机:

  • 1台Windows7,主要是用来人人影视下载
  • 3台ubuntu,跑了一个小型的kubernetes集群,可以用来测试、实验、开发,以及托管一些服务
  • 1台ubuntu,跑了wg,用来从公网连接到内网
  • 1台黑群晖,提供nfs/samba/DLNA等存储

gen8

Gen8的问题是最大只能加到16G内存,创建不了几个虚拟机。

Dell Optiplex 5050 虚拟化

另一台是后来从苦学Flask的王总那里薅来的Optiplex 5050,安装了Proxmox,可以通过Web管理,也可以ssh上去作为一台普通的linux机器使用,因为Proxmox是基于debian的。

5050开始是8G+8G的配置,有4个内存插槽,考虑到内存价格降了不少,我加了16G+16G插满,总共48G内存,免的将来像Gen8一样束手束脚。

Optiplex 5050上虚拟机了多台linux虚拟机,添加到了Gen8的kubernetes集群。5050上的虚拟机性能比Gen8好太多了。

5050

公网访问

wg从公网访问,是需要公网IP的,这是怎么做到的呢?

首先,浙江电信是有公网IP的,我的宽带默认就有;但是这个IP地址隔几天就会变化,所以需要通过DDNS(动态DNS)来绑定到一个域名上去。我的域名是维护在Godaddy上的,而狗爹是有提供API的,所以我在kubernetes上跑了一个Deployment,它会定期获取宽带的公网IP,然后跟本地缓存的地址比较,如果发生了变化,则调用狗爹的API,重新设置。

有了域名以后就可以方便的ssh回来了,也可以像我这样在内网一个机器上配置wg,然后在光猫和WNDR4300上配置端口转发,之后就可以从公网建立到homelab内网的连接了,美滋滋。

玩客云

数据存储主要是黑群晖和玩客云。黑群晖没什么好说的,说说玩客云。

矿难无情人有情,虽然迅雷玩客云经过一系列的骚操作最终凉凉了,但是机器还是很不错的,我的玩客云是从淘宝上花七十几块钱买回来的,全新。玩客云可以很方便的下载资源,因为迅雷对玩客云的客户端是当做超级VIP的,不会被限速。

当然玩客云本身并不提供存储,还需要通过USB 2.0外挂一块移动硬盘。USB2.0也是一个吐槽的点,但是七十几块钱,还要啥自行车。

玩客云可以在局域网内部提供samba和DLNA的。

最近还有一些“蜗牛星际”的机器流向市场,看一些晒单,做工很粗糙,不是很推荐。

DLNA

DLNA是一个很神奇的东西。我的黑群晖和玩客云都开启了DLNA,下好的资源,直接就可以通过Sony电视机播放,非常方便。天猫魔盒在读取NAS方便似乎并不方便。

wg分流

路由器上可以根据PAC进行墙内外流量自动分流。

WNDR4300刷了openwrt安装了wg(作为client),可以通过dnsmasq根据PAC进行ip识别,将命中PAC规则的ip添加到一个ipset中;增加iptables规则,将这个ipset的报文打上标记;然后配置路由规则,让命中规则的报文都走wg0接口出。

下面是我加到openwrt的启动脚本。

ip route add 8.8.8.8 dev wg0
ln -s /etc/dnsmasq_gfwlist_ipset.conf /tmp/dnsmasq.d/dnsmasq_gfwlist_ipset.conf
ipset create gfwlist hash:ip
/etc/init.d/dnsmasq restart

iptables -t mangle -N fwmark
iptables -t mangle -C OUTPUT -j fwmark || iptables -t mangle -A OUTPUT -j fwmark
iptables -t mangle -C PREROUTING -j fwmark || iptables -t mangle -A PREROUTING -j fwmark

iptables -t mangle -A fwmark -m set --match-set gfwlist dst -j MARK --set-mark 0xffff
ip rule add fwmark 0xffff table gfwtable
ip route add default dev wg0 table gfwtable

iptables -I FORWARD -o wg0 -j ACCEPT
iptables -t nat -I POSTROUTING -o wg0 -j MASQUERADE

由于switch没有国行的服务器,无论是访问eshop,还是在线游戏,都非常慢,所以我给switch加了一条路由,让它的流量直接走wg0,于是switch就沦为我看油管的主力机器了,美滋滋。