OpenWrt 搭建
全文內(nèi)容比較多,請(qǐng)使用目錄瀏覽需要的內(nèi)容!?。?/p>
使用Openwrt原版的原因,是因?yàn)閕Store OS會(huì)莫名把帶寬跑滿,表現(xiàn)情況就是,上行帶寬跑滿,所有設(shè)備無(wú)法正常上網(wǎng),由于光貓跑滿帶寬,所以家中其他網(wǎng)絡(luò)也會(huì)斷網(wǎng)。用了兩天時(shí)間懷疑是DNSmasq的問(wèn)題,導(dǎo)致系統(tǒng)不定時(shí)(或者十分鐘)請(qǐng)求DNS服務(wù)器,并且并發(fā)量極大,超過(guò)了軟路由的負(fù)載,導(dǎo)致中斷。雖然如此,但是該軟路由下的設(shè)備,都是可以正常上網(wǎng)的(不出問(wèn)題的時(shí)候)。
但是這種問(wèn)題,除了描述,目前市面上并沒(méi)有此類現(xiàn)象的解釋或者解決方法。在之前的帖子,已經(jīng)找到了,認(rèn)為是解決此問(wèn)題的辦法,但是嘗試之后,近期又出現(xiàn)了該問(wèn)題。所以準(zhǔn)備換回原生Openwrt看下會(huì)不會(huì)解決這個(gè)問(wèn)題。
pve安裝Openwrt并擴(kuò)容硬盤(pán)
先下載到Openwrt鏡像,網(wǎng)絡(luò)問(wèn)題自行解決,或者按小時(shí)付費(fèi)的香港云服務(wù)器?
鏡像下來(lái)是.gz壓縮包,解壓縮,然后拿到img文件。
文件124兆,上傳到PVE,然后先不要關(guān)閉窗口,記下路徑。
/var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img
類似這樣的路徑。之后創(chuàng)建新的虛擬機(jī)。
最低配置2c 2g完全夠用,但是出現(xiàn)問(wèn)題的時(shí)候,帶寬跑滿,這時(shí)候兩個(gè)核心就不夠用了。我處理器比較舊平時(shí)完全夠用。
網(wǎng)絡(luò)設(shè)備因?yàn)槲揖W(wǎng)卡比較多,所以增加了很多。CD驅(qū)動(dòng)器是完全不需要的。
進(jìn)系統(tǒng)之后,eth設(shè)備也是按這個(gè)設(shè)備順序的,如果不確定可以查看mac地址。i350的mac地址我有印象所以后面的PCI網(wǎng)卡的mac地址我也能分清楚,如果不能區(qū)分的,需要另外想辦法,比如在PVE下命令查看。
然后導(dǎo)入鏡像到這個(gè)虛擬機(jī)中。詳細(xì)的內(nèi)容在我之前的帖子也有。命令我放在這里。
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系統(tǒng)在一起的磁盤(pán)。
導(dǎo)入之后直接調(diào)整磁盤(pán)大小,比如1GB。
選中硬盤(pán)——磁盤(pán)操作——調(diào)整磁盤(pán)大小。為后面的擴(kuò)容做準(zhǔn)備。
然后上電安裝。
Openwrt設(shè)置網(wǎng)口IP
第一次安裝之后,很大幾率是不能網(wǎng)頁(yè)訪問(wèn)的,因?yàn)楹湍愕木W(wǎng)段不在一起,能玩PVE的,手里肯定不會(huì)只有傻瓜路由器。所以只能用命令設(shè)置ip。
vi /etc/config/network
使用vi查看并修改。vi 進(jìn)入文檔后,光標(biāo)移動(dòng)到要修改的地方,按i鍵切換到輸入模式,然后修改字符。修改之后,按Esc鍵退出,然后可以鍵入冒號(hào)(可以嘗試大寫(xiě)冒號(hào))之后輸入wq 保存并推出。
不確定網(wǎng)口的話,查看 iptable一類的,查看所有網(wǎng)卡的mac地址,然后來(lái)找對(duì)應(yīng)的網(wǎng)口。
保存之后重啟軟路由以重啟服務(wù)。實(shí)際上直接重啟服務(wù)也可以,但是命令我忘記了。
嘗試通過(guò)瀏覽器進(jìn)入管理頁(yè)面。
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
整段復(fù)制進(jìn)去,替換原有的源即可。要完整復(fù)制,手動(dòng)輸入好像有多余的空格之類的,會(huì)報(bào)錯(cuò)。但是整段復(fù)制進(jìn)去就沒(méi)問(wèn)題了。
目前最新的23055。
擴(kuò)容軟件分區(qū)
確定軟件源可以更新之后,先查找zh-cn切換中文。
然后安裝軟件包之后才能進(jìn)行擴(kuò)容。順序是 修改network以連接管理頁(yè)面——頁(yè)面修改網(wǎng)口信息,確保能夠連接外網(wǎng),比如wan口到主路由——修改軟件源,然后更新 ——切換中文。
如果更新軟件源報(bào)錯(cuò),要自行查看是地址問(wèn)題還是網(wǎng)絡(luò)問(wèn)題。此時(shí)網(wǎng)絡(luò)問(wèn)題暫時(shí)解決,先進(jìn)行擴(kuò)容和中文,然后考慮安裝主題包一類的優(yōu)化。
如前文,已經(jīng)在安裝的時(shí)候擴(kuò)充了PVE的磁盤(pán)。
這里建議安裝一個(gè)winscp,不光有putty進(jìn)入命令后臺(tái),還可以通過(guò)文件夾形式,快速修改文件,比用vi 編輯器更方便。PVE的后臺(tái)是不能復(fù)制命令的。
在openwrt的ssh界面
1. opkg update --更新軟件源一次
2. opkg install block-mount e2fsprogs 安裝這個(gè)軟件包
3. opkg update --更新軟件源一次
4. opkg install fdisk blkid vim 安裝這三個(gè)軟件包
安裝完成,在ssh 輸入:fdisk -l 查看分區(qū)名單。
類似這樣的,因?yàn)镻VE已經(jīng)擴(kuò)容到1148M了,所以是大于1GB。確定這里有一個(gè)大于1GB的分區(qū)。
命令:fdisk /dev/sda --對(duì)這個(gè)分區(qū)進(jìn)行操作,操作的就是最大的這個(gè)磁盤(pán)。
進(jìn)入之后,下面提示輸入命令,輸入m鍵則顯示幫助信息。
這里先輸入: n --表示新建分區(qū)。
這里提示分區(qū)順序號(hào),默認(rèn)為3,直接按回車即可。前面有sda1、sda2所以這里默認(rèn)就是sda3.
之后一路回車直到提示已經(jīng)創(chuàng)建了分區(qū)
這樣就是創(chuàng)建完成了,但是需要輸入:w --保存分區(qū)表,才算完成,這個(gè)階段如果退出,這個(gè)分區(qū)就不存在了。
輸入:w --保存完成,然后可以ctrl +c 退到根命令行?;蛘呤亲詣?dòng)退出的。
再次輸入:fdisk -l 就可以看到sda3分區(qū)了。
這是我們新建的分區(qū)。使用mkfs命令對(duì)分區(qū)進(jìn)行格式化。
命令:mkfs.ext4 /dev/sda3 --格式化為ext4格式,這是linux常用的格式,PS4也是這個(gè)格式的。
一次性命令,操作完成后輸入:blkid 查看磁盤(pán)標(biāo)識(shí)。
465ed9d6-788f-47eb-939e-dddfeb9818a1
這里把UUID復(fù)制保存下來(lái),后面要用。然后重啟一下:reboot
465ed9d6-788f-47eb-939e-dddfeb9818a1
重啟之后登錄,使用uci命令操作掛載。
重啟的時(shí)候就把putty關(guān)掉,winscp會(huì)自動(dòng)重試登錄,所以當(dāng)重啟完成后,可以winscp重新登錄上去,打開(kāi)putty也方便。
PS:winscp連接用的是scp,而不是sftp。scp登錄時(shí)仍然是默認(rèn)密碼。而putty只要輸入用戶名即可。但是如果修改過(guò)密碼,則putty也需要輸入密碼。
命令: uci add fstab mount --添加一個(gè)掛載
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=/ --目標(biāo)路徑為/ 即為根目錄。
uci set fstab.@mount[-1].device=/dev/sda3 --使用sda3。
uci命令是沒(méi)有空格的,要注意。
擴(kuò)容后復(fù)制文件
命令:mkdir /mnt/sda3 --創(chuàng)建路徑sda3
mount /dev/sda3 /mnt/sda3 --掛載sda3
mkdir -p /tmp/cproot --創(chuàng)建一個(gè)cproot文件夾
mount --bind / /tmp/cproot --綁定cproot
tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda3 -xf - --復(fù)制文件
umonunt /tmp/cproot --解除掛載
umount /mnt/sda3 --解除掛載
啟用引導(dǎo)
/etc/init.d/fstab enable --啟用
/etc/init.d/fstab start --啟動(dòng)
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
實(shí)際可能無(wú)法執(zhí)行,或者wget不到。那首先還是要解決一個(gè)能get的網(wǎng)絡(luò)。然后瀏覽器直接輸入https://xxx.xxx.xxx/xx/xx/xx/xx/istore-reinstall.run
把所有內(nèi)容復(fù)制,然后winscp 在tmp文件夾新建一個(gè)文件
文件名后綴sh或者run區(qū)別不大。文件名可以取短一些,方便putty輸入。
保存文件后,使用putty執(zhí)行
定位到tmp文件夾: cd /tmp
為文件提權(quán): chmod 777 istore.run
我保存的是sh,按原文件應(yīng)該是run。倒是都能執(zhí)行
執(zhí)行文件 ./istore.sh
之后刷新頁(yè)面,就出現(xiàn)了istore。
我這里,可能安裝有問(wèn)題,最近服務(wù)器不穩(wěn)定,也沒(méi)去研究,所以一直顯示獲取,之前安裝之后,這里就和正常的istore一樣,可以安裝。
靜態(tài)ip的DNS處理+ 上傳跑滿軟路由斷網(wǎng)+軟路由死機(jī)+導(dǎo)致全屋斷網(wǎng)。
目前看下來(lái)是同一個(gè)問(wèn)題,就是x86的這個(gè)自帶的dnsmasq不靈敏。導(dǎo)致得不到上游DNS的時(shí)候,masq會(huì)大量發(fā)包請(qǐng)求DNS解析,最后耗盡資源系統(tǒng)掛起。因?yàn)檫@個(gè)過(guò)程最先被吃掉的是帶寬所以,上行會(huì)跑滿。那這個(gè)過(guò)程,這個(gè)數(shù)據(jù)包會(huì)發(fā)向光貓,所以最后光貓也被占用了千兆帶寬。最后全屋設(shè)備都無(wú)法上網(wǎng),和DDOS類似。
現(xiàn)象分析
比如150的并發(fā),并且任意端口。這樣就在同一時(shí)間發(fā)起超多的請(qǐng)求。
最開(kāi)始只是間歇性的,比如十分鐘左右會(huì)有一次。而且并不是一開(kāi)始就會(huì)有,而是系統(tǒng)運(yùn)行一段時(shí)間之后產(chǎn)生的,所以很難注意到,而且當(dāng)時(shí)只分配了兩個(gè)核心,所以出現(xiàn)問(wèn)題時(shí),頁(yè)面根本無(wú)法響應(yīng)我,無(wú)處可查。而且對(duì)端口不在意,導(dǎo)致各種端口都在發(fā)包也就不知道是哪里引起的。
后面擴(kuò)充了四個(gè)核心,基本能響應(yīng)頁(yè)面的請(qǐng)求了。于是每次發(fā)生問(wèn)題時(shí),就去看實(shí)時(shí)信息里面的連接。最開(kāi)始發(fā)現(xiàn)Windows虛擬機(jī)會(huì)向東京的一個(gè)IP發(fā)送80端口的請(qǐng)求,還以為是有病毒。于是把三個(gè)Windows虛擬機(jī)都關(guān)機(jī)了。但是問(wèn)題還會(huì)出現(xiàn),并沒(méi)有改善。所以又懷疑系統(tǒng)有問(wèn)題。
好在中間有幾次是請(qǐng)求的cloudflare,啟用dns查找之后,偶爾能看到是dns解析地址,有些網(wǎng)址去查了注冊(cè)域也發(fā)現(xiàn)是正規(guī)的vps服務(wù)商。而且后面三個(gè)虛擬機(jī)都裝了殺毒軟件,也沒(méi)查到問(wèn)題。
那么初步就認(rèn)為是DNS的問(wèn)題了,我的網(wǎng)絡(luò)結(jié)構(gòu)稍有復(fù)雜。
eth4是硬路由管理軟路由用的。eth1是所有虛擬機(jī)連接外網(wǎng)的網(wǎng)橋,分配60.1網(wǎng)關(guān)和dhcp。
IPTV85是做udpxy用的。
IPTV1是連接光貓上網(wǎng)的。
兩個(gè)IPTV是用VLAN處理的。
能出現(xiàn)這種問(wèn)題可能也是因?yàn)?,eth4是連接的硬路由lan口,寫(xiě)硬路由的lan網(wǎng)段。并且硬路由和IPTV1同時(shí)連接到光貓。某種程度下像是環(huán)網(wǎng),初期把eth4的網(wǎng)關(guān)取消了。只作為本地管理用。
總之前面帖子所寫(xiě)的問(wèn)題的處理并沒(méi)有根本解決問(wèn)題。這次通過(guò)更換系統(tǒng),并多次重啟發(fā)現(xiàn)配置的dns地址偶爾會(huì)不生效。而且之前生效的內(nèi)容,重啟之后,就會(huì)失效。等于配置有問(wèn)題。
現(xiàn)象總結(jié)
從開(kāi)始接觸,到現(xiàn)在的現(xiàn)象總結(jié)。
ddns-go 會(huì)每周重新綁定一次,是電信后臺(tái)動(dòng)態(tài)公網(wǎng)IP的原因。
大概每?jī)芍躣dns-go無(wú)法獲取外部ip,網(wǎng)絡(luò)中斷。
大概每隔幾天,虛擬機(jī)均無(wú)法連接外網(wǎng)。檢查并設(shè)置lan口的dnsIP或者wan口的 dns IP可以解決。
偶爾但頻繁的,全屋設(shè)備斷網(wǎng),無(wú)法正常上網(wǎng)??赡芤粌蓚€(gè)小時(shí)現(xiàn)象才會(huì)消失。
系統(tǒng)重啟后,原本能連接外網(wǎng)的虛擬機(jī),無(wú)法聯(lián)網(wǎng)。
虛擬機(jī)的網(wǎng)口狀態(tài)和實(shí)際不一致,應(yīng)該是軟路由強(qiáng)制鏈路導(dǎo)致的。并且本身更新就不及時(shí)。顯示IE連接但實(shí)際無(wú)法上網(wǎng)。
虛擬機(jī)要禁用再啟用網(wǎng)口,dnsmasq才會(huì)有分配新的租約,偶爾dnsmasq沒(méi)有分配dhcp記錄,但是虛擬機(jī)還能正常上網(wǎng)。
問(wèn)題處理
簡(jiǎn)單說(shuō),dnsmasq實(shí)在搞不懂,所以安裝了一個(gè) smartDNS作為dnsmasq的上層DNS負(fù)責(zé)解析。既然dnsmasq無(wú)法按正常設(shè)置處理dns解析,那就由另一個(gè)來(lái)處理。
同時(shí)對(duì)dnsmasq做一些優(yōu)化。
直接安裝i18n的,這樣會(huì)安裝全部組件。
smartDNS的上游服務(wù)器自行配置。端口可以不要,dns查詢用的是udp協(xié)議,默認(rèn)是53端口,這里可以不填。
因?yàn)閐nsmasq占用了53端口,所以這里換個(gè)端口。
服務(wù)運(yùn)行后,查看dnsmasq。
這里定向到54端口來(lái)負(fù)責(zé),應(yīng)該有人會(huì)說(shuō),為什么不直接把smartDNS的dns寫(xiě)到網(wǎng)口的自定義DNS中,這個(gè)確實(shí)嘗試過(guò),但是我這里不起作用,尤其系統(tǒng)重啟之后就失效了,以至于寫(xiě)或者不寫(xiě),我都不清楚是自定義dns解析的,還是光貓網(wǎng)關(guān)解析的。能簡(jiǎn)單處理的。就不用再寫(xiě)這個(gè)帖子了。
常規(guī)設(shè)置中,唯一授權(quán)勾選,然后本地域名這里手動(dòng)填一個(gè)域名出來(lái)。
過(guò)濾器這里,可以勾選忽略空域名,然后取消勾選重定向保護(hù),或者兩個(gè)都取消勾選。
給接口填入剛剛在dnsmasq中定義的本地域名。
實(shí)測(cè)的時(shí)候,創(chuàng)建smartDNS之后,以及填寫(xiě)自定義DNS服務(wù)器之后,重啟之后還是會(huì)斷網(wǎng),無(wú)法解析。填入域名之后,就正常了。理論上填寫(xiě)smartDNS的服務(wù)器名稱也是可以的。
想著是經(jīng)過(guò)dnsmasq轉(zhuǎn)出的解析請(qǐng)求所以這里填哪個(gè)應(yīng)該都差不多。
對(duì)于Openwrt來(lái)說(shuō),實(shí)在是不懂,正常來(lái)說(shuō),這里我填60.1也是openwrt的,ip地址,那就應(yīng)該可以解析,實(shí)際并沒(méi)有,填入dns域名之后就可以了,應(yīng)該是說(shuō)明,通過(guò)dnsmasq可以解析我的搜索域名,然后定向的。
IP
x
作者聲明本文無(wú)利益相關(guān),歡迎值友理性交流,和諧討論~
,