S4 NAT vs fck-nat:替換 NAT Gateway 的坦誠比較
如果你找到了這個頁面,你已經知道問題所在:託管 NAT Gateway 每個 AZ 大約收取 $32/月,並對處理的每 GB 資料收取 $0.045;對 egress-heavy workload 來說,資料處理這一項很快就會超過其他所有費用。NAT instance 可以解決這個問題,而 fck-nat 是讓 NAT instance 重新變得可靠體面的開源專案。
先從 vendor 頁面很少明說的部分開始。
什麼時候你應該直接使用 fck-nat
fck-nat 免費、積極維護(2.2k+ GitHub stars)、在 Amazon Linux 2023 上提供現成的 arm64/x86 AMI,並且有可靠的 CDK 和 Terraform module。它執行在 t4g.nano 上大約 $3/月,並能推動多個 Gbit/s 的 burst NAT traffic。
在這些情況下使用 fck-nat:
- 環境是 dev、staging 或個人專案。 如果幾分鐘的 egress downtime 只是麻煩而不是事故,免費選項就勝出。
- 成本是唯一標準。 S4 NAT 會在 instance 費用之上收取按小時的軟體費用。它在價格上永遠不會打敗免費,我們也不會假裝不是這樣。
- 你能接受 community support。 fck-nat 的 maintainer 和社群回應積極,對標準部署來說這通常已經足夠。
S4 NAT 憑什麼收取費用
S4 NAT 是透過 AWS Marketplace 銷售的商業 NAT instance——理念與 fck-nat 相同(標準 EC2、kernel nftables、無 per-GB fee),但執行方式和保證不同。真正重要的差異是:
可以量化的 failover。 fck-nat 的 high-availability 方案是由 Auto Scaling Group 替換故障 instance——恢復時間通常以分鐘計。S4 NAT 執行 active/standby pair 並帶有 heartbeat;standby 會透過 ec2:ReplaceRoute 重寫你的 route table,通常在 under 10 seconds 內完成——這一點已在跨版本 170+ 次連續真實 EC2 failover drill 中驗證,方法和數字發布在 repo 的 validation report 中。
failover 期間穩定的 egress IP。 使用 per-instance addressing(fck-nat 的模型,也是 S4 NAT 的預設模式)時,NAT failover 後你的 egress public IP 會變化——如果合作夥伴將其加入 allowlist,這就是問題。S4 NAT 的可選 StableEgressIp 模式會把一個 shared Elastic IP 保持在目前擁有 route 的節點上。在我們發布的 drill run 中,一個每秒取樣 egress IP 的 client 始終看到 shared IP,最差觀測到的 fallback window 為 2 seconds——而且 fallback 會落到 instance 自己的 EIP,而不是丟棄 traffic。
內建 NAT64。 IPv6-only subnet 可以存取 IPv4 internet(RFC 6146,整合 translator)。fck-nat 不提供 NAT64。
當 pps 重要時的 XDP fast path。 隨 AMI 提供,預設關閉,透過一行 config 啟用。在 network-optimized instance 上測得約為標準 kernel path 的 2× the packets-per-second per CPU core。
採購與責任歸屬。 Marketplace billing 會進入你現有的 AWS invoice(不需要新的 vendor onboarding),另一端有公司、support contact 和已發布的 validation report。相關、略微尷尬但真實的一點是:幾個團隊告訴我們,他們無法讓名稱裡帶有 “fck” 的工具通過 security review 或 procurement document。如果你的組織是這種情況,功能列表就不重要了。
並排比較
| fck-nat | S4 NAT | |
|---|---|---|
| 價格 | 免費(僅 instance cost) | 按小時軟體費用 + instance |
| 資料處理費 | 無 | 無 |
| Failover | ASG replacement(分鐘) | Active/standby,<10s(170+ drills) |
| failover 期間穩定 egress IP | 無 | 可選 StableEgressIp 模式 |
| NAT64 | 無 | 有(RFC 6146) |
| XDP fast path | 無 | 可選,實測 ~2x pps/core |
| Support | Community | Commercial([email protected]) |
| Procurement | Self-managed OSS | AWS Marketplace,AWS invoice |
五分鐘決策
- Dev/staging,或 downtime tolerance 以分鐘計 → fck-nat。它很好。用它。
- 生產 egress,合作夥伴會 allowlist 你的 IP,failover 必須是秒級而不是分鐘級,或者你需要服務 IPv6-only subnet → S4 NAT。
- 不確定 → 從 fck-nat 開始,等第一次出現 “the NAT was down for four minutes” 事後檢討,或 allowlist rotation ticket 落地時再重新評估。
兩者都能讓 egress-heavy workload 的成本比託管 NAT Gateway 低一個數量級。坦誠的區別在於你在 packet path 之外購買了什麼:可測量的 failover 行為、恆定的 egress IP,以及凌晨 3 點出問題時有人負責。
S4 NAT 已在 AWS Marketplace 上架。Validation methodology、drill harness 和完整 report 隨 product repository 提供。