
我對 KVM 和虛擬化的整個概念完全陌生,但是我已經閱讀了幾天有關它的內容並在過去的幾個小時內使用了它。
創建、安裝、克隆等等......一切看起來都很棒。但是當我嘗試 ping 8.8.8.8 時,我建立的訪客最終會出現「網路無法存取」的情況
我為主機和來賓使用 CentOS 6.5。
來賓上的 ifconfig:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
我明白這可能就是問題所在 - 我認為應該有一個 eth0 設備?為什麼不存在?
安裝代碼:
virt-install \
--virt-type kvm \
--name sebweb2 \
--ram 16384 \
--cdrom /var/ISOs/CentOS-6.5-x86_64-minimal.iso \
--disk /var/lib/libvirt/images/sebweb2.img,format=qcow2 \
--network bridge=br0 \
--nographics \
--os-type linux \
--os-variant rhel6 \
--vcpus 12
主機的ifconfig:
br0 Link encap:Ethernet HWaddr 16:AC:2D:A6:98:40
inet addr:xxx.yyy.zzz.217 Bcast:xxx.yyy.zzz.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:92172 errors:0 dropped:0 overruns:0 frame:0
TX packets:58463 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5428257 (5.1 MiB) TX bytes:71953860 (68.6 MiB)
eth0 Link encap:Ethernet HWaddr 16:AC:2D:A6:98:40
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:117592 errors:0 dropped:0 overruns:0 frame:0
TX packets:79097 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8766798 (8.3 MiB) TX bytes:73073312 (69.6 MiB)
Memory:fbc00000-fbd00000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:92 errors:0 dropped:0 overruns:0 frame:0
TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8172 (7.9 KiB) TX bytes:8172 (7.9 KiB)
virbr0 Link encap:Ethernet HWaddr 51:54:00:39:CA:A7
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:128 (128.0 b) TX bytes:0 (0.0 b)
vnet0 Link encap:Ethernet HWaddr 54:FE:00:F1:31:95
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:256 errors:0 dropped:0 overruns:1 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:20835 (20.3 KiB)
vnet1 Link encap:Ethernet HWaddr 54:FE:00:CD:CD:C4
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:1307 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:2722 (2.6 KiB) TX bytes:110215 (107.6 KiB)
我還需要提供其他相關資訊嗎?
謝謝!
答案1
如果來賓上的「ifconfig -a」沒有顯示 eth0,則在主機上執行「virt-manager」以獲得一個漂亮的 GUI,用於編輯虛擬機器的參數,而不是在命令列上執行。如果需要,您可以透過該 GUI 新增網路介面。
一旦在來賓上有了 eth0,那麼您將需要在檔案 /etc/sysconfig/network-scripts/ifcfg-eth0 中指定介面的參數。請務必使用「GATEWAY」關鍵字指定預設閘道。以下是用於手動指定參數的範例 ifcfg 腳本(而不是使用 DHCP)。當然,您需要為您的網路提供正確的 IPADDR、NETWORK、NETMASK 和 GATEWAY 值。
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.110
NETWORK=192.168.1.0
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
若要使 ifcfg-eth0 的變更生效,請執行「service network restart」。
答案2
在主機上執行“brctl show”
驗證您的虛擬機器是否已連接到網橋 br0,並且由於您的 br0 具有公共 IP(我假設自從您評論以來),請使用正確的網關將公共 IP 分配給您的來賓虛擬機器。
或者
從 br0 中刪除您的虛擬接口,並將其新增至 virbr0 中。
在主機上
brctl delif br0 vifname
brctl addif virbr0 vifname
透過設定在您的訪客上啟用 dhcp啟動協定=dhcp。
您將獲得 192.168.122.0 中的 IP 位址,並且您應該能夠存取外部,前提是您具有由 libvirt 建立的正確 NAT 規則。