筆記

Linux 防火牆實作地區性的 IP 封鎖

最近讀到一則來自 AdGuard 部落格的消息《EasyList is in trouble and so are many ad blockers》,其內容描述 EasyList 這個由社群維護的廣告過濾清單,近期曾一度因為過多的連線請求,形成就像被 DDoS 的情形而變得難以存取。而問題的來源,似乎是印度地區的某款 Android 網頁瀏覽器存在設計缺失,會以不正常的頻率反覆下載該清單,而造成嚴重的流量負載。

 

像這樣的案例,倘若技術條件可行,也許在必要時得先暫時封禁特定的地區,讓其它地區的用戶不致受到影響,直到問題的來源消弭為止。而這也讓 DR 想起自己幾年前在虛擬主機商做值班工程師的一個故事。不過在此之前,DR 得先描述一下背景,以便讓人瞭解為什麼當下似乎只能採取這種作法。

 

分類: 

Python 讀取 Big5 編碼的 ZIP 壓縮檔

很難預想到,即便在 2022 年的現代作業系統中,仍然會遇到與古老 Big5 編碼有關的問題。然而就 Windows 來說確實是如此,時至今日為止,至少在隨處可見的 Windows 10 繁中環境裡,其預設的環境編碼依然是 CP950(微軟自行維護的 Big5 實作)。因此根據壓縮軟體的具體實作而異,所生產出來的 ZIP 壓縮檔,寫入的檔名清單不盡然都會是 Unicode,也有可能依然是 CP950。

 

延伸閱讀:libarchive 函式庫關於檔名處理的說明文件

 

分類: 

Linux 下修復 UEFI 開機程式之流程

倘若因某些緣故,發生 Linux 系統的 UEFI 開機失效,使得無法順利進入作業系統。那麼可參考以下流程,來進行 UEFI 開機程式重新安裝的動作。本文範例是以 CentOS Stream 8 為操作環境,使用此發行版的安裝映像檔做開機,然後進入救援模式。接著設法讓安裝在磁碟中的相同發行版,回復至可順利啟動的狀態。

 

若是使用同為 Red Hat 生態體系下的 Linux 發行版,操作流程應會相當一致。至於其它的 Linux 發行版本,則至少在概念上也是相同的。

 

1. 進入救援模式

分類: 

隨身碟資料救援小記

按理講 USB 隨身碟應該被視為是一種消耗品,是僅供臨時性的資料移動,而非講究保障的資料儲存方案。但……如果裡頭真的有資料想要救援呢?話說前陣子 DR 拿到一顆 128GB 的隨身碟,是處於無法開啟的狀態。雖然裝置本身偵測得到,但在 Windows 或 Linux 系統上,分割區實際上都無法順利掛載。其中以 Linux 來說,就是即便手動做 mount 也會直接卡住不動,也就無法讀取裡頭的檔案。

 

嘗試使用 ddrescue 做區塊複製,例如以下指令是將 /dev/sdb 複製到名為 rescued.img 的映像檔:

  • ddrescue -f -r 1 -n -v -d -b 512 /dev/sdb rescued.img recovery.log

 

分類: 

Windows 7 壽後期間的疑難排解筆記

於 2009 年發佈的 Windows 7 作業系統,就如同許多的 Windows 版本一樣,有著相對驚人的使用壽命。儘管其更新維護已於 2020 年終止(除非是有採購延伸安全性更新的用戶,則能夠獲取更新至 2023 年),但就如 OSnews 網站上的一篇文章所透露出的訊息,依然有為數眾多的 PC 是停留在 Windows 7,且有許多使用者並沒有對此有什麼不滿意的地方。

 

這或許是因為,其實與 Windows 7 同期的 PC 主流規格,其運算效能往往已經相當飽和。只要使用者執行的工作、以及所使用的應用程式都沒有出現變化,那麼它就依然足敷使用,頂多再經過小幅度的升級即可(SSD、記憶體等等)。因此就一般使用者的角度而言,倘若沒有淘汰整部 PC 的需求,自然就不會想連帶地更換作業系統。而唯一剩下的風險,就是安全性的議題了。不過也是有應對措施,如防火牆管制等,能夠加以緩解。

 

分類: 

ddrescue 救援藍光光碟

自從 DR 在去年將二號機的資料碟也更換為 SSD 後,開始接受將藍光光碟備份一份複本的作法。於是便使用 MakeMKV,陸續將手上的藍光媒體皆備份到磁碟裡。前面幾片都相當順利,直到一路操作到 DR 入手的第一片藍光、也就是 2014 年的《哥吉拉》(Godzilla)時,卻出現了光碟部份資料始終讀取失敗,以致無法完成備份的情形。

 

分類: 

FFmpeg 實作簡易監視器與錄影

話說公司裡有一個房間是充當資訊機房的作用,雖然放置了一堆設備跟線路,但外觀上就是很單純的一個房間,也沒有監視器。儘管監視器實際上並不是很重要,但由於 DR 的座位,跟機房之間有點距離。所以若能規劃出一個簡易方案,從遠端就能夠檢視機房現場,覺得也不是件壞事。

 

於是便從機房中選了一部作業系統為 RHEL 8.x 的伺服器主機,裝上一支 Microsoft LifeCam HD-3000 網路攝影機。讓該主機除了原本的任務外,再額外擔負起監視機房的工作。至於軟體層的規劃非常單純,DR 的構想是在主機上使用 FFmpeg 擷取視訊鏡頭(/dev/video0),並轉碼成 H.264 串流;然後透過管線輸送給本機的 VLC 播放軟體,再由 VLC 建立一個簡單的 HTTP 服務在 8080 埠上。編寫的指令如下:

分類: 

Avast Antivirus 的網路掃描行為

一直以來,DR 對防毒軟體的印象都不是太好。即便前陣子曾在某防毒軟體代理商工作過,但也沒有因此改觀(甚至可能還更糟了)。儘管如今對於這項領域已經沒有什麼涉入,但不幸地,偶爾還是會遇到跟防毒軟體有關的事情。

 

某日在登入公司的一部 Linux 主機時,注意到有幾筆 SSH 登入失敗記錄。由於平常這些遠端服務,一般來說只有 DR 在用而已,所以這顯然不正常。進一步查看日誌,這些連線的時間點非上班時間,且似乎背後有一份經過蒐集的清單在那邊試,而不是只有嘗試登入 root 或 admin 等等這些常見的名稱。

 

此外也同步查核了公司內的 Windows Server 主機,則發現其 SMB 服務,在相同的時間點,也有同樣來源的嘗試登入記錄。如此蓄意的行為,當然不能就這樣放過。於是便從 IP 位址循線找到了來源電腦,發現那是一部 Windows 7 SP1 的客戶端電腦。雖然略舊,但一時之間也沒查看出明顯有問題的地方。

 

於是回頭再翻查伺服器日誌,用來源 IP 再搜了一遍。這才意識到其實 httpd 也有被嘗試登入的情形,而且這回線索就很明顯了,因為所留下的 User-Agent 字串,直接就寫著「Avast Antivirus」。

 

分類: 

WireGuard 連接客戶端區域網路

在利用 WireGuard VPN 來存取區域網路的數種應用情境裡,可能最常見的實作,是在區網內架設一部 WireGuard 伺服器(可參考本站的 How-To 文件),供外部客戶端連入,再藉此連接至區網內的其它設備。或者單純地將所有欲透過 WireGuard 連接的設備,都建置為 WireGuard 的客戶端。再連接至共同的 WireGuard 伺服器,以實現彼此之間的通訊。

 

然而倘若欲分享的是某一 WireGuard 客戶端的區域網路,而非 WireGuard 伺服器所在的區域網路。也就是其它客戶端欲透過 WireGuard 伺服器作為中介,來連接至某一客戶端的區網,則設定方式其實也並不複雜。在此情境下,其基本概念,是欲分享區網的客戶端會相同於 WireGuard 伺服器,也會需要具備 NAT 的能力。因此該客戶端主機的網路設定,同樣需要啟用封包轉遞及 IP 偽裝。

 

分類: 

FFmpeg 分切影片指令

最近研究了一下,如何在 Amazon 的 Fire TV 電視棒(Fire TV Stick)上播放本地的媒體檔案。首先可以透過應用程式市集,下載及安裝 VLC 播放軟體。然後使用 USB OTG 線(具備一公一母的 Micro USB 接頭、以及至少一個 USB Type A 母接頭),以便在接上原本電源的同時,也可以再接上一個 USB 隨身碟。

 

不過即如同許多市售的行動產品,Fire TV 僅容許外接儲存裝置使用古早的 FAT32 檔案系統;而 FAT32 一個最顯著的限制,是單一檔案的上限為 4GB。所以倘若影片檔案大於 4GB,就會有無法放入隨身碟的問題。由於 DR 並未打算深入追究,如何讓 Fire TV 支援其它較先進的檔案系統,如 exFAT 等。所以是傾向單純地在配合 4GB 限制的情況下,來滿足播放本地檔案的需求。

 

分類: 

頁面

Subscribe to RSS - 筆記