OpenWrt 搭建

全文内容比较多,请使用目录浏览需要的内容!!!

使用Openwrt原版的原因,是因为iStore OS会莫名把带宽跑满,表现情况就是,上行带宽跑满,所有设备无法正常上网,由于光猫跑满带宽,所以家中其他网络也会断网。用了两天时间怀疑是dnsmasq的问题,导致系统不定时(或者十分钟)请求DNS服务器,并且并发量极大,超过了软路由的负载,导致中断。虽然如此,但是该软路由下的设备,都是可以正常上网的(不出问题的时候)。

但是这种问题,除了描述,目前市面上并没有此类现象的解释或者解决方法。在之前的帖子,已经找到了,认为是解决此问题的办法,但是尝试之后,近期又出现了该问题。所以准备换回原生Openwrt看下会不会解决这个问题。

PVE安装Openwrt并扩容硬盘

先下载到Openwrt镜像,网络问题自行解决,或者按小时付费的香港云服务器?

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

镜像下来是.gz压缩包,解压缩,然后拿到img文件。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

文件124兆,上传到PVE,然后先不要关闭窗口,记下路径。

/var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img

类似这样的路径。之后创建新的虚拟机。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

最低配置2c 2g完全够用,但是出现问题的时候,带宽跑满,这时候两个核心就不够用了。我处理器比较旧平时完全够用。

网络设备因为我网卡比较多,所以增加了很多。CD驱动器是完全不需要的。

进系统之后,eth设备也是按这个设备顺序的,如果不确定可以查看mac地址。i350的mac地址我有印象所以后面的PCI网卡的mac地址我也能分清楚,如果不能区分的,需要另外想办法,比如在PVE下命令查看。

然后导入镜像到这个虚拟机中。详细的内容在我之前的帖子也有。命令我放在这里。

qm importdisk pveid /var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img local-lvm

我的openwrt的PVEid是100

所以qm importdisk 100 /var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img local-lvm

local-lvm是和PVE系统在一起的磁盘。

导入之后直接调整磁盘大小,比如1GB。

选中硬盘——磁盘操作——调整磁盘大小。为后面的扩容做准备。

然后上电安装。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

Openwrt设置网口IP

第一次安装之后,很大几率是不能网页访问的,因为和你的网段不在一起,能玩PVE的,手里肯定不会只有傻瓜路由器。所以只能用命令设置ip。

vi /etc/config/network

使用vi查看并修改。vi 进入文档后,光标移动到要修改的地方,按i键切换到输入模式,然后修改字符。修改之后,按Esc键退出,然后可以键入冒号(可以尝试大写冒号)之后输入wq 保存并推出。

不确定网口的话,查看 iptable一类的,查看所有网卡的mac地址,然后来找对应的网口。

保存之后重启软路由以重启服务。实际上直接重启服务也可以,但是命令我忘记了。

尝试通过浏览器进入管理页面。

openwrt软件源

src/gz openwrt_core https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.5/targets/x86/64/packages

src/gz openwrt_base https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.5/packages/x86_64/base

src/gz openwrt_luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.5/packages/x86_64/luci

src/gz openwrt_packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.5/packages/x86_64/packages

src/gz openwrt_routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.5/packages/x86_64/routing

src/gz openwrt_telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.5/packages/x86_64/telephony

整段复制进去,替换原有的源即可。要完整复制,手动输入好像有多余的空格之类的,会报错。但是整段复制进去就没问题了。

目前最新的23055。

扩容软件分区

确定软件源可以更新之后,先查找zh-cn切换中文。

然后安装软件包之后才能进行扩容。顺序是 修改network以连接管理页面——页面修改网口信息,确保能够连接外网,比如wan口到主路由——修改软件源,然后更新 ——切换中文。

如果更新软件源报错,要自行查看是地址问题还是网络问题。此时网络问题暂时解决,先进行扩容和中文,然后考虑安装主题包一类的优化。

如前文,已经在安装的时候扩充了PVE的磁盘。

这里建议安装一个winscp,不光有putty进入命令后台,还可以通过文件夹形式,快速修改文件,比用vi 编辑器更方便。PVE的后台是不能复制命令的。

在openwrt的ssh界面

1. opkg update --更新软件源一次

2. opkg install block-mount e2fsprogs 安装这个软件包

3. opkg update --更新软件源一次

4. opkg install fdisk blkid vim 安装这三个软件包

安装完成,在ssh 输入:fdisk -l 查看分区名单。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

类似这样的,因为PVE已经扩容到1148M了,所以是大于1GB。确定这里有一个大于1GB的分区。

命令:fdisk /dev/sda --对这个分区进行操作,操作的就是最大的这个磁盘。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

进入之后,下面提示输入命令,输入m键则显示帮助信息。

这里先输入: n --表示新建分区。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

这里提示分区顺序号,默认为3,直接按回车即可。前面有sda1、sda2所以这里默认就是sda3.

之后一路回车直到提示已经创建了分区

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

这样就是创建完成了,但是需要输入:w --保存分区表,才算完成,这个阶段如果退出,这个分区就不存在了。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

输入:w --保存完成,然后可以ctrl +c 退到根命令行。或者是自动退出的。

再次输入:fdisk -l 就可以看到sda3分区了。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

这是我们新建的分区。使用mkfs命令对分区进行格式化。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

命令:mkfs.ext4 /dev/sda3 --格式化为ext4格式,这是linux常用的格式,PS4也是这个格式的。

一次性命令,操作完成后输入:blkid 查看磁盘标识。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理465ed9d6-788f-47eb-939e-dddfeb9818a1

这里把UUID复制保存下来,后面要用。然后重启一下:reboot

465ed9d6-788f-47eb-939e-dddfeb9818a1

重启之后登录,使用uci命令操作挂载。

重启的时候就把putty关掉,winscp会自动重试登录,所以当重启完成后,可以winscp重新登录上去,打开putty也方便。

PS:winscp连接用的是scp,而不是sftp。scp登录时仍然是默认密码。而putty只要输入用户名即可。但是如果修改过密码,则putty也需要输入密码。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

命令: uci add fstab mount --添加一个挂载

uci set fstab.@mount[-1].uuid=465ed9d6-788f-47eb-939e-dddfeb9818a1 --也就是你前面保存的uuid。

uci set fstab.@mount[-1].fstype = ext4 --格式是ext4

uci set fstab.@mount[-1].enabled_fsck=1 --fsck启用

uci set fstab.@mount[-1].enabled=1 --启用

uci set fstab.@mount[-1].target=/ --目标路径为/ 即为根目录。

uci set fstab.@mount[-1].device=/dev/sda3 --使用sda3。

uci命令是没有空格的,要注意。

扩容后复制文件

命令:mkdir /mnt/sda3 --创建路径sda3

mount /dev/sda3 /mnt/sda3 --挂载sda3

mkdir -p /tmp/cproot --创建一个cproot文件夹

mount --bind / /tmp/cproot --绑定cproot

tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda3 -xf - --复制文件

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

umonunt /tmp/cproot --解除挂载

umount /mnt/sda3 --解除挂载

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

启用引导

/etc/init.d/fstab enable --启用

/etc/init.d/fstab start --启动

reboot --重启

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

这样就好了。

安装iStore

官方的安装命令:

opkg update || exit 1 cd /tmp wget https://github.com/linkease/openwrt-app-actions/raw/main/applications/luci-app-systools/root/usr/share/systools/istore-reinstall.run chmod 755 istore-reinstall.run ./istore-reinstall.run

实际可能无法执行,或者wget不到。那首先还是要解决一个能get的网络。然后浏览器直接输入https://xxx.xxx.xxx/xx/xx/xx/xx/istore-reinstall.run

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

把所有内容复制,然后winscp 在tmp文件夹新建一个文件

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

文件名后缀sh或者run区别不大。文件名可以取短一些,方便putty输入。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

保存文件后,使用putty执行

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

定位到tmp文件夹: cd /tmp

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

为文件提权: chmod 777 istore.run

我保存的是sh,按原文件应该是run。倒是都能执行

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

执行文件 ./istore.sh

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

之后刷新页面,就出现了istore。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

我这里,可能安装有问题,最近服务器不稳定,也没去研究,所以一直显示获取,之前安装之后,这里就和正常的istore一样,可以安装。

静态ip的DNS处理+ 上传跑满软路由断网+软路由死机+导致全屋断网。

目前看下来是同一个问题,就是x86的这个自带的dnsmasq不灵敏。导致得不到上游DNS的时候,masq会大量发包请求DNS解析,最后耗尽资源系统挂起。因为这个过程最先被吃掉的是带宽所以,上行会跑满。那这个过程,这个数据包会发向光猫,所以最后光猫也被占用了千兆带宽。最后全屋设备都无法上网,和DDOS类似。

现象分析

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

比如150的并发,并且任意端口。这样就在同一时间发起超多的请求。

最开始只是间歇性的,比如十分钟左右会有一次。而且并不是一开始就会有,而是系统运行一段时间之后产生的,所以很难注意到,而且当时只分配了两个核心,所以出现问题时,页面根本无法响应我,无处可查。而且对端口不在意,导致各种端口都在发包也就不知道是哪里引起的。

后面扩充了四个核心,基本能响应页面的请求了。于是每次发生问题时,就去看实时信息里面的连接。最开始发现Windows虚拟机会向东京的一个IP发送80端口的请求,还以为是有病毒。于是把三个Windows虚拟机都关机了。但是问题还会出现,并没有改善。所以又怀疑系统有问题。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

好在中间有几次是请求的cloudflare,启用dns查找之后,偶尔能看到是dns解析地址,有些网址去查了注册域也发现是正规的vps服务商。而且后面三个虚拟机都装了杀毒软件,也没查到问题。

那么初步就认为是DNS的问题了,我的网络结构稍有复杂。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

eth4是硬路由管理软路由用的。eth1是所有虚拟机连接外网的网桥,分配60.1网关和dhcp。

IPTV85是做udpxy用的。

IPTV1是连接光猫上网的。

两个IPTV是用VLAN处理的。

能出现这种问题可能也是因为,eth4是连接的硬路由lan口,写硬路由的lan网段。并且硬路由和IPTV1同时连接到光猫。某种程度下像是环网,初期把eth4的网关取消了。只作为本地管理用。

总之前面帖子所写的问题的处理并没有根本解决问题。这次通过更换系统,并多次重启发现配置的dns地址偶尔会不生效。而且之前生效的内容,重启之后,就会失效。等于配置有问题。

现象总结

从开始接触,到现在的现象总结。

ddns-go 会每周重新绑定一次,是电信后台动态公网IP的原因。

大概每两周ddns-go无法获取外部ip,网络中断。

大概每隔几天,虚拟机均无法连接外网。检查并设置lan口的dnsIP或者wan口的 dns IP可以解决。

偶尔但频繁的,全屋设备断网,无法正常上网。可能要一两个小时现象才会消失。

系统重启后,原本能连接外网的虚拟机,无法联网。

虚拟机的网口状态和实际不一致,应该是软路由强制链路导致的。并且本身更新就不及时。显示IE连接但实际无法上网。

虚拟机要禁用再启用网口,dnsmasq才会有分配新的租约,偶尔dnsmasq没有分配dhcp记录,但是虚拟机还能正常上网。

问题处理

简单说,dnsmasq实在搞不懂,所以安装了一个 smartDNS作为dnsmasq的上层DNS负责解析。既然dnsmasq无法按正常设置处理dns解析,那就由另一个来处理。

同时对dnsmasq做一些优化。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

直接安装i18n的,这样会安装全部组件。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

smartDNS的上游服务器自行配置。端口可以不要,dns查询用的是udp协议,默认是53端口,这里可以不填。

因为dnsmasq占用了53端口,所以这里换个端口。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

服务运行后,查看dnsmasq。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

这里定向到54端口来负责,应该有人会说,为什么不直接把smartDNS的dns写到网口的自定义DNS中,这个确实尝试过,但是我这里不起作用,尤其系统重启之后就失效了,以至于写或者不写,我都不清楚是自定义dns解析的,还是光猫网关解析的。能简单处理的。就不用再写这个帖子了。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

常规设置中,唯一授权勾选,然后本地域名这里手动填一个域名出来。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

过滤器这里,可以勾选忽略空域名,然后取消勾选重定向保护,或者两个都取消勾选。

给接口填入刚刚在dnsmasq中定义的本地域名。

PVE下Openwrt搭建+iStore商店、静态IP的DNS处理以及上传随机跑满带宽占满软路由断网的处理

实测的时候,创建smartDNS之后,以及填写自定义DNS服务器之后,重启之后还是会断网,无法解析。填入域名之后,就正常了。理论上填写smartDNS的服务器名称也是可以的。

想着是经过dnsmasq转出的解析请求所以这里填哪个应该都差不多。

对于Openwrt来说,实在是不懂,正常来说,这里我填60.1也是openwrt的,ip地址,那就应该可以解析,实际并没有,填入dns域名之后就可以了,应该是说明,通过dnsmasq可以解析我的搜索域名,然后定向的。

IP

x

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

,

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。