初心易得,始終難守
C'est la vie.© 2002 - 2025
  • 我是誰-Who Am I
  • 我在哪-Where Am I
  • 我是什麼-What Am I
  • 年鑑-YearBook
    • 二零零六年终总结
    • 一吻定情—二零零八年年终总结
    • 突如其来的明天—二零零九年年终总结
    • 人生大起大落得太快——二零一零年年终总结
    • 贰零①①年年终总结-女朋友已经成家了
    • 贰零壹贰年年终总结-奔波的肿瘤
    • 贰零壹叁年年终总结
    • 雪字怎么写-贰零壹肆年年终总结
    • 每个不曾表白的今天,都是对青春的亏欠-贰零壹伍年年终总结
    • 按部就班的IT 人生-貳零貳肆年年終總結
  • 連結
RSS
7 月 5 日, 2024 年

Install pfSense on AWS

Ken Tech 0 Comments

眾所周知Netgate 在去年的時候取消了CE版本使用家庭版許可證升級到Plus 版本的選項。所有的CE版本選擇升級到Plus版本都會需要付出129美金的年費,但是對於已經升級為Plus版本的個體,Netgate官方含糊其辭,只是建議重灌為CE版本,對於是否會取消許可並沒有說得很清楚,取消免費升級的時候,網路上一陣哀號,也有人破口大罵。

當然,大量中國製造的廉價noname box 在美國傾銷並濫用家庭許可Plus 版本是原因之一,Netgate 自有設備銷售價格非常不合理也是原因之一。

根據多方不明確的信源,pfSensePlus的許可證是綁定在網卡的mac地址上,我簡單的測試了一下,激活過許可證的實體確實可以從安裝好的CE版在升級菜單中選擇升級到Plus版本而無需再次激活,通過已經激活的實體dd clone過去的Plus版鏡像在另外一個已經激活的實體上也可以正常啟動和升級,但問題是我沒有測試更換硬碟,不能明確硬碟的serial number是否會對許可證產生影響。

Netgate的早期設備使用的是PC Engines的APU,這是由台灣生產,瑞士賣家在全球銷售的一款熱門主機板,他使用了AMD的低功耗APU,和Intel的內置顯卡多合一是一個概念,當然主要是低功耗。

後來Netgate開始在台灣尋找其他的貼牌代工,也就是現在的產品線,不得不說,這家公司的設計師審美真的很差,做出來的產品外型,果粉不想買,Geek也沒有要想買。

今天要說的是如何在AWS上安裝pfSense,在AWS的Marketplace裡面有pfSensePlus版本,是需要付費的,一年799美金,還只是授權費用,沒算上instance和traffic fees。

我原本想要安裝CE版本上去,因為在2017年Netgate曾經有一篇Blog,說明從pfSense 2.4.1版本開始,Netgate發布的版本會支持AWS的ena network driver。

https://www.netgate.com/blog/aws-elastic-network-adapter-ena-now-supported

Amazon Drivers:https://github.com/amzn/amzn-drivers

但是,經過我的測試,他們已經悄悄的把這個driver拿掉並且用某種方式限制自行編譯的driver 從kldload加載,為什麼會這麼說呢?

因為每一個版本的pfSense 他們都使用了FreeBSD的current版本,目前CE2.7.2是FreeBSD 14.0-current,我使用從12.0-release,13.0-release,14.0-release,14.1-release,15.0-current 編譯出來的ena driver 都不能在CE2.7.2中正確加載,當然,也可能是因為必須要使用14.0-current,但是我找不到這個版本的source code。

在2017年的這篇Blog最後,有寫到

Complete instructions for enabling AWS ENA features are available in the Netgate AWS documentation.

但是,這篇Netgate AWS documentation 連結已經404 找不到了,我想,如果不是我的方法有問題,那就是這篇文件中有一些特別的設置。

https://docs.netgate.com/pfsense/en/latest/solutions/aws-vpn-appliance/enabling-elastic-network-adapter-ena.html

Netgate 這家公司小動作很多,當然我是希望他們能賺錢$$$,不然不知道又要搞出什麼花兒來,然而,他們在許可證這件事情上做的並不嚴謹。

我想他們是出於簡化安裝過程或是多年來客人要求可以直接安裝Plus版本的目的(在此之前你不能直接安裝Plus版本,只能先安裝CE版本後從CE版本註冊升級為Plus版本),推出了一個新的installer,這個installer iso是二合一,他的模式是啟用一個具備網路環境的txt interface,然後根據選擇從網路下載相應的CE版本或Plus版本來安裝,在安裝的時候就會連線Netgate 的server 進行驗證當前實體是否具備安裝Plus的許可。

如果你在一台沒有激活過許可的物理機上使用這個installer,那麼你將無法安裝Plus版本,但是,你可以在AWS上,直接安裝Plus版本。

這有兩種可能,

第一,這個installer把AWS的mac地址範圍加入了白名單,但我觀察AWS的mac地址並沒有明顯特徵(AWS的mac地址不能修改,這是我懷疑的原因之一,因為mac地址在很多軟體中都會被設置為許可證相關的元素)。

第二,這個installer把來自於AWS source ip的安裝請求加入了白名單。

安裝的必要條件:

第一,AWS VPC中至少有兩個subnet,一個public subnet,一個private subnet,在兩個subnet中創建兩個eni,public subnet那張eni需要分配public IP。

第二:去pfSense官方網站下載iso。

第三:錢。

安裝的步驟如下:

使用本地的虛擬化平台,esxi或者proxmox 啟動一台linux,啟動後,加載pfSense官方的install iso,再添加一塊8GB 硬碟。

然後從linux 中,將iso 直接 dd 到8GB硬碟上。

dd if=/dev/sr0 of=/dev/sdb bs=1M status=progress

接下來,將8GB硬碟導出為vmdk,將這個vmdk上傳到S3,使用AWS的vmimport,將這個vmdk導入為snapshot。

aws ec2 import-snapshot –disk-container file://containers.json

—containers.json—
{
“Description”: “pfSense-installer”,
“Format”: “VMDK”,
“UserBucket”: {
“S3Bucket”: “s3-bucket”,
“S3Key”: “pfSense-installer.vmdk”
}
}
—containers.json—

aws ec2 describe-import-snapshot-tasks –import-task-id import-snap-0000000000631379

這中間你可能首先需要創建vmimport的IAM role,然後需要為vmimport的role 添加各種policy ,跟著錯誤提示走就可以,當snapshot 導入完成後,從這個snapshot創建一個ami,使用這個ami,啟動一台有serial console 的instance,例如t3.small,此時只需要有root volume和public subnet的那張eni。

啟動後,為這個instance 再添加一塊8GB的硬碟,從serial console來進行安裝,需要注意的是,你必須在剛開始的高級選項中開啟pfSense的 serial,否則安裝完成後,他不會輸出到ec2的serial console,你將會變成無頭蒼蠅,同時,在選擇硬碟的時候,請選擇第二塊。

Netgate的官方文件說明AWS Marketplace中的pfSensePlus初始化,是需要在user-data中設置password,這讓我懷疑,官方版本的ami沒有開啟serial,使得他沒有輸出到ec2的serial console,才需要從user-data去設置password,當然,這也可能是一種簡化用戶動作的辦法。

整個安裝過程很簡單,這個installer 檢測到是AWS之後,他就會自行安裝Plus版本,甚至你需要手動更改,才能變更安裝CE版本,當然,CE版本安裝上去會因為缺少ena network driver 而無法使用。

在AWS上運行的第三方防火牆軟體,需要遵循三個基本的原則,

第一,具備public IP的WAN口eni在public subnet,而LAN口eni在private subnet。

第二,關閉eni 的source/destination check。

第三,WAN和LAN均開啟為DHCP獲取IP地址。

安裝完成後,首先從serial console進行WAN口初始化,此時,只設置WAN口,不要設置LAN口,同時重置管理密碼。

當WAN口設置完成,再從AWS webconsole為ec2添加位於private subnet的那張eni,

此時我們應該可以從public IP進行連結,使用上一步重置的管理密碼登入,首先進入NAT設置,修改Outbound NAT方式為manual Outbound NAT rule generation,然後,從Interface Assignments 添加LAN口interface並設置為dhcp獲取IP地址,LAN口interface 添加完成後,再進入Outbound NAT,為需要進行nat 轉換的地址範圍手動添加nat rule。

不可以使用自動喔,否則你會連不上去。

最後,為我們的private subnet添加一條默認路由,指向LAN口的那張eni。

這樣所有在private subnet 裡面的instances 都可以把pfSense 作為nat gateway 來上網了。

安裝完成的pfSensePlus在註冊頁面並不能顯示為已註冊版本,和有正常許可證的顯示不太一樣,但這並不影響他升級,升級到新版本完全沒有任何問題。

而在物理機上通過dd clone的pfSensePlus 版本安裝在未激活許可證的實體上,不但顯示為未註冊,而且是不能升級的。

所以,我相信Netgate對於運行在AWS上的pfSensePlus 升級應該是採用了針對AWS source IP的白名單。

這也許是Netgate 故意要讓CE版本無法運行在AWS上的原因,因為,如果許可證檢測方式簡化為針對AWS source IP的白名單,在AWS上成功安裝的CE版本將會可以直接升級到Plus版本,這可不妙。

參考文件:https://yhf8377.medium.com/replace-aws-nat-gateway-with-pfsense-vm-5454066585c2

6 月 22 日, 2024 年

迷惑的台北路牌拼音

Ken 随笔

當我在台北捷運的指示牌上同時看到英語,威妥瑪拼音和漢語拼音的時候,我才真正意識到台北確實很藍,國民黨下一步是不是想要廢除正體字改成殘體?

我第一次看到漢語拼音是在西門町的路牌上,那是很早以前了,當時不以為意,覺得可能威妥瑪也是那麼拼。

台北市路牌改漢語拼音是馬英九當市長的時候改的,而中華民國的漢語拼音路牌方案是馬英九當總統的時候訂立的,馬英九為了統一真是殫精竭慮。

馬英九所謂國際化的理由只是一個藉口,在我看來要國際化應該全部改成英語,畢竟本土台灣人也不看下面那行字母,改成漢語拼音,馬英九就是赤裸裸的要追求和中國統一的國際化。

北京已經把Peking改成了Beijing,馬英九怎麼不把Taipei改成Taibei?

不就是想從沒人注意的地方先動手嗎,你改個Taibei試試看,看有沒有人罵你。

在我看來拼音遠遠不如注音設計優秀,只不過注音基於漢字的偏旁部首,對於洋人而言難度著實有一些,對於從小學習漢語拼音的人而言,也是有難度的。

上個月用力過猛,卷到了全站第一,發了3000塊台幣的代金券,似乎還好,學習到很多東西,也發現很多的東西都不會。

當我得知這個消息,第一時間浮現出來的念頭大概是下面這個意思。

最近台北總是下午下雨,所以只有很少的晚上出去騎車,即使已經是在這個城市的最中心,很多的道路都相當平靜,看起來並不像一個繁華的都市,當然,即使如此,也不能和花蓮和墾丁的那種寧靜相比。

6 月 4 日, 2024 年

聊齋

Ken 随笔

多年前我在微博上發了一張坦克人的照片,然後就被封號了,那時候計算機算力還不太強,過了好久才被封,但是那個時候管理員還算有人性,封禁理由是:侮辱管理員。

我想要講的不是35年前,而是那張A4白紙,我不願意稱之為運動,因為我認為不足以稱之為一場運動。

很多人並不了解為什麼是白紙,當然這並不妨礙他們知道舉著白紙的意思是你們覺得我說了什麼那就是什麼。

紅場上發白紙是一個很典型的蘇聯笑話,那位第一個舉起白紙的大學女生不知道命運會如何,想來升學,考研,工作,必定會被處處刁難。

搬著腳踏車下樓,剛要準備出門,一陣雷雨劈裡啪啦的下來,出門前我仔細的看了一下天氣預報,Next-hour forecast是沒雨,12-hour forecast是有雨,一般正常人都應該認為Next-hour的更準確吧?難不成是我的誤解?

這個腳踏車還是要裝個腳架,不然出門確實是不太方便,原本以為胡亂丟一丟應該就可以,本來想著下午去車行裝一個的。

6 月 1 日, 2024 年

第三台腳踏車

Ken 随笔 0 Comments

因為我買了一台Gogoro給Miley,所以她買了一輛腳踏車給我,不過,我的腳踏車比她的Gogoro更貴一些。

Birdy已經不是當年第一次見到的樣子了,雖然對於我來說Dahon似乎騎起來也沒有太大的差別。

找出以前的Garmin GPS支架,婷妹前夫買的Btwin count 4碼表,再去迪卡儂買了前後燈,安全帽,差不多可以完整上路。

我想劣幣逐良應該是這個世界運行的規律才對,Youtube上假裝在露營的無論哪國比基尼妹紙,都開始有了Made in China的裝備,就連日本人也不例外,就像我常說的,人類世界終將走向毀滅,人類之於地球,就是病毒之於人類一樣的存在。

不過我在想是不是中國的那些商家給了業配費用。

當然,也是有真的在露營的妹紙,不過他們都在賣自己品牌的裝備。

台灣的Garmin圖資很好尋覓,因為沒有中國國測局那幫低能兒開發的火星座標,OpenstreetMap的資源非常豐富,隨手可得,以至於根本沒有人要買Garmin台灣的地圖,除了那些使用手錶來導航的人,如果未來台灣警察單位增加測速科技執法,Garmin能拿到官方測速點數據的話,也許官方圖資還有那麼一點點價值。

今天的雨要下不下的,騎出門的時候還好,回來的時候雨就有一點點大,不過還好,上樓了才開始變得更大一些。

5 月 26 日, 2024 年

Running Plex in Docker

Ken 随笔 0 Comments

容器是很流行,以至於我現在的工作十個case裡面會有一個是容器相關的。

所以我嘗試將Homelab的部分環境遷移到Docker,目前為止得到以下的好處:

1)n8n獲得較多好處,可以相對穩定的運行,之前在FreeBSD的jail中總會有升級後白屏的問題。

2)zabbix遷移到docker後的升級維護也變得更為容易,特別是zabbix-web,在每個發行版的OS中他的版本都不太一致。

3)grafana的遷移獲得好處與zabbix類似。

4)redis-server有沒有獲得好處我不是很確定,因為他運行在bare-metal或是vm中,和容器化似乎區別不太大,他配置很少,最重要的原因是我的使用場景並沒有太大的數據量。

5)cloudflared獲得的好處相對較多,因為他在不同發行版的OS中,不,他只支持很少的OS,單獨用一個vm來運行他似乎很浪費。

但Plex並未獲得好處,

我有一個單獨的vm在運行plex,速度很快,穩定,debian的OS升級Plex並沒有任何的痛點,我並不偏好Linux,實際上Linux在跨版本升級的問題上有非常糟糕的歷史,我更偏好FreeBSD,他可以從十年前的OS一路升級上來而不會有太多問題。

但debian解決了跨版本升級的問題,不像redhat一如既往的糟糕,即使是從7升級到8。

實際上我從未遇到過plex本身的任何問題,只不過之前因為開啟了video preview thumbnails,導致Library文件夾急遽增加,一度到達200G,清理log關閉各種設置均不見好轉,直到關閉video preview thumbnails並刪除cache才使得Library文件夾變為20G左右。

OK,這個問題並不會因為容器化消失,如果這個問題復現,docker中的plex也會遇到。

因為我的videos全都放在一個raid1的NAS上,透過NFS的方式export給plex所在的debian OS來使用。而dockerd所在的vm磁盤空間並不足以存放20G的plex資料庫。

所以我想當然的將官方指引中的config目錄也丟到了NFS上。

-v <path/to/plex/database>:/config

https://hub.docker.com/r/plexinc/pms-docker/

結果就是,每個影片的頁面點開大約需要20秒,播放倒是很快,只有影片介紹的頁面感覺卡卡的。

reddit上已經早就有人實踐過了這一模式,而且得出了結論。

所以呢,要在docker中運行plex,只有videos可以放在NFS上,database是不可以的,必須放在本地磁盤,否則就會,卡。

——

docker stop plex

docker rm plex

docker run \

-d \

–name plex \

-p 32400:32400/tcp \

-p 3005:3005/tcp \

-p 8324:8324/tcp \

-p 32469:32469/tcp \

-p 1900:1900/udp \

-p 32410:32410/udp \

-p 32412:32412/udp \

-p 32413:32413/udp \

-p 32414:32414/udp \

-e TZ=”Asia/Taipei” \

-e PLEX_CLAIM=”claim-UG1NH2ZPhSrL7m879f2s” \

-e ADVERTISE_IP=”http://10.2.2.7:32400/” \

-h docker.plex.bbken.org \

-v /home/plex/database:/config \

-v /home/plex/transcode/temp:/transcode \

-v /videos:/videos \

plexinc/pms-docker

——

但是plex 在docker中的啟動似乎很慢,docker命令啟動後大約需要30秒,32400 port才會有反應,其他的運行起來和vm上的plex並無任何區別,至於hardware decode我並沒有用到,因為我不常在手機上看電影。

除了docker本身帶來的管理統一性,plex並未獲得明顯的好處,所以我將他切換回vm中去運行。

當然,最重要的原因還是因為debian 中的plex版本完全可以跟隨官方的升級進度。

«‹ 9 10 11 12›»

過 客

  1. R2 on 卷進了美商5 月 15 日, 2024 年

    终于回来了,好。

  2. Ken on Mommy最後的樣子11 月 6 日, 2023 年

    也沒有很久吧,最近終於閒下來

  3. R2 on Mommy最後的樣子10 月 26 日, 2023 年

    好久不见

  4. Ken on 天朝Loli控组曲(带歌词,修正版)10 月 12 日, 2023 年

    哈哈哈,祝福你,好人一生平安

  5. liu on 天朝Loli控组曲(带歌词,修正版)10 月 12 日, 2023 年

    hello,我在找天朝lolicon组曲时发现了你的博客,感谢你十四年前做出的贡献,祝一切安好

December 2025
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031  
« Nov    

Spam Blocked

101,924 spam blocked by Akismet

↑

© 初心易得,始終難守 2025
Powered by WordPress • Themify WordPress Themes