电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
HomeServer计划——网络改造篇
分 享
扫描二维码分享
HomeServer计划——网络改造篇
服务器
旁路由
家庭
摸鱼之家
关注
发布时间: 2021-05-10
丨
阅读: 727
# HomeServer计划——网络改造篇 ## 前言 许久不发文章了,哈哈。这次直接发个家庭服务器从0到1的全过程攻略。从零开始依靠家中的闲置硬件构建全功能的服务器。内容包括但不限于:1.网络功能增强2.服务器建设3.集群处理4.docker容器管理5.多媒体服务。 话不多说,直接开干! ### 前置准备 1.FriendlyArm家的[ZeroPi](http://wiki.friendlyarm.com/wiki/index.php/ZeroPi/zh)(任意Linux开发板均可代替如树莓派) 2.32G Class10 内存卡一张(至少8G,越多越好) 3.5v2A 电源适配器一个,我用的ZeroPi需要电流很小,所以直接用了电脑的USB输出 4.普通家用路由器一台,我的是红米AX5 5.一定的计算机网络基础知识 ### 为什么需要旁路由 小科普:市面上的路由器的固件绝大部分是OpenWrt的修改版 原因: 1.家中普通的家庭路由器功能有限,很多功能不支持,比如SMB,IPv6,多播,关闭NAT,比如安全性要求的企业或者政企客户需要使用VPN远程接入网络,很多功能也无法自行安装选择。 2.家中普通路由器支持一定的功能,但是性能有限,开启复杂功能之后原本路由器的职责又承担不了了,会出现丢包断流等现象,没错我说的就是某杂粮厂,路由器固件做的烂的很,故障经常出现。这时候需要别的硬件来完成高层的工作,减轻路由器的负担,保证家庭网络的运行的流畅稳定。 以下是常见家庭路由器的接口图,实际上只有两个物理的接口(interface),标为lan的几个接口其实是交换机 ![router](C:\Users\15738\OneDrive\Note\MarkDown\单臂路由\img\router.jpeg) 对应的网络拓扑如下 ![](https://cf03.ickimg.com/bbsimages/202105/fc7962d87e906834f48d15c03edfd6a6.png) ### 什么是旁路由 根据上述图片,我们已经知道了家庭网络的大致结构,那么我们现在就需要在中间设置一个代理,把本来从用户走向路由器的流量拦下来,经过这个代理的“处理”之后,再直接给家庭路由器发送出去即可,这样家庭路由器只需要关注传统的路由交换功能,而不需要处理传输层或者应用层的数据了,这就保证了家庭路由器的低负载和网络功能的增强。 于是,我们提出来的一种新的网络结构,其物理结构如下 ![](https://cf03.ickimg.com/bbsimages/202105/5ec6ede6bd7c2ba2f17863f6f7c54819.png) 实际的数据流向是这样的 ![](https://cf03.ickimg.com/bbsimages/202105/f35fd9e7dd28ee14d036f4d7091fe42d.png) 叫旁路由的原因其实就是因为他就挂在一旁啦,是不是很形象呢? ## 部署过程 ### OpenWrt准备 #### 手动下载 去到OpenWrt的官方网站https://openwrt.org/toh/start,在提供的支持设备列表中找到你的设备,常见的设备都在此提供了。 坏处就是只配备了一些常见的软件,如果你的设备只有snapshot快照版本的镜像,那就很悲剧了,常见的软件都不包含,甚至不开启SSH和luci,这就需要你自己进行手动编译了 #### 自行编译 编译环境:Ubuntu20.04LTS 我使用的是windows的Linux子系统,直接在微软商店安装就行。 打开终端输入命令: `sudo apt update && sudo apt upgrade -y ` 更新软件源信息和所有软件包 安装依赖 `sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync` 克隆OpenWrt的官方仓库 `git clone https://github.com/openwrt/openwrt` 进入文件夹,下载需要的依赖项(注意此时和编译时都必须保证良好的网络链接) ```bash cd openwrt #进入文件夹 ./scripts/feeds update -a #更新依赖目录 ./scripts/feeds install -a #安装依赖项 make menuconfig #打开编译配置菜单 ``` 打开界面如下,在target system,subtarget, targetProfile里面找到你对应的硬件 ![](https://cf03.ickimg.com/bbsimages/202105/0f8754e2819148097909d7f14149dbde.png) 在Base System中用空格选中dnsmasq-full,去除dnsmasq(一定要去除,不然冲突导致编译失败),选中Luci-collection-Luci(Web管理界面),其他的软件包均可以自己添加 ![](https://cf03.ickimg.com/bbsimages/202105/8f5ab691681514626d6f8ea1d2e8c5d1.png) ![](https://cf03.ickimg.com/bbsimages/202105/e60f8244062b229fcad7ad0914fe5059.png) 我添加了aria,smb,但是其实也可以现在不添加,直接编译即可,之后都可以安装。按两下esc按提示保存配置,之后终端输入 `make -j8 download V=s` 再次下载一些外部库 ![](https://cf03.ickimg.com/bbsimages/202105/437efbac7383e7213cc1694101673093.png) 下载完成后,输入: `make -j16 V=s` -j后面的数字是线程数,V=s代表视图,写不写都可,写上了方便出错时排查, ![](https://cf03.ickimg.com/bbsimages/202105/e0967c5d50c6be729a63f2c1f66c0a4e.png) 编译成功就是这样的,镜像在`~/code/openwrt/bin/targets/sunxi/cortexa7` 位置下,根据硬件不同,生成路径可能会不同,得到的主要内容如下: ![](https://cf03.ickimg.com/bbsimages/202105/169a0d3ff0ab927f396e1c6d1f868b2a.png) 我们使用`openwrt-sunxi-cortexa7-friendlyarm_zeropi-ext4-sdcard.img.gz` 烧录到内存卡中即可 #### 烧录 使用[etcher](https://www.balena.io/etcher/)进行镜像的烧录,如下: ![](https://cf03.ickimg.com/bbsimages/202105/483247e4d4102a1d6a9620278e438246.png) 烧录成功,把内存卡插入开发板中即可! ### 第一次启动 首先将开发板和电脑直接一根网线直连,浏览器输入192.168.1.1,打开Web管理界面,使用root(无密码)登录, ![](https://cf03.ickimg.com/bbsimages/202105/9dc1a050d068238cdbf0901b5041a461.png) System-Administration 勾选上GateWayPorts,并设置root用户密码 自定义密码之后,在Network-Interface下点击Edit,将接口协议更改为DHCPClient,之后将开发板断电,网线连在家用路由器上再上电,就可以正常收到IP地址啦,这时候再使用家庭路由器分配的IP地址,就又可以通过浏览器直接访问到Web管理界面。此时可以开启常用的功能如Adblock,aria等等。 ![](https://cf03.ickimg.com/bbsimages/202105/932362fbf8f4db9a520902edd6e566e9.png) 之后可以开启SSH ![](https://cf03.ickimg.com/bbsimages/202105/3bcb78d3bbe839f9aef9c9f9e680c42c.png) 安装软件包在这里,提供了非常好用的软件搜索功能 ![](https://cf03.ickimg.com/bbsimages/202105/3bd7b141e4b9529ca40b914264f41122.png) 如果家中网络不佳,可以对opkg进行换源,换源可参照如下教程https://mirrors.tuna.tsinghua.edu.cn/help/openwrt/ ### 主路由配置 在旁路由的后台在Network-Interface下点击Edit,将接口协议更改为静态地址,如192.168.31.2,其默认网关修改为192.168.31.1 访问主路由的后台,我的是小米路由,找到DHCP相关配置,如下图: ![](https://cf03.ickimg.com/bbsimages/202105/2f6d16b3dcea5e879c5314d4b1d7ae69.png) 将默认网关字段修改为旁路由的IP192.168.31.2.最后我们重启一下路由器,这样网络工作就处理完成了。 这样我们的家庭网络改造完成,现在网络遇到高负载的时候完全不怕啦!这就为我们之后要构建的多媒体娱乐中心打下基础了。
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
摸鱼之家
擅长:消费电子
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交