最近遇上有台2017年安裝好的pfsense, 其主要功能在做負載平衡,倒是先提一下, PFSENSE COMMUNITY版本,應該在2.5.2的版本後,就把這負載平衡功能給關了,所以如果有應用到此功能的,勢必是沒法升級到2.6.0 甚至最新的2.7.0的版本了.. (PS: 2.5.2版本的說法是CHATGPT告知的, 但我實際測試過,最後一版應是2.4.X, 2.5.X以上即不支援load balancer功能)

我遇上的情況便是, 調整了負載平衡設定後, 出現了不太順暢的情況,就先倒回舊備份的CONFIG檔案.倒回後, 登入WEB管理主頁就停留在package manager畫面, 而且呈現無法取得package列表,以及可用pacakge的列表,都出現錯誤, 如下面截圖,而且無論如何都無法秀出正常的首頁

其實這裡有一點我不解的是,明明系統是2.3.4倒回2.3.4,是同一版本的, 不知為何它總抱怨你OS版本不對,不知是否因更新列表出現有2.5.1,並曾預下載的關係?不過後來我試過確實倒回新版OS, 選擇ALL就會出現, 又或者單獨選擇了package manager的部份.如果你的pfsense沒有額外安裝任何套件, 那麼或許就不會遇上此問題.

正常的首頁如下截圖, 這個主頁在倒回後就出不出來了…千呼萬喚也屎不出來…這是個有六條腿的防火牆, 僅有一點小複雜

於是乎, CHATGPT 又該出場了..問了他老半天, 沒一個正解的…

一下叫我執行Pkg-static update & pkg-static upgrade, 然後pkg update -f , pkg upgrade -f 一輪操作下來, 系統成功的掛了, 開機後連CONSOLE主畫面也不見了,所有服務都起不來..

而且可能不断的重開機,或者卡在某個服務不断的死掉又重起的千萬個嘗試動作..

正常的CONSOLE主畫面如下:

為了解決此問題, 就得再提到使用虛擬主機的好處了..

我倒回了一台7月份的整機備份, 然後有趣的事情來了, 之前是倒設定回去, 主頁不行, package manager 頁面出現異常,無法列表, 倒回整機呢, 還特意找上個月, 原因是其實這台設定其實有三年沒動它了, 自從做好後,大概在2019年有做過一次VIP新增(virtual ip)的服務,沒再動過它, 倒回整機則是管理主頁有了, 但package manager仍然無法列表, 如截圖1,及2

有點納悶的事情是, 在你下pkg update -f 指令後, 它有主要兩錯誤出現, 一個是抱怨你has wrong pakcagesite, 就是你package url 錯誤, 另一則抱怨要re-create database.

一度我們英明的chatgpt 還讓我去改/usr/local/etc/pkg/repos/FreeBSD.conf, 叫我改成

FreeBSD: { url: “pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/latest”, enabled: yes }

好吧, 錯, 系統根本找不到..

然後重建DB呢,

叫我,rm /var/db/pkg/repo-*.sqlite
pkg update -f

結果/var/db/pkg 下有兩.sqlite的檔案, -core可以重建出來,但另一個則抱怨你OS版本不對, 就卡在那里

rm /var/db/pkg/repo-*.sqlite
pkg update -f

最後找到的解法是直接忽略OS版本, 設定一環境變數, 然後再執行pkg update -f 就OK了…

setenv IGNORE_OSVERSION yes
pkg update -f

後來就能看到列表了..

本來寫到這裡, 我以為真的解決了, 實際不然, 沒多久, 又故態復萌, 雖不知為何如此? 但很明顥的這和還原備份檔的方式有關

尤其當你還原的版本又不同時, 比如我將2.3.4的備份,倒回2.4.4或者2.4.5, 真正發生問題就在package的還原上, 當OS版本不同, 其衝突出錯的可能性就很高..

後來採取了一個一個選項倒回, 不要選擇ALL,問題也就沒再發生了..只是如果你的PFSENSE有安裝比如SQUID等PACKAGE, 就最好重裝該套件並重新設定,

只是我不解的是, 在ALL的選項的XML備份檔里有load balancer的選項, 但個別選項卻沒有顯示, 就變成LOAD BALANCER部份也要重新設定, 我曾試圖將LOAD BALANCER那一段截出, 然後另存一檔, 倒回ALL的選項(實際只有LOAD BALANCER),不過這個偷吃步沒有成功..

後記:後來成功了就把那備份出來的ALL裡的XML檔案,編輯其中將<installpackages></installpackages>中間的所有package都拿掉即可,那麼除了套件安裝部份未匯入, 包括load balancer等設定也就恢復了..

By Kevin

發佈留言