
我正在設計一個基於 Linux 的設備,並希望將 KVM 用於虛擬化層。該系統有 3 個虛擬機,它們以非常特定的方式互連。我得到的 fag 資料包圖看起來像這樣...
www
|
+------ | ------------+
| | |
| |A| |
| | |
| | |
| |B|-----|C| |
| | |
+------ | ------------+
|
dbs
這基本上反映了資料流 - 前端有一個 Web 伺服器,後面有一個後端伺服器,側面有一個輔助服務。由於互聯網鄰近等原因,A 和C 必須位於「獨立」網路上。系統日誌伺服器之類的。類似地,對於ssh 訪問,我們需要B 上的連接埠轉送之類的東西。時,意味著在 B 完成之前我們不能開始建造 A 或 C。
所以我正在考慮用這樣的東西讓一切變得更加混亂:
www
|
+---- | ----------------------+
| | |
| | +-----------+ |
| | | | |
| |A|-----|B|-----|C| | |
| | | | | |
| | b | | |
| +-----a x c-----+ | |
| d | |
| | | |
+------------ | --------- | --+
| |
mgt dbs
因此,應用程式的AB 和C 之間的資料流基本上是相同的(但此處繪製為平面),我們向連接到另一個橋的每個虛擬機器添加第二個管理網路卡,該橋在主機上也有一個介面(a、b 和c) 。然後在這些虛擬主機介面和外部世界之間使用 iptables 和轉發 (d),以確保雖然所有電腦都可以直接存取環境中較低的外部服務,但它們不能以意味著虛擬機器受損的方式相互訪問A 更大程度上不會降低安全性。我可能可以在新增中使用 ebtables 和單一網橋,但我認為 A 和 C 仍然位於同一子網中,這看起來太微妙了。
公平地說,管理圖上的事物看起來是什麼樣子以及事物的實際技術可信度(因此是「獨立」與獨立)之間存在著重要的角度!簡單性也是一個巨大的動力,但代價是透過第二個虛擬機器丟棄所有額外流量感覺非常不舒服,並且在時間敏感的環境中可能會增加 5 到 10 分鐘的建置時間
所以本質上,我瘋了嗎?
謝謝
克里斯
答案1
不,不是瘋子。但我確實認為你讓這聽起來比實際需要的更困難。你的問題我看了好幾遍了,還是有些地方不懂。機器C實際上做了什麼?為什麼你那裡需要它?機器A和B做什麼?
無論如何,如果我按照您的第一個圖表進行操作,那麼您所需要做的就是應用簡單的 IP 路由,就可以了。如果機器 C 與 B 形成一個單獨的子網路(以便與其他機器分開),那麼為了到達它,必須如下設定路由:
- on dbs:透過 B 路由所有流量(這是預設網關,它知道如何路由
- 流量到 C,因為它是直接連接的)。
- on www:透過 A 路由 C 的所有流量(只有當 A 不是預設閘道時才需要)
- 在 A 上:透過 B 路由 C 的所有流量(僅當 B 不是預設閘道時才需要)
- 在 C 上將 B 設定為預設閘道。
路由到位後,您可以添加防火牆以確保流量僅流向您希望流向的地方。除非您對此類事情有經驗,否則我建議先啟動路由,然後添加防火牆(一次一步,這樣您總是知道是什麼破壞了它。因為您會破壞它)。