OpenWrt 搭建
全文内容比较多,请使用目录浏览需要的内容!!!
使用Openwrt原版的原因,是因为iStore OS会莫名把带宽跑满,表现情况就是,上行带宽跑满,所有设备无法正常上网,由于光猫跑满带宽,所以家中其他网络也会断网。用了两天时间怀疑是dnsmasq的问题,导致系统不定时(或者十分钟)请求DNS服务器,并且并发量极大,超过了软路由的负载,导致中断。虽然如此,但是该软路由下的设备,都是可以正常上网的(不出问题的时候)。
但是这种问题,除了描述,目前市面上并没有此类现象的解释或者解决方法。在之前的帖子,已经找到了,认为是解决此问题的办法,但是尝试之后,近期又出现了该问题。所以准备换回原生Openwrt看下会不会解决这个问题。
PVE安装Openwrt并扩容硬盘
先下载到Openwrt镜像,网络问题自行解决,或者按小时付费的香港云服务器?
镜像下来是.gz压缩包,解压缩,然后拿到img文件。
文件124兆,上传到PVE,然后先不要关闭窗口,记下路径。
/var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img
类似这样的路径。之后创建新的虚拟机。
最低配置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。
选中硬盘——磁盘操作——调整磁盘大小。为后面的扩容做准备。
然后上电安装。
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已经扩容到1148M了,所以是大于1GB。确定这里有一个大于1GB的分区。
命令:fdisk /dev/sda --对这个分区进行操作,操作的就是最大的这个磁盘。
进入之后,下面提示输入命令,输入m键则显示帮助信息。
这里先输入: n --表示新建分区。
这里提示分区顺序号,默认为3,直接按回车即可。前面有sda1、sda2所以这里默认就是sda3.
之后一路回车直到提示已经创建了分区
这样就是创建完成了,但是需要输入:w --保存分区表,才算完成,这个阶段如果退出,这个分区就不存在了。
输入:w --保存完成,然后可以ctrl +c 退到根命令行。或者是自动退出的。
再次输入:fdisk -l 就可以看到sda3分区了。
这是我们新建的分区。使用mkfs命令对分区进行格式化。
命令:mkfs.ext4 /dev/sda3 --格式化为ext4格式,这是linux常用的格式,PS4也是这个格式的。
一次性命令,操作完成后输入:blkid 查看磁盘标识。
465ed9d6-788f-47eb-939e-dddfeb9818a1
这里把UUID复制保存下来,后面要用。然后重启一下:reboot
465ed9d6-788f-47eb-939e-dddfeb9818a1
重启之后登录,使用uci命令操作挂载。
重启的时候就把putty关掉,winscp会自动重试登录,所以当重启完成后,可以winscp重新登录上去,打开putty也方便。
PS:winscp连接用的是scp,而不是sftp。scp登录时仍然是默认密码。而putty只要输入用户名即可。但是如果修改过密码,则putty也需要输入密码。
命令: 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 - --复制文件
umonunt /tmp/cproot --解除挂载
umount /mnt/sda3 --解除挂载
启用引导
/etc/init.d/fstab enable --启用
/etc/init.d/fstab start --启动
reboot --重启
这样就好了。
安装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
把所有内容复制,然后winscp 在tmp文件夹新建一个文件
文件名后缀sh或者run区别不大。文件名可以取短一些,方便putty输入。
保存文件后,使用putty执行
定位到tmp文件夹: cd /tmp
为文件提权: chmod 777 istore.run
我保存的是sh,按原文件应该是run。倒是都能执行
执行文件 ./istore.sh
之后刷新页面,就出现了istore。
我这里,可能安装有问题,最近服务器不稳定,也没去研究,所以一直显示获取,之前安装之后,这里就和正常的istore一样,可以安装。
静态ip的DNS处理+ 上传跑满软路由断网+软路由死机+导致全屋断网。
目前看下来是同一个问题,就是x86的这个自带的dnsmasq不灵敏。导致得不到上游DNS的时候,masq会大量发包请求DNS解析,最后耗尽资源系统挂起。因为这个过程最先被吃掉的是带宽所以,上行会跑满。那这个过程,这个数据包会发向光猫,所以最后光猫也被占用了千兆带宽。最后全屋设备都无法上网,和DDOS类似。
现象分析
比如150的并发,并且任意端口。这样就在同一时间发起超多的请求。
最开始只是间歇性的,比如十分钟左右会有一次。而且并不是一开始就会有,而是系统运行一段时间之后产生的,所以很难注意到,而且当时只分配了两个核心,所以出现问题时,页面根本无法响应我,无处可查。而且对端口不在意,导致各种端口都在发包也就不知道是哪里引起的。
后面扩充了四个核心,基本能响应页面的请求了。于是每次发生问题时,就去看实时信息里面的连接。最开始发现Windows虚拟机会向东京的一个IP发送80端口的请求,还以为是有病毒。于是把三个Windows虚拟机都关机了。但是问题还会出现,并没有改善。所以又怀疑系统有问题。
好在中间有几次是请求的cloudflare,启用dns查找之后,偶尔能看到是dns解析地址,有些网址去查了注册域也发现是正规的vps服务商。而且后面三个虚拟机都装了杀毒软件,也没查到问题。
那么初步就认为是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做一些优化。
直接安装i18n的,这样会安装全部组件。
smartDNS的上游服务器自行配置。端口可以不要,dns查询用的是udp协议,默认是53端口,这里可以不填。
因为dnsmasq占用了53端口,所以这里换个端口。
服务运行后,查看dnsmasq。
这里定向到54端口来负责,应该有人会说,为什么不直接把smartDNS的dns写到网口的自定义DNS中,这个确实尝试过,但是我这里不起作用,尤其系统重启之后就失效了,以至于写或者不写,我都不清楚是自定义dns解析的,还是光猫网关解析的。能简单处理的。就不用再写这个帖子了。
常规设置中,唯一授权勾选,然后本地域名这里手动填一个域名出来。
过滤器这里,可以勾选忽略空域名,然后取消勾选重定向保护,或者两个都取消勾选。
给接口填入刚刚在dnsmasq中定义的本地域名。
实测的时候,创建smartDNS之后,以及填写自定义DNS服务器之后,重启之后还是会断网,无法解析。填入域名之后,就正常了。理论上填写smartDNS的服务器名称也是可以的。
想着是经过dnsmasq转出的解析请求所以这里填哪个应该都差不多。
对于Openwrt来说,实在是不懂,正常来说,这里我填60.1也是openwrt的,ip地址,那就应该可以解析,实际并没有,填入dns域名之后就可以了,应该是说明,通过dnsmasq可以解析我的搜索域名,然后定向的。
IP
x
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
,