【Openwrt】从入手软路由到刷机到文件服务器到Nodejs到docker home

您所在的位置:网站首页 tp路由器5620性能好吗 【Openwrt】从入手软路由到刷机到文件服务器到Nodejs到docker home

【Openwrt】从入手软路由到刷机到文件服务器到Nodejs到docker home

2023-10-15 09:33| 来源: 网络整理| 查看: 265

前言:

    [极其详细]零基础小白一文搞定软路由概念,从刷机到配置,到做服务器环境以及内网穿透映射公网到sftp文件服务器,到docker基础,到docker home-assistant智能网关

    那么这篇文章适合谁呢,

    我想适合人群应该包含但不限于:

想要接触Linux系统

想了解网络IPv4、子网掩码、网关概念和基本的通信网络基础

想要方便的科学上网

想了解使用Docker技术

想拥有一台属于自己的服务器

想学习内网穿透随时随地能访问自己家里的电脑,局域网设备,智能家居设备

想挂载自己的制作的动态Html网页项目,不受限于GitHub静态网页

    这篇文章是最近自己从零开始学习并使用openwrt的一些经历以及遇到的坑,以此来记录一下,以防以后忘记。本文由于篇幅并不会事无巨细,有些别人以及讲的非常出色的地方我就直接贴链接,并不会重复赘述。

//written by Bigonion welcome to my website

https://bigonion.cn

https://bigonion.cn/blog

//

一、软路由的购买与基础概念

        首先:如果你不知道什么是IP地址,端口,DNS,内网网段,网关,光猫桥接模式他们都是什么,我十分建议你提前百度/Goole/必应/360/B站先了解一下:

IP地址、DNS(必懂):

光猫桥接(必懂):

 Ipconfig基本命令(扩展,可以随便看看):

Linux系统基本命令行操作和基础文件结构(选看,当查表也可以)

我是分割线\( ̄︶ ̄*\))

  

    首先,我想问,什么是软路由?当然他们都是路由器啦(~ ̄▽ ̄)~ 这里简单总结一下硬路由和软路由区别:

硬路由:目前我们家里普遍使用的路由器,不能随意更换系统,功能很简单很有限,一般我们只用来宽带拨号,传播WiFi信号,TP-LINK的路由器后台长这样

TP-WDR5620

软路由:软路由就是一台完整的电脑,通过刷入openwrt,LEDE,爱快等系统,(PS:这些只是个名字,其实你刷win10也能当软路由的,只是win10消耗CPU等资源太大,不适合做软路由)

能干硬路由所能做的 所有 事情,更完善的管理局域网内所有设备的IP地址,App流量监控,广告过滤,DNS防污染,等操作。Ta大概长这样:

Openwrt9.15固件 edge主题

        关于软路由的购买,我也去B站搜了很多推荐视频,可以分成ARM和x86这两种架构的流派,下面是ARM和x86的区别,最不严谨的说法就是Windows属于X86平台,手机安卓系统属于ARM平台

ARM 推荐的有R2S、R4S、树莓派等

优点:功耗低,便宜,缺点:兼容性有点差

X86 这边有J1900、N1、J4125等

优点:扩展性强,性能好,缺点:功耗比较高,贵

    首先我对ARM目前的兼容性不是很看好,其次我还想要顺便学习一下如何使用微PE系统对Windows装系统,所以我选择了J1900的工控机

    还有一个问题:你想要软路由做主路由还是旁路由?他们的区别,优缺点和连接方法也许大概是这样的:

主路由:

{

概念:全家所有设备的流量都走你的主路由,都把它作为网关,主路由科学上网,局域网全部设备都在长城外

优点:拓扑结构简单

缺点:设备必须要有双网口(最好是千兆)

主路由连线方法:你的软路由WAN口(WAN口可以看作是宽带入口,连接上一级网络)连接光猫(光猫的功能:把光纤的光信号转换成电信号),在配置里进行拨号上网,然后你的软路由LAN口(LAN口可以看作是出口),连接到你的硬路由的WAN口,帮你广播WIFI信号

}

旁路由:

{

概念:全家所有正常连接WiFi的设备流量都走你原来的路由器,通过你原来的路由器DHCP(DHCP指的是自动分配局域网中设备的IP地址和租约等配置)服务分配到IP和网关、dns等配置,想要科学上网的设备,在你的电脑手机更改WLAN配置为手动设置,设置网关为旁路由的LAN口IP地址,这个时候,想要特殊上网环境的设备就可以单独走另一条路,实现局域网内设备,各取所需上网环境

优点:主路由(你原来的硬路由器)不需要任何更改,灵活分配,单网口设备就能实现!

缺点:配置复杂一些,需要关闭软路由的DHCP服务器

旁路由连线方法:你的原来的硬路由(原来提供你wifi的路由器)的LAN口连接你的软路由LAN口,使他们在同一网段内,相当于桥接

旁路由拓扑结构

}

没看懂? =>推荐阅读专栏网站:

于是在淘宝搜索花了300多2+16G下单了,我的J1900大概也许长这样:

如果你选择工控机的话,COM接口对你来说没啥用 0-0-

J1900工控机

二、软路由刷写Openwrt系统

     首先,我是看别人的视频的,讲的非常详细,强烈推荐BRAVERU科技频道的讲解:https://www.bilibili.com/video/BV1w541157Uo?spm_id_from=333.337.search-card.all.click

看完自然就明白怎么刷了!有UI界面的软件操作非常的简单

固件的话我推荐大家去恩山论坛自己找,自己编译固件真的费时费力没必要了,在这个链接找也可以:

如果大家实在找不到可以发email到[email protected]或者私信问我要链接 

   

三、软路由启动Openwrt系统,并进行基本配置

     我用的是U盘刷的系统,刷好后插入J1900主机usb口,接入键盘,开机狂按F2,进入bios界面,在Advanced选项中更改boot启动顺序为从U盘启动,大家如果不会的话直接百度:bios怎么从U盘启动 。就可以了,这方面教程多如牛毛....

    好的,你现在已经刷好Openwrt系统了,也设置好从U盘启动了,如果你选择把镜像.img刷入硬盘内的话,直接拔出U盘媒介,他就会从硬盘自动启动Openwrt系统了!

    接HDMI到显示器,

    插腚,开机\( ̄︶ ̄*\))

    PS:你最好有一台显示器(不是必须的,但是很多时候都很重要)

开机后有显示器的方式:

{

    但是,这个时候有可能你不能直接进入Openwrt系统,而是进入shell>命令行,只需要输入exit就可以退出,但如果是其他提示你找不到系统启动文件,那你一定是刷了错误的Openwrt镜像,或者没能成功设置Bios 从U盘/硬盘启动 。

不出意外的话,经过kernel启动,就会进入openwrt界面了!

进入之后会显示

这个样子,是你没有设置root密码导致的,你需要输入passwd去设置root密码

}

没有显示器的方式:

{

    还有另一种方式是不需要你用额外的显示器操作的,但是这种方式的前提是你已经按照网络拓扑结构选择主路由/旁路由连线方式连接好软路由和硬路由了:

在 管理员:powershell (win10:依次按下win+x => A => 左键回车确定授权)使用telnet 或者ssh命令进行局域网连接

telnet因为明文传输的原因,十分的不安全,我更喜欢用ssh ,如果你输入ssh后提示找不到命令,请你先安装Openssh

Win10设置里开启Openssh微软官方文档:

开启ssh后,你需要在 管理员:powershell输入 :ssh root@软路由ip地址

例如:

来连接到你的软路由,

接下来输入 passwd 来设置你的root密码

如果你不知道IP地址是什么,怎么填,请往下看

}

IP地址 的问题:

{

如果很不巧,Openwrt默认的LAN口IP地址和你的主路由不在一个网段

这一点编译者会在他的文章里面告诉你默认IP是多少,请自己仔细阅读

比如说你的WIFI硬路由后台地址是:192.168.1.1

你的固件默认IP地址是10.0.0.1,那他们连起来如果没有NAT服务器的话,是没办法进行通信的,也就是说你必须先更改LAN口默认IP地址

有显示器的话输入ifconfig查询IP地址

ifconfig结果展示

可以看到我的eth0口IP地址是10.0.0.200

}

LAN口IP地址修改

{

输入

用自带的vim编辑器,进入到网络配置文件编辑

在这里,修改interface,lan 的ipaddr(IP地址)后面 为你想要的IP地址,

如果是旁路由模式:

{

    如果主路由IP地址是192.168.1.1那么,更改为192.168.1.x ,

    如果路由器地址是192.168.31.1,那么更改为192.168.31.x,

    其中1 设置向导 中打开旁路由模式,因为局域网内已经有一个DHCP服务器了就是你的硬路由,这个时候你的硬路由依然承担拨号上网功能,

对LAN口设置IPV4网关为你的硬路由器IP地址

依然推荐这一篇文章,写的很详细:

}

}

此时,你已经配置好了,请让点击WAN和LAN口的重启按钮,LAN和WAN都重启

然后在Openwrt命令行里输入

如果能成功发送ICMP数据包,说明此时路由器已经正确联网了!

但如果一直卡住发不出PING包,请再尝试ping ip地址(223.5.5.5替换成8.8.8.8也可以)

输入

如果此时依旧没有能发出PING包,丢包率100%的话,请重启机器后再次检查你的配置!

如果能 对IP发出ping 数据包,有延迟和回应的话,证明此时已经接入了互联网,只是DNS服务器配置丢失,请在LAN口 => 编辑 => 高级设置 => 使用自定义的DNS服务器,填入

223.5.5.5 后,回车或者点击+号,重启LAN接口

再次尝试ping www.baidu.com

如果能够发出PING的数据包,证明此时已经可以正确解析域名IP,能打开浏览器浏览网页了!

五、使用Opkg 包管理工具安装常用插件,和常用局域网文件服务器搭建

OPKG包管理工具:

{

    能到这里实在是太棒了!现在你已经成功把Openwrt运转起来了,接下来是对Openwrt一些功能性插件,服务器的介绍,以及Opkg包管理工具的使用

OPKG软件图形界面

点击 系统 => 软件包 来到Opkg软件包网页管理界面,请先点击更新列表,获取所有软件的目录,或者通过ssh root@你的路由器局域网IP ,回车,输入密码后连接 输入:

这两个方法是等价操作

如果你遇到了以下报错:

或者网页报错说opkg 有任务,正在运行...

请输入

删除这个文件就可以使用opkg命令了

关于安装插件,你可以在网络UI界面筛选器内直接搜索软件名字

点击安装,你也可以使用

来搜索你想要的软件包命字grep 后跟着的是具体软件包名

然后通过

来安装软件包

}

推荐常用插件:

{

luci-app-turboacc :网络加速插件,能缓解网络阻塞和缓存DNS

iperf3 :局域网、互联网测速软件,只能在命令行使用:

命令行安装命令:opkg install 

用法:iperf3 -s 当server监听,另一台网络设备 使用iperf3 -c IP 来发包测速

samba4: 局域网smb3.0协议网络共享软件,可以在局域网另一台设备的文件夹地址栏里输入:\\IP地址 来访问 例如

Onion的samba4WEB配置界面

vsftpd : 用于搭建局域网ftp服务器

在另一台局域网Win设备的文件夹里面输入

更多插件推荐链接:

}

六、sftp文件服务器搭建,并通过内网穿透端口实现外网访问

    虽然,以上的文件服务器samba4,ftp,很棒,但是他们不太好通过内网穿透来在公网访问,以下提供比较好用的方法:

SSH内网穿透,通过sftp传输

{

        首先你要了解内网穿透的原理:你的内网可以访问外网是因为公网IP你能找到,但是外网却没有办法直接找到内网里的设备,于是就有内网穿透技术的存在

        我们通过一台大家都能访问到的公网服务器作为中转服务器,通过在你和公网服务器之间分别建立客户端client和服务端server,让服务端定期转发你的端口

(端口简单来说,就是一个窗口,如果说IP地址是你家的门牌号,那端口就是你家里能进出的地方,例如:你家的窗户,狗洞,门,烟囱,还有可能是你偷偷挖的通向外界的地道)

        总而言之,它能够把运行在你电脑的软件通过双向转发的方式,让你的主机变相为外界提供服务,如果转发的公网服务器把你的电脑端口22(运行着ssh服务)转发走了,转发到了它自己的服务器端口:11451上面,此时我们访问这个网络地址:公网服务器IP:端口号

例如公网IP是114.114.114.114的服务器帮你转发那你访问:

就能通过对这个地址发数据包,间接给你自己的内网电脑的22端口发数据包,看起来你的内网服务器好像就能被直接访问到了一样!

想要实现内网穿透的前提是

我们需要先对Openwrt开启访问转发ssh的权限 系统 = > 管理权 => SSH访问 => 网关端口

打钩✔之后,你的设备的SSH端口才能被顺利转发(重要)

现在主流的协议就是开源的frp协议,不过要求你自己有一台公网服务器。

然而公网服务器确实很贵,我推荐有免费的服务方(没收钱,广告费结一下)

Sakura FRP内网穿透:免费版两个隧道,速度还可以,全平台,必须1元实名认证

Cpolar 内网穿透:免费版四个隧道,简单好用

花生壳 内网穿透:免费版两个隧道,可以申请学生版,有多给一点月流量,有bug比较多

Zerotier 异地组网: P2P如果打洞失败,公网服务器来转发流量体验不佳

        他们都有非常非常详细的用户文档,自行搜索他们官网查阅文档就可以很轻松的实现内网穿透了。等到你成功穿透后,会获得一个他们给你的IP地址:端口号的形式,你可以直接通过ssh root@IP地址:端口号 来链接你的openwrt命令行

        或者通过Winscp这个软件或者finalshell等软件,输入这个IP:端口号来与你的openwrt服务器进行通信和传输文件,不过免费内网穿透服务的带宽很小就是了(1Mbps左右)

}

七、Nohup实现内网穿透后台运行,Nodejs环境搭建

Nohup : No hang up(不挂起)

{

        你会发现,虽然你成功运行了内网穿透的软件,但是你没法关闭命令行,因为一旦你关闭了,内网穿透的服务同时被你关闭,你需要一个能不被杀掉的后台运行方法,Node.js里有pm2工具可以保持后台运行,但是有一些是没办法通过pm2管理的,你需要nohup!

先安装nohup ,命令行输入

找到nohup的完整名字再opkg install 包名,安装即可

        使用方法:如果是cpolar的话本来运行的命令是:

使用nohup 后台运行命令是:

此时用命令

记住它的PID号,下一次想要停止这个内网穿透服务,可以用kill 命令:

如果jobs -l 显示PID是11451

就用

来终止此后台运行服务

}

Node.js 环境搭建

{

在openwrt上部署node.js非常简单,你只需要两个命令就可以完成:

安装好后输入node -v , npm -v ,如果出现版本号就说明node.js安装成功!

}

八、mount 命令挂载和umount取消挂载

linux下挂载很简单,首先通过

来查看所有物理硬盘

三块物理硬盘sda,sdb,sdc

如果没有分区请百度使用

(x指的是你的盘号,例如sda sdb sdc这样递增)来查看具体操作,再用

 来格式化你选的分区

推荐fdisk使用方法链接:

分区后请用cd命令切换到根目录,mkdir命令创建一个想要叫的文件夹名字

最后用mount 命令来挂载,

如果你想要挂载的分区是sdb这块物理盘的第二个分区,参考代码:

最后用df -h /dev/sdb2 查看这块盘有没有成功挂载

如果报错了说已经挂载到/mnt/sdb2下了

请使用umount命令

取消挂载后再尝试重新挂载到/media 目录下

这一步是为了docker根目录做准备

(如果你看不懂什么叫挂载,什么叫分区的话,请百度)

九、Docker 部署home-assistant 

        Docker技术你得先了解为什么会出现,简单来说为了解决运行环境的问题,比如说,可能有些文件需要.net 框架,有的软件需要nodejs环境,有的软件需要Php5 有的要Php8 你不可能说一个环境就给他装上一个虚拟机吧(土豪哥除外)一般的电脑真够呛的,所以有人开发了Docker,在软件层隔离,而不需要硬件虚拟化所消耗的系统资源

参考链接:

了解了docker之后就可以开始了,依次安装,这里可能(极大可能)需要特殊的网络环境,要不然安装的速度极为缓慢,并且失败的可能性极高,依次输入:

如果实在没有特殊环境的小伙伴,请自行bing搜索如何更换opkg安装源

等他们都安装好了,此时请输入

来查看是否成功安装了docker

如果显示版本号了说明你成功安装docker了

此时请注意你的/overlay目录的空间所剩无几

/overlay目录大小就是软件包展示的空间

你必须更换docker 根目录到 至少2G剩余空间的目录下

此时你可以开始拉取镜像文件

参考文章(博主命令行有误):

首先搜索home-assistant源

接着docker pull 命令拉取下载镜像源

这一步,非常,久,硬等

安装好以后,输入

来查看所有安装好的镜像源

docker's image list

出现这个样子说明pull已经好了,没有的话,请重新多次尝试pull

参考链接里的原博主的docker run 跑容器的命令是不完全正确的,真这样跑没办法在任何容器上完美运行,评论区的命令也不完全正确,如果同时指定-p 端口:端口 和--net=host的话,docker反而会给你报错,告诉你不可以同时这么指定

应该大概可能也许正确的命令:

参数的话看docker官方文档可以知道:

-d 表示后台运行

--name 表示容器自定义的名字

-v 表示配置文件映射关系,也就是docker里面的容器的配置文件在你宿主机里的真实位置

--net 表示虚拟网络模式,有bridge(默认)host 主机模式等,具体详见官方文档

homeassistant/home-assistant 代表你要跑起来的镜像名字

稍等一会,你的docker 就成功跑起来docker 容器了,

输入

查看所有容器,如果看到你的home assistant,那么它已经成功跑起来了,

CONTAINER ID ,最左边的参数就是你的容器ID

想要停止容器可以输入:

来暂停容器运行

输入

来删除你的容器,删除容器并不会影响你的镜像库,输入docker image ls依然可以看到你的镜像,并可以重新docker run 建立新的容器 

这时候请你在局域网内其他电脑打开浏览器输入:你的软路由ip:8123 

如:

如果出现home assistant的web界面了,恭喜你!成功了!

如果没有反应,请你自行找到问题所在

十、Docker home-assistant安装Hacs插件

        

        由于docker 官方给出的阉割版镜像,没法直接安装Hacs 必须通过源文件的方式安装

参考视频(必看):

从此视频下分享链接下载源文件,这个视频用的samba的插件传输的源文件,但是docker阉割版本没有办法直接下载samba插件,所以不可取,

但是,你可以通过Winscp或者finalshell软件ssh连接到你的openwrt文件目录下,找到你之前用docker run 命令里 -v 指定的路径 来到这个路径下,就是容器的根目录了,接下来把up主分享的文件通过up主所说的步骤来放置解压后的文件,

当然你也可以通过

直接进入你的docker 容器命令行内,通过scp 等命令直接传输解压后的文件目录,接着,请在网页端开发者工具一栏,选择重新启动,然后按照UP主所说的方式安装Hacs即可

注意:这里up主所说的文件夹名字,必须一字不差,否则无法识别,也就无法添加

接下来你就可以通过Hacs 添加 MiIoT设备,实现智能家居网关中心了!

后言:

至此,openwrt 的一些主流玩法,全部完成,非常感谢你能看到这里,

我们

    有缘

江湖

    再会____



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3