Ubuntu
設置具有多個 VLAN 的 KVM 主機,每個 VLAN 都連接到“自己的”外部 IP 地址
我正在嘗試(並且很難)設置一個乾淨的 KVM 環境:一個 Ubuntu (20.04) 主機(帶有一個 NIC)、多個 ubuntu KVM 來賓、2 個公共 IP 和每個 IP 一個 Vlan。基本上看起來像:
我的需求是:
- 我有 2 個公共 IP 地址連接到我的主機 NIC
- 我想為我的客人使用 2 個 VLAN,並且不同 VLAN 上的機器之間沒有通信
- 每個 VLAN 連接到一個公共 IP
- 所有客人至少可以訪問網際網路,但不一定可以從外部訪問(“單向”,經典 NAT?)
- 一些客人充當守護程序/伺服器,可從網際網路訪問(“雙向”,埠重定向?)
- 主機應該仍然可以訪問網際網路
- 曾經只有 2 個(每個 IP 一個)mac 地址在我的主機外部(到我的提供商的路由器)廣告
我沒有找到任何關於如何實現這種架構的線上資源,也沒有我的嘗試
還沒有成功。我認為我可以通過正確組合網橋和(NAT)VLAN 來實現它,但我的一些研究表明我可能需要使用 Iptables 進行路由。
是否有可能實現這種結構,如果可以,如何實現?
- 用於主機網路配置(neptlan、ifup、iptable 等)
- 和 libvirt 配置(virsh xml)
編輯:
為了讓我的需求更清楚:
Traffic from 0.0.0.0/0 destined to X.X.X.X on port 443 must be forwarded to VM1 in VLAN-1 Traffic from 0.0.0.0/0 destined to X.X.X.X on port 5432 must be forwarded to VM2 in VLAN-1 Traffic from 0.0.0.0/0 destined to Y.Y.Y.Y on port 443 must be forwarded to VM3 in VLAN-2 Traffic from VM1 in VLAN2 destined to 0.0.0.0/0 on any port must be routed through Y.Y.Y.Y ?
看看你的場景,我假設如下:
Traffic from 0.0.0.0/0 destined to X.X.X.X on port 443 must be forwarded to VM1 in VLAN-1 Traffic from 0.0.0.0/0 destined to X.X.X.X on port 5432 must be forwarded to VM2 in VLAN-1 Traffic from 0.0.0./0 destined to Y.Y.Y.Y on port 443 must be forwarded to VM3 in VLAN-2
如果我的假設是正確的,我會建議使用 iptables。在這種情況下,您將執行埠轉發。在 KVM 主機上,執行以下操作:
$ sudo echo "1" > /proc/sys/net/ipv4/ip_forward $ sudo iptables -t nat -A PREROUTING -p tcp -m tcp -d X.X.X.X --dport 443 -j DNAT --to-destination 10.0.1.1:443 #(VM1 in VLAN1) $ sudo iptables -t nat -A PREROUTING -p tcp -m tcp -d X.X.X.X --dport 5432 -j DNAT --to-destination 10.0.1.2:5432 #(VM2 in VLAN1) $ sudo iptables -t nat -A PREROUTING -p tcp -m tcp -d Y.Y.Y.Y --dport 443 -j DNAT --to-destination 10.0.2.3:5432 #(VM3 in VLAN2) $ sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT #(Allow retrun traffic)