Ubuntu
KVM Ubuntu Guest 無法通過橋接網路連接到 Internet
我有 Ubuntu 14.04(64 位)+ 帶有 2 個 NIC 的 KVM 主機:
eth0 連接到“公共”網路
eth1 連接到具有私有 IP 地址範圍的 br0 網橋
從主機我可以訪問網際網路,ping VM Guest 並通過 SSH 連接到它。
從 VM 來賓我只能 ping 主機,但無法訪問 Internet,也無法 ping google.com
請幫助我按照下述設置將 VM Guest 連接到 Internet:
在主機上:
/etc/網路/介面
自動lo iface lo inet 環回 自動 eth0 iface eth0 inet 靜態 地址 192.168.2.60 網路遮罩 255.255.255.0 網關 192.168.2.254 dns 名稱伺服器 8.8.8.8 汽車 eth1 iface eth1 inet 手冊 自動 br0 iface br0 inet 靜態 地址 10.0.0.1 網路遮罩 255.255.255.0 橋接埠 eth1 bridge_stp 關閉 橋接最大等待 0 bridge_fd 0 # 自動創建和銷毀網橋。 預 brctl addbr br0 ip link set dev br0 up 發布 /usr/sbin/brctl setfd br0 0 addif br0 eth1 後置 brctl delbr br0
KVM 網路定義為:
<network> <name>br0-net</name> <uuid>9d24b473-0b4d-4cfa-8b12-7bf267d856ae</uuid> <forward mode='bridge'/> <bridge name='br0'/> </network>
sysctl -p /etc/sysctl.conf
net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
路線 -n
核心IP路由表 目標網關 Genmask 標誌 Metric Ref Use Iface 0.0.0.0 192.168.2.254 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
iptables -t nat -vnL
鏈 PREROUTING(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination 鏈輸入(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination 鏈輸出(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination Chain POSTROUTING(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination
在虛擬機訪客上:
/etc/網路/介面
自動lo iface lo inet 環回 自動 eth0 iface eth0 inet 靜態 地址 10.0.0.11 網路遮罩 255.255.255.0
來賓 xml 定義為
<interface type='bridge'> <mac address='52:54:00:6b:93:69'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface>
路線 -n
核心IP路由表 目標網關 Genmask 標誌 Metric Ref Use Iface 0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
iptables -t nat -vnL
鏈 PREROUTING(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination 鏈輸入(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination 鏈輸出(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination Chain POSTROUTING(策略接受 0 個數據包,0 個字節) pkts bytes target prot opt in out source destination
來自 Guest 的 Ping KVM 主機確實適用於 10.0.0.1 和 192.168.2.60:
$ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) 字節數據。 來自 10.0.0.1 的 64 個字節:icmp_seq=1 ttl=64 time=0.555 ms
$ ping 192.168.2.60
PING 192.168.2.60 (192.168.2.60) 56(84) 個字節的數據。 來自 192.168.2.60 的 64 個字節:icmp_seq=1 ttl=64 time=0.772 ms
從 Guest ping 另一台電腦 192.168.2.3 不起作用:
--- 192.168.2.3 ping 統計 --- 277個包發送,0個接收,100%丟包,時間276399ms
從訪客 Ping google.com 不起作用:
ping:未知主機 google.com
我認為您缺少偽裝的 iptable 規則
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE