Linux
可訪問 Internet 的 KVM VM 的橋接介面?
我為我的 KVM 虛擬機創建了一個橋接介面:
ip link add name br0 type bridge ip addr add 172.20.0.1/24 dev br0 ip link set dev br0 up
我創建 KVM 虛擬機:
virt-install --name $VM_NAME1 --network=bridge:br0,mac=$VM_MAC1 virt-install --name $VM_NAME2 --network=bridge:br0,mac=$VM_MAC2
現在,我想為虛擬機提供 Internet 訪問權限:
brctl addif enp3s0 br0
enp3s0 是我的主要界面。一旦我執行這個命令,我的主機就失去了它的 IP 和對 Internet 的訪問。即使我給它一個IP,問題仍然存在:
dhclient enp3s0
主機和虛擬機都無法訪問 Internet。
當您將主機乙太網控制器添加到網橋
br0
(連接到 VM)時,您實際上是在網路上創建了兩個新設備(兩個具有新 MAC 地址的設備)而不是舊設備。在這種情況下,您的網橋和您的虛擬機應該各自獲得一個新 IP。現在棘手的部分是您的 ISP/託管公司希望您的 MAC 與您的物理乙太網控制器的 MAC 保持相同。當您啟用網橋時,您的 ISP 無法辨識新設備,從而導致無法連接網際網路。您需要的是 NAT,因此您的虛擬機將使用主機的 IP 地址來訪問 Internet。您可以使用以下命令進行設置:
ip link add name br0 type bridge ip addr add 172.20.0.1/24 dev br0 ip link set dev br0 up sysctl -w net.ipv4.ip_forward=1 iptables --table nat --append POSTROUTING --out-interface enp3s0 -j MASQUERADE iptables --insert FORWARD --in-interface br0 -j ACCEPT
在此之後,您應該能夠從您的虛擬機訪問 Internet(您不需要執行
brctl
)