what are you 弄啥呢
一直想搞一个家庭NAS,用来存点资料图片啥的;但有不太想去买个成品NAS。一方面,之前有个同事买了一个成品NAS,便宜的那种,1个T几百块,但是没有服务(内网穿透等),每次下载100K速率,滴滴沥沥,像前列腺炎最晚期;另一方面,像群辉这种,还是有点小贵,而且封闭系统,玩点不多,不值当。
于是乎,花了450在某鱼上买了一个工控机,j4125 4核2.0HZ,8G内存,128G SSD。大概长这样:
设备装的爱快系统,当个路由器。爱快系统支持虚拟机,所以在配置了一个虚拟机跑了一个开源网盘服务、gitea、一个blog系统。基本上也就这点追求了。
但是,这个系统不稳定,动辄就是卡死。简单排查了一下,疑似磁盘访问有问题,经常出现进程访问磁盘无法返回(处于D状态卡死)。怀疑是系统对磁盘存在兼容性问题(毕竟是一个路由器系统),或者磁盘本身品质不够好(坏块多)。who knows, 毕竟也是淘的二手的......
死马当活马医吧。 搞了个U盘,烧了centos7 镜像,重刷系统,一气呵成。没想到,系统启动后网络一直无法驱动! 一查,才发现设备是i226-v的网卡,centos7没有驱动。
度娘问了半天,找到intel官网,说有一个驱动集合包括i226-v的驱动;下载半天,解开发现确实有i226-v的驱动,windows的......
郁闷之际,想起一句老话:内事不决问百度,外事不决问谷歌,房事不决问天涯......
赶紧结印,召唤科学上网。一通搜索后找到有支持该驱动的开源操作系统:
虽然是个ubuntu桌面版(22.04.2, 计划是装个服务版,服务版也没有驱动),也不挑剔,能用才是王者。下载,制作启动盘,安装... 遇到启动镜像无法加载,配置ultraIso制作是选择raw方式写入,正常安装。
重启后,网络正常...
bingo,起死回生!
配置路由
网络规划
设备有4个独立的2.5G 网络接口,设计enp1 为WAN口,并配置一个网桥br0,将enp2 enp3 enp4 加入网桥,做成本地局域网。
ubuntu22.04 支持NetworkManager 和systemd-networkd两种网络管理方式。其中NetworkManager主要是用于图形化的网络配置管理。我这里选用了systemd-networkd作为网络管理服务(相对更轻量)。
修改 /etc/netplan/01-network-manager-all.yaml
添加如下内容:
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: yes
enp2s0:
dhcp4: false
dhcp6: false
enp3s0:
dhcp4: false
dhcp6: false
enp4s0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [enp2s0,enp3s0,enp4s0]
dhcp4: no
addresses: [10.10.10.1/24]
parameters:
stp: false
配置完成后,调用 netplan apply 使配置生效,可以看到enp1 获取到IP地址,并且br0 也配置完成:
安装dnsmasq
配置本地局域网,需要为局域网提供DHCP和DNS解析,这里简单用dnsmasq就OK了。
卸载dnsmasq-base 版本,安装dnsmasq,编辑 /etc/dnsmasq.conf
添加监听的接口br0,dhcp网段 为10.10.10.100-10.10.10.235
保存后,启动dnsmasq服务。
注意:这里可能会报错,原因是之前systemd-resolve服务会监听53端口,导致端口冲突。stop 、disable systemd-resolve服务,手动创建 /etc/resove.conf 文件,并填写解析dns地址(如 nameserver 114.114.114.114)重启dnsmasq。
启动完成后,PC介入设备的LAN口侧可以分配到10网段的地址,并且能够与设备互通
配置路由转发
首先,要启用协议栈转发功能: 编辑/etc/sysctl.conf 将IPV4 和IPV6 的forward 功能使能:
执行 sysctl -p
使配置生效
然后,配置SNAT,以支持地址映射:
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o br0 -j MASQUERADE
配置完成后,局域网PC 可以接入设备并能够访问外部网络...
最后,持久化iptables配置:
sudo netfilter-persistent save
验证
重启设备,确认网络链接正常、网桥配置正常、域名解析正常, 局域网PC可以正常接入,获取IP地址,并且能够正常上网。
what are you prepare to do?
接下来就随心所欲了:
- 搭建网盘服务
- 搭建代码服务
- 搭建个人博客服务
- 搭建全局代理
- 搭建内网穿透
- 搭建资源服务
- things as your wish
Ending enjoy!