為什么會有這篇文章?
關(guān)于為什么我會想到折騰光貓,見 https://hi.imzlh.top/2024/03/02.cgi
這篇文章本來應(yīng)該在4個月前就完成了,但是我一直都在折騰NAS軟件
其中我也嘗試了很多方法,奈何時間不足斷斷續(xù)續(xù)的
WebList,前身叫做 weborf,是一個小巧的支持簡單的WebDAV的程序
我修改了一下UI和認(rèn)證部分,改動不多但是性能不強(qiáng),且只能服務(wù)靜態(tài)文件,很快拋棄
MomentPHP,前身是PHPMVC,經(jīng)過兩個月的擴(kuò)充,已經(jīng)很全能了
可惜不知道是什么原因,總是莫名其妙出點問題,性能也不可樂觀,上個月后就拋棄了
vList5,前身是vList3,同樣是為了Nginx設(shè)計,只不過改成了njs作為平臺
繼承了NGINX超強(qiáng)并發(fā),使用了VUE絕對響應(yīng)式,在昨天正式完成主要功能
至于為什么會這么折騰,完全是因為光貓限制比較大。詳細(xì)的內(nèi)容看原文即可,我們現(xiàn)在開始吧
準(zhǔn)備一臺光貓
這個材料很好找,一般的光貓都可以,但是有些光貓鎖得很死,很考驗大家的技術(shù)
為光貓解鎖telnet
為什么是telnet呢
case1:熱門機(jī)型直接找
這一步就需要大家熟練使用搜索引擎了。
型號很好找,直接打開 管理頁面,去網(wǎng)上搜索就輕松找到
case2:找不到或失敗
可以嘗試一些工具,比如 針對ZTE機(jī)型的爆破工具
這里就不重點介紹了,感興趣的自己研究
連接到光貓
下載 putty,telnet連接到192.168.1.1
賬號密碼就是上一步爆破得來的,直接輸入就行了
有的畜生光貓默認(rèn)給的權(quán)限不是root,這個時候移動root密碼一般都是 aDm8H%MdA
,其他的我也不清楚請自行搜索
建議固定到Windows剪貼板( Win標(biāo) + V )上,下一次登錄就很方便了
為光貓干掉TR069
運營商有一個坑爹的東西叫做遠(yuǎn)程管理,能批量遠(yuǎn)程配置
一旦配置下發(fā),你可能就又得再重新配置一次了(《從0開始的折騰之旅》)
因此為了杜絕后患,必須得把遠(yuǎn)程管理這個隱患干掉
sidbg or sendcmd
我接觸過兩種光貓,有兩種管理工具,除了名字不一樣,命令是一樣的
你可以試試看哪種命令適合你的光貓
| sendcmd 1 DB set WANC 0 Enable 0 |
| sidbg 1 DB set WANC 0 Enable 0 |
然后你也可以順便改一下超級密碼,這樣下次Web端登錄會更方便
(比如我家的光貓就是賬號 root
密碼 toor
,怎么樣好記嗎)
| sidbg 1 DB set DevAuthInfo 0 User [賬號] |
| sidbg 1 DB set DevAuthInfo 0 Pass [密碼] |
查看架構(gòu)
~ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 1594.16
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture : 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
processor : 1
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 1594.16
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture : 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
Hardware : ZTE ZX279128 (Device Tree)
Revision : 0000
Serial : 0000000000000000
首先看 processor,有兩個,是古董級雙核處理器
再看 model name,是Armv7l,ARM的最后一代32位處理器
最后是 Features,沒有vfp,就是 arm-eabi
,有vfp那就是arm-eabihf
最后可以了解一下CPU,通過 Hardware 可以了解,比如我這一塊CPU就是
ZX279128S是一款功能強(qiáng)大的SoC(System on Chip)芯片。芯片內(nèi)嵌ARM Cortex A9雙核處理器 以及豐富的外設(shè),使用AXI高性能總線實現(xiàn)互聯(lián),CPU的頻率達(dá)到1000MHz,可實現(xiàn)復(fù)雜協(xié)議報文的處理。
armv7,但是沒有vfp,那就當(dāng)作是armv5,或者說是armel,別搞錯了
mips的可能稍微難搞一點,下文可能需要自己編譯軟件
考慮安家位置
這個很重要,劃重點
根目錄大多是有CRC校檢的或者直接打包進(jìn)內(nèi)核的,bin這類文件夾大多放在根目錄。所以想要重啟后不消失或者不變磚,建議找/usr/data
,空間也大
或者這里更建議扔到自啟動腳本周圍,如我的光貓就保存到/usr/local/osgi/
,方便
下文默認(rèn)所有文件都保存到/usr/local/osgi/
,如果不是,你可能需要修改nginx配置并替換所有出現(xiàn)的/usr/local/osgi/
準(zhǔn)備軟件
想要ctrl作為軟件管理程序 自行參考 我寫的文章
[懶人版一鍵復(fù)制] 這里假設(shè)你的光貓有curl自帶,如果沒有,參考 https://hi.imzlh.top/2024/03/02.cgi
| |
| curl https://hi.imzlh.top/usr/uploads/2024/03/971539169.gz -k | gunzip - > aria2 |
| |
| curl https://hi.imzlh.top/usr/uploads/2024/07/1871251897.gz -k | gunzip - > nginx |
| |
| curl https://hi.imzlh.top/usr/uploads/2024/07/1468987588.gz -k | gunzip - > natmap |
配置nginx
首先,你需要安裝vList5和一個fancyindex美化包,方法也非常簡單
假設(shè)你的硬盤已經(jīng)掛載到了/mnt
,如果沒有,請執(zhí)行mount /dev/sda /mnt
| curl -Lk https://github.com/imzlh/vlist-njs/releases/download/master/vlist5.js -o /usr/local/osgi/vlist.js |
| cd /mnt |
| curl https://github.com/imzlh/vList5/releases/download/main/vlist5_latest.tgz -Lk | tar xz |
| mkdir .static |
| cd .static |
| curl https://hi.imzlh.top/usr/uploads/2024/07/2093537519.gz -k | tar xz |
關(guān)于nginx配置文件這里直接抄作業(yè)就行了,保存到 /usr/local/osgi/etc/nginx/nginx.conf
我可是研究了將近一天研究出來了這一份高性能高并發(fā)的nginx配置
(B:你似乎很驕傲啊,你知不知道,你這一句就相當(dāng)于赤裸裸地在說 “快夸我,快給我三連”?。?/small>
(別忘了新建文件夾,mkdir /usr/local/osgi/etc/nginx/
)
| worker_processes auto; |
|
|
| events { |
| accept_mutex on; |
| multi_accept on; |
| use epoll; |
| worker_connections 1024; |
| } |
|
|
| http { |
| include mime.types; |
| default_type application/octet-stream; |
| log_format main '$status $remote_addr $request'; |
| access_log /tmp/nginx/access.log main; |
|
|
| tcp_nopush off; |
| tcp_nodelay on; |
|
|
| client_max_body_size 256m; |
| client_body_buffer_size 128m; |
| client_header_timeout 1m; |
| client_body_timeout 10m; |
| send_timeout 10m; |
| reset_timedout_connection on; |
| client_body_in_file_only clean; |
| client_body_in_single_buffer on; |
|
|
| gzip on; |
| gzip_min_length 1024; |
| gzip_buffers 4 128k; |
| gzip_types text/plain; |
| gzip_vary on; |
|
|
| output_buffers 2 128k; |
| postpone_output 1460; |
| sendfile on; |
| sendfile_max_chunk 256k; |
| directio 4m; |
| keepalive_timeout 1h; |
| open_file_cache max=1024 inactive=1m; |
| open_file_cache_min_uses 4; |
|
|
| server_tokens off; |
|
|
| proxy_cache_path /tmp/nginx/cache/ levels=1:2 |
| keys_zone=thumb:1M inactive=10h max_size=256M; |
| proxy_http_version 1.1; |
| ssl_session_cache shared:SSL:1m; |
|
|
| dav_ext_lock_zone zone=dav:1m timeout=1h; |
|
|
| js_shared_dict_zone zone=njs:1m type=string; |
| resolver 114.114.114.114 223.5.5.5 8.8.8.8; |
|
|
| http2_recv_buffer_size 128k; |
| http2_chunk_size 128k; |
| http3_stream_buffer_size 128k; |
|
|
| server { |
| listen 81; |
| |
| |
| listen [::]:88; |
|
|
|
|
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
| root /mnt/; |
| index index.html; |
|
|
| fancyindex on; |
| fancyindex_localtime on; |
| fancyindex_exact_size off; |
| fancyindex_header /.static/header.html; |
| fancyindex_footer /.static/footer.html; |
| fancyindex_css_href /.static/core.css; |
| fancyindex_default_sort name; |
| fancyindex_show_path off; |
| fancyindex_hide_parent_dir on; |
| fancyindex_time_format "%y/%m/%d %H:%M"; |
|
|
| charset_types *; |
| charset utf-8; |
|
|
| dav_methods PUT DELETE MKCOL COPY MOVE; |
| dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; |
| dav_access user:rw group:rw all:r; |
| create_full_put_path on; |
| dav_ext_lock zone=dav; |
|
|
| |
| js_import /usr/local/osgi/lib/nginx/vlist.js; |
| js_import /usr/local/osgi/lib/nginx/ddns.js; |
| js_fetch_buffer_size 128k; |
| js_fetch_max_response_buffer_size 4m; |
| js_fetch_timeout 30s; |
| js_fetch_verify off; |
|
|
| add_header Alt-Svc 'h3=":444"; h2=":8443"; ma=86400'; |
| add_header Access-Control-Allow-Origin * always; |
| add_header Access-Control-Allow-Headers "Content-Type, Authorization" always; |
|
|
| location = /@api/{ |
| js_var $authkey "[請自己設(shè)一個密碼]"; |
| js_content vlist.main; |
| } |
| } |
| } |
PS 想要SSL? 打開注釋掉的內(nèi)容即可
考慮:動態(tài)更新
在這么精簡的系統(tǒng)內(nèi),如何處理 請求更新 呢?
那只有使用 curl 才行。如果沒有請使用 wget也差不多(嘛,HTTPS就別想了)
參考readme.md,這是適用于natmap地自動更新腳本的參數(shù)列表
argv[0]: Script path
argv1: Public address (IPv4/IPv6)
argv2: Public port
argv3: IP4P
argv4: Bind port (private port)
argv5: Protocol (TCP/UDP)
argv6: Private address (IPv4/IPv6)
所以腳本也很好寫(保存到/usr/local/osgi/update.sh
,別忘了chmod +x update.sh
):
| #!/bin/sh |
| |
| curl https://[你的服務(wù)地址]?addr=$1:$2 -k |
| |
| wget http://[你的服務(wù)地址]?addr=$1:$2 -O - >> /dev/null |
對于所有系統(tǒng),直接使用 cat > update.sh
,輸完了 Ctrl+D
即可
(如果系統(tǒng)很好心提供了vi
,那就更方便了,比如我的H60G就很良心地提供了busybox vi
)
| #!/bin/sh |
| curl https://....?addr=$1:$2 -k ^D |
這樣就OK了
考慮:自啟動
除非你家的光貓 7x24 小時開機(jī),不然難免會想要自啟動
我最開始修改了etc文件夾里的文件,第一臺變磚第二臺直接還原。
最后很簡單,直接暴力干掉插件系統(tǒng)就行了(java...如果你有需要建議留著)
參考了這篇文章,不僅干掉了java插件系統(tǒng),大幅度優(yōu)化之外還提供了自啟動管理
但是還是不能照抄,因為我們的java掛載不是鏡像,而是完整的磁盤分區(qū)
Filesystem | 1K-blocks | Used | Available | Use% | Mounted on |
---|
/dev/mtdblock12 | 30720 | 14464 | 16256 | 47% | /usr/local/osgi |
替換成以下內(nèi)容就行了
(這里吐槽一下,垃圾光貓權(quán)限都不給足,還需要su升權(quán),詳情:https://hi.imzlh.top/2024/03/11.cgi)
| #!/bin/sh |
|
|
| if [ ! -f /tmp/services.log ] |
| then |
|
|
| while true |
| do |
| curl -sk http://www.gstatic.com/generate_204 && break |
| sleep 10 |
| done |
|
|
| echo aDm8H%MdA | su -c "/usr/local/osgi/rc.sh" -l root > /tmp/services.log & |
|
|
| else |
| echo "services already started" |
| fi |
|
|
| exit 1 |
接下來是自啟動腳本 /usr/local/osgi/rc.sh
,這個腳本里是有root權(quán)限的
這里,我們需要啟動nginx和natmap
注意 千萬別忘記mkdir /tmp/nginx/
,不然nginx會啟動報錯的
| cd /usr/local/osgi/ |
| ./natmap -4 -k 8 -s stunserver.stunprotocol.org -h baidu.com -t 192.168.1.2 -p 80 -d -e update.sh |
| mkdir /tmp/nginx/ |
| ./nginx |
建議添加一行用來掛載USB磁盤
保存重啟
OK!全文完。
?轉(zhuǎn)自https://www.cnblogs.com/imzlh/p/18307425
該文章在 2024/10/8 9:01:00 編輯過