大學時代的用的電腦螢幕都是 AOC 這個牌子,要說優點大概就是品質還可以,然後價格以學生來說非常的棒,是那種在宿舍被幹走都不會多痛的價格,我印象中 24 英寸好像可以壓到三千以下,真的是很厲害
離開大學後,家裡是用雙螢幕,主螢幕是 AOC i2367FH,副螢幕則是從宿舍扛回來的 AOC i2267FWH,說真的一大一小看起來實在是很怪,而且因為兩個螢幕顯示大小不一樣,雖然都是 FullHD 的 1080p,但在兩個螢幕之間拖動視窗時就會有很討厭的段落感,加上 AOC 的螢幕不同款之間還是有個色差在,所以一直有打算一口氣換掉兩個螢幕
剛好 PChome 在打折,DELL 的螢幕價格變得很棒,就直接給它刷下去了
基本上開箱照片就省略了,畢竟我也沒拍,只有錄影存證而已
但要注意的是 Dell 內付的線材是 Mini-DisplayPort 轉 DisplayPort 的線材,雖然 U2417H 背後就有 Mini-DisplayPort 跟 DisplayPort 埠口,但你的顯卡不一定有支援兩個 DisplayPort 輸出,而它的 HDMI 也是行動裝置的 MHL 規格
U2417H 將螢幕的電源整合在螢幕後方,只要插上一般電腦 ATX 電源那種線材就可以,但電源線、USB 延長線、再加上一條 DisplayPort 線材,在雙螢幕的情況下就要注意整線了
裝好之後就是校色了,這時我想說怎麼 Spyder5Pro 跟智障一樣一直警告校準過期,而且校準過期的螢幕還顯示為之前的 AOC 螢幕,重新校準之後還是一樣,結果 U2417H 沒裝驅動時根本沒有型號,在裝置管理員會顯示成「一般 PnP 螢幕」
上 Dell 的技術支援網站,有類似 INFO 檔之類用於提供螢幕資料的驅動程式,安裝後就會正常辨識為 U2417H 了,只能說這螢幕不愧對它八千以上的價位,原廠的校準跟演色性都很不錯,校準前後只有細微差異,但 AOC 就豬羊變色,尤其是暖色系
2018-02-20
2017-10-09
Raspberry Pi 3 的系統監控與自製散熱解決方案
通常樹莓派都是以 Headless computer (沒有外接螢幕與鍵盤滑鼠)的方式運作,而用作家庭物聯網(IoT)伺服器、監視器主機或是檔案伺服器的情況也是一樣,通常都是把樹莓派放在一些比較難以觸及或看到的地方,可能掛在高處,也可能放在數據機旁邊
而這種應用環境會出現一些運用上的問題,像是最常見的散熱與系統運作問題,首先講一下散熱問題
以 Raspberry Pi 3 Model B 來說,採用的 BCM2835 SoC 在待機溫度上已經達到了 48.7°C,滿載溫度也有 55.7°C,負責 USB 埠與網路功能的 LAN9512 也可以達到 62.4°C 的高溫,在長時間的運作下可能會出現運作緩慢甚至當機的情況,因此要在晶片上黏貼散熱片,並視情況加上風扇去排出累積的熱量
下面就是各種嘗試過的散熱方案
一開始就有在背面的記憶體顆粒貼上散熱片
系統晶片 BCM2835 SoC 與負載時散發高溫的 LAN9512 也有貼上
省略上蓋直接放進自製支撐架
想加裝風扇所以弄了自製支撐架第二代
使用一顆六公分的風扇,驅動電壓五伏特的特規品
結果風量是有了,但風切聲很大,到了沒有安裝護罩都很吵雜的程度
只好再弄了自製支撐架第三代,改用九公分風扇
一開始採購的轉接線太長要繞著支撐架內部
改用自製轉接頭之後就可以直接接上
散熱問題解決之後,再來是軟體跟系統上的監控,你可以使用一些自動化腳本來監控,並在發生異常時提醒你去處理,當然樹莓派內建的硬體看門狗也是必須的,安裝看門狗之後可以在系統負載異常、處理器溫度過高、網路流量異常時重新啟動,端看你怎麼去設定監控函數
而我也額外寫了一些基於 Python 的小程式來監控,並使用 Crontab 來達成自動化運作,並在異常時通知我,我把撰寫好的程式放在 GitHub 上
而透過 Crontab 就可以讓這些基於 Python 的小程式自動運作

在排程好的時間就可以自動寄出系統溫度報告,並且在指定程式異常時發送通知(這是示範
再來講一下如何達成自動監控指定程式
在 Linux 系統中有所謂的 ps 指令,可以列出運作中的程式與系統程序,而透過調整參數,可以取出你想要的結果,再加以過濾,並搭配判斷式,就可以做出一定的操作
當然這邊是去查詢定程式是否在系統層面上正常運作(沒有當機或是凍結),如果是程式內部錯誤可能沒辦法偵測
簡單示範,輸入 ps x 可以看到運作中的程式與細部狀態
添加 grep 可以篩選出指定的程式
撰寫成 Python 腳本擷取指定輸出
再加上一些替換子來去掉我不要的字符
再加入判斷式去檢查是不是有符合我指定的字串
上面的範例是為了偵測 Hentai@Home 這套分散式運算系統是不是運作正常,因此我只要針對 HentaiAtHome.jar 這個程式作監測就好
將剛剛的判斷輸出改寫成電子郵件發送,就可以在偵測到異常時回報給我,並附上用於檢測的輸出結果來讓我判斷是不是真的有問題,還是說單純的誤報
只要輸出結果是 Sjava 則代表程式正常運作中,輸出 Sgrep 則是程式不在運作,其餘輸出則是程式當機或是凍結
這邊稍微修改一下判斷式,所以會把正常的狀況判定成異常並且回報

執行那個 Python 腳本就會輸出這樣的結果
理論上這樣就可以去偵測異常了,但我在兩個禮拜的運轉中有時會收到虛假的異常回報,顯示程式不在運作,但去檢查 Hentai@Home 頁面卻是正常的,因此做了一點研究

有時會收到這樣的異常回報,但程式其實是正常的
結果似乎是有時第一行輸出跟第二行輸出的順序會反過來,而 awk 只會抓取第一行,導致判斷式認為發生異常
而解決方法很簡單又暴力,直接兩行一起輸出再過濾跟判斷就好
將 awk 函數改成兩行都抓取,用替換子去掉我不要的字符,包含換行字符
再讓判斷式去搜尋 Sjava 就好
執行 Python 腳本就會輸出這樣的結果,再把判斷輸出改寫成電子郵件發送就好
而這種應用環境會出現一些運用上的問題,像是最常見的散熱與系統運作問題,首先講一下散熱問題
以 Raspberry Pi 3 Model B 來說,採用的 BCM2835 SoC 在待機溫度上已經達到了 48.7°C,滿載溫度也有 55.7°C,負責 USB 埠與網路功能的 LAN9512 也可以達到 62.4°C 的高溫,在長時間的運作下可能會出現運作緩慢甚至當機的情況,因此要在晶片上黏貼散熱片,並視情況加上風扇去排出累積的熱量
下面就是各種嘗試過的散熱方案
一開始就有在背面的記憶體顆粒貼上散熱片
系統晶片 BCM2835 SoC 與負載時散發高溫的 LAN9512 也有貼上
省略上蓋直接放進自製支撐架
想加裝風扇所以弄了自製支撐架第二代
使用一顆六公分的風扇,驅動電壓五伏特的特規品
結果風量是有了,但風切聲很大,到了沒有安裝護罩都很吵雜的程度
只好再弄了自製支撐架第三代,改用九公分風扇
一開始採購的轉接線太長要繞著支撐架內部
改用自製轉接頭之後就可以直接接上
散熱問題解決之後,再來是軟體跟系統上的監控,你可以使用一些自動化腳本來監控,並在發生異常時提醒你去處理,當然樹莓派內建的硬體看門狗也是必須的,安裝看門狗之後可以在系統負載異常、處理器溫度過高、網路流量異常時重新啟動,端看你怎麼去設定監控函數
而我也額外寫了一些基於 Python 的小程式來監控,並使用 Crontab 來達成自動化運作,並在異常時通知我,我把撰寫好的程式放在 GitHub 上
而透過 Crontab 就可以讓這些基於 Python 的小程式自動運作

在排程好的時間就可以自動寄出系統溫度報告,並且在指定程式異常時發送通知(這是示範
再來講一下如何達成自動監控指定程式
在 Linux 系統中有所謂的 ps 指令,可以列出運作中的程式與系統程序,而透過調整參數,可以取出你想要的結果,再加以過濾,並搭配判斷式,就可以做出一定的操作
當然這邊是去查詢定程式是否在系統層面上正常運作(沒有當機或是凍結),如果是程式內部錯誤可能沒辦法偵測
簡單示範,輸入 ps x 可以看到運作中的程式與細部狀態
添加 grep 可以篩選出指定的程式
撰寫成 Python 腳本擷取指定輸出
再加上一些替換子來去掉我不要的字符
再加入判斷式去檢查是不是有符合我指定的字串
上面的範例是為了偵測 Hentai@Home 這套分散式運算系統是不是運作正常,因此我只要針對 HentaiAtHome.jar 這個程式作監測就好
將剛剛的判斷輸出改寫成電子郵件發送,就可以在偵測到異常時回報給我,並附上用於檢測的輸出結果來讓我判斷是不是真的有問題,還是說單純的誤報
只要輸出結果是 Sjava 則代表程式正常運作中,輸出 Sgrep 則是程式不在運作,其餘輸出則是程式當機或是凍結
這邊稍微修改一下判斷式,所以會把正常的狀況判定成異常並且回報

執行那個 Python 腳本就會輸出這樣的結果
理論上這樣就可以去偵測異常了,但我在兩個禮拜的運轉中有時會收到虛假的異常回報,顯示程式不在運作,但去檢查 Hentai@Home 頁面卻是正常的,因此做了一點研究

有時會收到這樣的異常回報,但程式其實是正常的
結果似乎是有時第一行輸出跟第二行輸出的順序會反過來,而 awk 只會抓取第一行,導致判斷式認為發生異常
而解決方法很簡單又暴力,直接兩行一起輸出再過濾跟判斷就好
將 awk 函數改成兩行都抓取,用替換子去掉我不要的字符,包含換行字符
再讓判斷式去搜尋 Sjava 就好
執行 Python 腳本就會輸出這樣的結果,再把判斷輸出改寫成電子郵件發送就好
標籤:
Raspberry Pi
2017-09-16
在 Raspberry Pi 3 上以 Raspbian 架設 Hentai@Home 分散式運算系統
在前面一篇文章已經示範了用 Linux VPS 來運行 Hentai@Home ,而這次用被稱作樹莓派(官方名稱:Raspberry Pi )的開發用單板電腦來運行
或許很多人會想樹莓派跟一般電腦的架構完全不一樣( ARM 架構的 Broadcom BCM2837 之於一般電腦的 x86-64 處理器)怎麼可能跑這些東西,但其實只要是使用跨平台的方式去撰寫,比如用 Python 或是 Qt 模式去撰寫的軟體通常都可以在各種平台上運行,而 Hentai@Home 這種運行在 Java 架構上的軟體更不是問題
這篇省略了一些前面講過的東西,像是設定 DHCP 保留,將樹莓派的內部網路位址固定,以及設定 DHCP/NAT 的傳輸埠指定,將特定的傳輸埠開放到網路( WAN )上、並轉發給內部網路( LAN )的指定網路位址,以及申請 Hentai@Home 客戶端、網頁上設定客戶端的部分,請參閱前一篇文章
首先來講一下要運行 Hentai@Home,在樹莓派所運行的 Raspbian 上需要安裝的軟體與設定
接著硬體的部分,樹莓派是使用 MicroSD 記憶卡當作系統硬碟來運作,即使用大容量的記憶卡
考慮到頻繁的讀寫還是建議使用外接硬碟,畢竟跑 Hentai@Home 就是要越大的檔案快取空間( Files Served / Maximum Disk Cache Size )越好,弄顆有一定容量的外接硬碟是最佳解
手上有一顆小容量的固態硬碟,可以在讀取速度跟耗電量上取得不錯的平衡,畢竟樹莓派的 USB 埠最大輸出電流量只能到 1200 mAh
左邊是樹莓派跟它的風扇,右邊是中華電信光世代的數據機
快門速度的關係,讓風扇看起來像停轉
這條是自製的 USB 轉 3 Pin 風扇座
樹莓派跟自製風扇罩
用自製迷你轉接頭供電給自己的風扇,也供電給數據機冷卻風扇、
固態硬碟跟外接盒用 3M 魔鬼氈固定在櫃子頂部
接下來要把外接的固態硬碟掛載到樹莓派的系統,並能被運行的 Raspbian 系統存取使用
也就是說要把外接硬碟內部資料清空、刪除原先的分隔表、建立新的分割表與分割區,因此請確定這顆硬碟裡面沒有你需要的資料
依照上面的操作,重新開機後外接硬碟應該就會掛載到指定資料夾下了
接著我們來跟前面一篇文章一樣,下載並安裝 Hentai@Home
填入客戶端編號與金鑰後,沒意外的話 Hentai@Home 已經開始順利執行了

在 E-hentai 可以看到樹莓派上的客戶端已經連線,兩個客戶端 6000 KBps 大約是亞洲區的百分之二運算力

接著就是等著 Gallery Points 跟 Hath 入袋了
通常樹莓派都是以 Headless computer (沒有外接螢幕與鍵盤滑鼠)的方式運作,因此可以用一些自動化腳本來監控並在發生異常時提醒你去處理,當然樹莓派內建的硬體看門狗也是必須的,詳細請參考這篇文章
而我也額外寫了一些基於 Python 的小程式來監控,並使用 Crontab 來達成自動化運作,並在異常時通知我,我把撰寫好的程式放在 GitHub 上了

使用 Crontab 來自動化運作,定時回報處理器溫度與在 Hentai@Home 異常時回報
或許很多人會想樹莓派跟一般電腦的架構完全不一樣( ARM 架構的 Broadcom BCM2837 之於一般電腦的 x86-64 處理器)怎麼可能跑這些東西,但其實只要是使用跨平台的方式去撰寫,比如用 Python 或是 Qt 模式去撰寫的軟體通常都可以在各種平台上運行,而 Hentai@Home 這種運行在 Java 架構上的軟體更不是問題
這篇省略了一些前面講過的東西,像是設定 DHCP 保留,將樹莓派的內部網路位址固定,以及設定 DHCP/NAT 的傳輸埠指定,將特定的傳輸埠開放到網路( WAN )上、並轉發給內部網路( LAN )的指定網路位址,以及申請 Hentai@Home 客戶端、網頁上設定客戶端的部分,請參閱前一篇文章
首先來講一下要運行 Hentai@Home,在樹莓派所運行的 Raspbian 上需要安裝的軟體與設定
接著硬體的部分,樹莓派是使用 MicroSD 記憶卡當作系統硬碟來運作,即使用大容量的記憶卡
考慮到頻繁的讀寫還是建議使用外接硬碟,畢竟跑 Hentai@Home 就是要越大的檔案快取空間( Files Served / Maximum Disk Cache Size )越好,弄顆有一定容量的外接硬碟是最佳解
手上有一顆小容量的固態硬碟,可以在讀取速度跟耗電量上取得不錯的平衡,畢竟樹莓派的 USB 埠最大輸出電流量只能到 1200 mAh
左邊是樹莓派跟它的風扇,右邊是中華電信光世代的數據機
快門速度的關係,讓風扇看起來像停轉
這條是自製的 USB 轉 3 Pin 風扇座
樹莓派跟自製風扇罩
用自製迷你轉接頭供電給自己的風扇,也供電給數據機冷卻風扇、
固態硬碟跟外接盒用 3M 魔鬼氈固定在櫃子頂部
接下來要把外接的固態硬碟掛載到樹莓派的系統,並能被運行的 Raspbian 系統存取使用
也就是說要把外接硬碟內部資料清空、刪除原先的分隔表、建立新的分割表與分割區,因此請確定這顆硬碟裡面沒有你需要的資料
依照上面的操作,重新開機後外接硬碟應該就會掛載到指定資料夾下了
接著我們來跟前面一篇文章一樣,下載並安裝 Hentai@Home
填入客戶端編號與金鑰後,沒意外的話 Hentai@Home 已經開始順利執行了

在 E-hentai 可以看到樹莓派上的客戶端已經連線,兩個客戶端 6000 KBps 大約是亞洲區的百分之二運算力

接著就是等著 Gallery Points 跟 Hath 入袋了
通常樹莓派都是以 Headless computer (沒有外接螢幕與鍵盤滑鼠)的方式運作,因此可以用一些自動化腳本來監控並在發生異常時提醒你去處理,當然樹莓派內建的硬體看門狗也是必須的,詳細請參考這篇文章
而我也額外寫了一些基於 Python 的小程式來監控,並使用 Crontab 來達成自動化運作,並在異常時通知我,我把撰寫好的程式放在 GitHub 上了

使用 Crontab 來自動化運作,定時回報處理器溫度與在 Hentai@Home 異常時回報
2017-09-12
在 ConoHa 上以 Ubuntu 16.04 LTS 架設 Hentai@Home 分散式運算系統

這張應該可以稱作是另類的世界名畫了
應該蠻多人知道所謂「E 變態」或是那個暗號「熊貓」,這篇就是在講這個
所謂的「E 變態」,全名是 E-hentai,是一個非營利性質的圖片分享平台,註冊用戶可以上傳同人誌、畫冊掃圖、Cosplay 攝影集等資源,當然網站的內容大多數是工口向的同人本就是了
在 E-hentai 充滿了紳士們最愛的工口向同人本,還有一部分的歐美作品、正常向同人本以及連載漫畫和原畫集、設定集的掃圖,偶爾會有少量 Cosplay 攝影集,E-hentai 也是最大的同人本資源分享社群網站、最大的同人本翻譯資源集散地
這邊就不講給新手聽了,來講一點高手向的東西
Hentai@Home
看到 @Home 這個關鍵字,熟悉電腦與網路歷史的人應該已經猜到了,是的,Hentai@Home 是一款分散式的運算軟體,將 P2P 使用者檔案共享技術與知名的分散式運算軟體 SETI@home 做融合,讓一般電腦都可以幫 E-hentai 網站分攤龐大的運算量與使用者流量
當然純粹的消耗頻寬與運算資源就跟作慈善沒什麼兩樣,因此 Hentai@Home 提供了很多的福利,以惠於提供運算能力的人在 E-hentai 經濟圈裡面成為大佬,要說最直接的福利,分別是跟山一樣的 Gallery Points( GP ),強大的 Hath 與 H@H Downloader
所謂 Gallery Points( GP )是 E-hentai 經濟圈裡面的基礎貨幣,最主要的用途是拿來下載圖庫(以打包的方式)與重置檢視影像的限制計數器(算是一種減輕伺服器負載的作法,而 GP 可以重設計數器),而每當一個使用者透過你擁有的 Hentai@Home 客戶端存取圖庫,每存取一次你就可以獲得 1 GP,別小看累積的數字,一天累積 40,000 GP 是可以的甚至更高,也就是說如果你沒有玩 HV 這個文字冒險遊戲的話,跑 Hentai@Home 賺到的 GP 你這輩子可能花不太完
而 Hentai at Home( Hath )是 E-hentai 經濟圈裡面的最具價值的貨幣,它可以兌換某些要透過實體貨幣(當然要先轉成 BTC 等數位貨幣才能餵到 E-hentai 裡面)才能獲得的功能,比如說網站內建的去廣告,簡單來說就是用你的電腦來幫你賺點福利
而 H@H Downloader 則是讓你可以直接下載圖庫到你的 Hentai@Home 裡面,只要簡單按個鍵,晚點去收成就好,下載的檔案會以資料夾(目錄)的方式存放,如果是遠端主機的話可以直接開 SFTP 把它拉回自己的電腦
講了這麼多,再來就講一下怎麼在遠端主機架設 Hentai@Home,剛好一直有一台在運行 OpenVPN-AS 的 Ubuntu Server,稍微拉一點資源出來跑 Hentai@Home 也是可以,其實單板機都跑的動,不過這是後話
首先是前置作業
接著是如何申請

首先打開 E-hentai 網站,在 My Home 選擇 Hentai@Home 來申請客戶端
申請 Hentai@Home 需要幾個條件,分別是:
- 每秒最大爆發頻寬至少 200KB
- 每小時總傳輸量至少 300MB
- 資料儲存容量至少 10GB
- 需要 SpeedTest 測試結果佐證
接下來講如何申請

把剛剛的測試結果貼在最下面,然後填入你想提供的頻寬、流量與容量,申請成功會看到綠色字樣

等個一兩天就會看到通過申請的字樣,這時可以進入細部設定頁面,最上面有重要的編號與金鑰
再來是比較複雜的建立 Hentai@Home 運作環境,我在找相關的中文資料時只有找到中國大陸那邊的資料,雖然照著弄是可以跑,但是後來想想,是踏了蠻多冤枉路的,但畢竟各家主機商的預設環境不一樣,細部難免會有變化
下載、安裝與第一次執行 Hentai@Home 請參照
沒意外的話 Hentai@Home 已經開始順利執行了,接著就可以開始等待 GP 跟 Hath 入袋了
如果關閉終端機是會讓 Hentai@Home 停止運作的,建議在 Hentai@Home 順利開始運作後先使用 Ctrl+C 終止一次 Hentai@Home,安裝 screen 這個神奇的終端機分頁套件讓 Hentai@Home 在虛擬分頁裡運作
更多的資訊,可以參閱英文資料 Hentai@Home 與 Installing H@H on Ubuntu
2017-09-04
在 Raspberry Pi 樹莓派上實作 PiVPN 個人 OpenVPN 伺服器
在台灣被稱作樹莓派(官方名稱:Raspberry Pi )的開發用單板電腦其實有很多種用法,從低成本電腦到各類物聯網( IoT )裝置的基礎系統都可以,當然也有很多開發者把它當作小型伺服器來使用,運行 FTP/SFTP 伺服器做本地備份端,或是運行本地端的 Proxy Server、印表機伺服器等等,甚至也有人把它當作網頁伺服器來使用,安裝 Apache HTTP Server 跟其他必須軟體套件就好
之前是有買過一次樹莓派,不過是拿來當桌上的超小型迷你電腦,只要安裝小螢幕跟客製機殼,插上電源、連接鍵盤滑鼠就是一台小型桌上電腦,缺點就是那螢幕的解析度實在是慘不忍睹(HiRES+, 480 x 320 ),但看在 Waveshare 的螢幕這麼便宜,還有電阻式觸控的功能,就別計較了吧,之後大概會把它改裝成天氣顯示器
這次則是再額外買了一片樹莓派,不過這次打算讓他運行 OpenVPN 伺服器,讓使用公共無線熱點的裝置可以使用加密連線,強化安全性,當然這也是私人 OpenVPN 伺服器的優點之一,另一個優點是在學術網路或企業對外網路那種網路連線會被管制的地方可以方便做一些操作
Raspberry Pi 3 Model B,內建 10/100Mbps 乙太網介面,而非前代是用內建 USB 通道轉接
在主要晶片上都黏貼散熱片,要讓樹莓派長時間運作還是安裝散熱片比較妥當
這款自行採購的黑色散熱片面積比晶片大,所以使用官方的塑膠機殼時要稍微切一下
蓋上蓋子,蓋子跟機殼間是有設計通風孔的
在俗稱小烏龜的中華電信 vDSL 數據機旁邊用 PP 瓦楞板做了一個支架給樹莓派,注意有留燈號跟電源的開口
在這邊來額外分享一下自製的數據機散熱方案
雖然說自從升級到光世代 100M/40M 而換成 vDSL 數據機( 使用光纖到交換機的 FTTE 模式,所以不是光纖數據機)之後,數據機熱到當機這個情況沒遇過,但有鑑於以前 ADSL 時代真的遇過熱到當機,所以一直有注意數據機散熱的問題,在之前整理線材而把數據機移動到家具櫃裡面時就做了主動式散熱
而這次則是趁著把樹莓派安裝到數據機旁邊時做了一些小改裝,並重新整理一下網路線與電源線
使用工具是繞線管、束帶、黏貼式固定座,而整線邏輯不外乎注意立體交錯順序、線材角度、綑綁鬆緊度
剛安裝好樹莓派時,數據機散熱方案還是用一次性束帶固定風扇
把之前使用一次性束帶的風扇改用螺絲、螺母與墊片固定
風扇架後方有強化用的、不同走向的加強條
將冷空氣從上方吹入數據機上方的開口,達成強制冷卻的效果
故意選用較長的螺絲是方便固定風扇護網、之後也可以換成金屬材質的護罩
風扇架一側使用魔鬼氈膠條,方便打開風扇架清理積塵或調整網路線
電源線與數據線隔離,後面走樹莓派與風扇的電源線,網路線走前面,vDSL 的銅纜與接線盒在頂部
紅色是中華電信 MOD 專線,灰色連接 AirPort Extreme 的 WAN,藍色是樹莓派,白色是 Apple TV,綠色是分享器橋接
硬體部分差不多就是這樣,再來是軟體的部分,AirPort Extreme 上要作傳輸埠指定,樹莓派則要安裝必須的軟體才能上線服務
DHCP/NAT 的傳輸埠指定可以將特定的傳輸埠開放到網路( WAN )上、並轉發給內部網路( LAN )的指定裝置,藉由傳輸埠指定可以讓使用者從外部連線回到內部網路,在這裡就是讓樹莓派可以從遠端操作,並讓 OpenVPN 服務可以運作
而 AirPort Extreme 的傳輸埠指定需要與設定 DHCP 保留,這樣樹莓派的內部網路位址才不會亂跳而讓傳輸埠指定失效
在這邊要強調的是,管理者密碼一定要設定為強密碼,因為一開啟 SSH 連線功能後,幾乎是立刻會被網路上的惡意程式試探登入,在安裝好系統之後一定要設定好強密碼再開啟 SSH 連線功能,否則在設定傳輸埠指定後你的樹莓派幾乎是在網路上裸奔
首先是環境準備
安裝 fail2ban
接著是網路設定的部分

首先設定 DHCP 保留,通常用 MAC 位址去綁定,DHCP 保留設定依照各家廠商而不同

接著設定給 SSH 加密傳輸的傳輸埠指定,埠號 22,指定到你剛剛保留給樹莓派的內部網路位址去
接著安裝 PiVPN
記得把在安裝過程中設定給 OpenVPN 的傳輸埠指定到你剛剛保留給樹莓派的內部網路位址去

如果剛剛用預設的 UDP 1194,就這樣設定

沒意外的話在 Windows/Mac 上都可以正常使用
再來是如何增加新使用者
基本上到這裡應該就沒問題了,但人生總是會有一堆意外,跟一堆狗屎相容性問題
我自己在 Windows / macOS 上是使用付費的第三方 VPN 管理軟體 Viscosity,而 iOS 上則是使用 OpenVPN 官方的應用程式
而官方的應用程式件在匯入 PiVPN 的設定檔後會在連線時提示異常而無法使用
PolarSSL: error parsing config private key : PKCS5 - Requested encryption or digest alg not available
這是不同廠商或是開源社群在實作 OpenVPN 時在加密演算法的相容性問題,在使用行動裝置上 OpenVPN 官方提供的管理套件時可能會有點問題,主要是行動裝置支援的加密演算法有限
接著開始找解法,有的解法是說是說直接改金鑰字串的檔頭跟檔尾,但實作去嘗試是失敗的,會跑另外一個 PEM 的錯誤訊息
看了一堆外國社群的解法後,發現最佳解法是在 Reddit 論壇上的樹莓派開發社群,只能說想出這個解法的真的是個天才

在 OpenVPN 官方發行的行動裝置客戶端上請用上面的解法
之前是有買過一次樹莓派,不過是拿來當桌上的超小型迷你電腦,只要安裝小螢幕跟客製機殼,插上電源、連接鍵盤滑鼠就是一台小型桌上電腦,缺點就是那螢幕的解析度實在是慘不忍睹(HiRES+, 480 x 320 ),但看在 Waveshare 的螢幕這麼便宜,還有電阻式觸控的功能,就別計較了吧,之後大概會把它改裝成天氣顯示器
這次則是再額外買了一片樹莓派,不過這次打算讓他運行 OpenVPN 伺服器,讓使用公共無線熱點的裝置可以使用加密連線,強化安全性,當然這也是私人 OpenVPN 伺服器的優點之一,另一個優點是在學術網路或企業對外網路那種網路連線會被管制的地方可以方便做一些操作
Raspberry Pi 3 Model B,內建 10/100Mbps 乙太網介面,而非前代是用內建 USB 通道轉接
在主要晶片上都黏貼散熱片,要讓樹莓派長時間運作還是安裝散熱片比較妥當
這款自行採購的黑色散熱片面積比晶片大,所以使用官方的塑膠機殼時要稍微切一下
蓋上蓋子,蓋子跟機殼間是有設計通風孔的
在俗稱小烏龜的中華電信 vDSL 數據機旁邊用 PP 瓦楞板做了一個支架給樹莓派,注意有留燈號跟電源的開口
在這邊來額外分享一下自製的數據機散熱方案
雖然說自從升級到光世代 100M/40M 而換成 vDSL 數據機( 使用光纖到交換機的 FTTE 模式,所以不是光纖數據機)之後,數據機熱到當機這個情況沒遇過,但有鑑於以前 ADSL 時代真的遇過熱到當機,所以一直有注意數據機散熱的問題,在之前整理線材而把數據機移動到家具櫃裡面時就做了主動式散熱
而這次則是趁著把樹莓派安裝到數據機旁邊時做了一些小改裝,並重新整理一下網路線與電源線
使用工具是繞線管、束帶、黏貼式固定座,而整線邏輯不外乎注意立體交錯順序、線材角度、綑綁鬆緊度
剛安裝好樹莓派時,數據機散熱方案還是用一次性束帶固定風扇
把之前使用一次性束帶的風扇改用螺絲、螺母與墊片固定
風扇架後方有強化用的、不同走向的加強條
將冷空氣從上方吹入數據機上方的開口,達成強制冷卻的效果
故意選用較長的螺絲是方便固定風扇護網、之後也可以換成金屬材質的護罩
風扇架一側使用魔鬼氈膠條,方便打開風扇架清理積塵或調整網路線
電源線與數據線隔離,後面走樹莓派與風扇的電源線,網路線走前面,vDSL 的銅纜與接線盒在頂部
紅色是中華電信 MOD 專線,灰色連接 AirPort Extreme 的 WAN,藍色是樹莓派,白色是 Apple TV,綠色是分享器橋接
硬體部分差不多就是這樣,再來是軟體的部分,AirPort Extreme 上要作傳輸埠指定,樹莓派則要安裝必須的軟體才能上線服務
DHCP/NAT 的傳輸埠指定可以將特定的傳輸埠開放到網路( WAN )上、並轉發給內部網路( LAN )的指定裝置,藉由傳輸埠指定可以讓使用者從外部連線回到內部網路,在這裡就是讓樹莓派可以從遠端操作,並讓 OpenVPN 服務可以運作
而 AirPort Extreme 的傳輸埠指定需要與設定 DHCP 保留,這樣樹莓派的內部網路位址才不會亂跳而讓傳輸埠指定失效
在這邊要強調的是,管理者密碼一定要設定為強密碼,因為一開啟 SSH 連線功能後,幾乎是立刻會被網路上的惡意程式試探登入,在安裝好系統之後一定要設定好強密碼再開啟 SSH 連線功能,否則在設定傳輸埠指定後你的樹莓派幾乎是在網路上裸奔
首先是環境準備
安裝 fail2ban
接著是網路設定的部分

首先設定 DHCP 保留,通常用 MAC 位址去綁定,DHCP 保留設定依照各家廠商而不同

接著設定給 SSH 加密傳輸的傳輸埠指定,埠號 22,指定到你剛剛保留給樹莓派的內部網路位址去
接著安裝 PiVPN
記得把在安裝過程中設定給 OpenVPN 的傳輸埠指定到你剛剛保留給樹莓派的內部網路位址去

如果剛剛用預設的 UDP 1194,就這樣設定

沒意外的話在 Windows/Mac 上都可以正常使用
再來是如何增加新使用者
基本上到這裡應該就沒問題了,但人生總是會有一堆意外,跟一堆狗屎相容性問題
我自己在 Windows / macOS 上是使用付費的第三方 VPN 管理軟體 Viscosity,而 iOS 上則是使用 OpenVPN 官方的應用程式
而官方的應用程式件在匯入 PiVPN 的設定檔後會在連線時提示異常而無法使用
PolarSSL: error parsing config private key : PKCS5 - Requested encryption or digest alg not available
這是不同廠商或是開源社群在實作 OpenVPN 時在加密演算法的相容性問題,在使用行動裝置上 OpenVPN 官方提供的管理套件時可能會有點問題,主要是行動裝置支援的加密演算法有限
接著開始找解法,有的解法是說是說直接改金鑰字串的檔頭跟檔尾,但實作去嘗試是失敗的,會跑另外一個 PEM 的錯誤訊息
看了一堆外國社群的解法後,發現最佳解法是在 Reddit 論壇上的樹莓派開發社群,只能說想出這個解法的真的是個天才

在 OpenVPN 官方發行的行動裝置客戶端上請用上面的解法
標籤:
Raspberry Pi
訂閱:
文章 (Atom)



