KVM Ubuntu Guest 无法通过桥接网络连接到互联网

KVM Ubuntu Guest 无法通过桥接网络连接到互联网

我有 Ubuntu 14.04(64 位)+ KVM 主机,带有 2 个 NIC:
- eth0 连接到“公共”网络
- eth1 连接到具有私有 IP 地址范围的 br0 网桥

从主机我可以访问互联网,ping VM Guest 并通过 SSH 连接到它。
从 VM Guest 我只能 ping 主机,但无法访问互联网,也无法 ping google.com

请帮助我按照下述设置将 VM Guest 连接到互联网:


在主机上:

/etc/网络/接口

自动档
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
  bridge_ports eth1
  bridge_stp 关闭
  bridge_maxwait 0
  bridge_fd 0

 # 自动创建和销毁桥梁。
预先 brctl addbr br0
ip 链路设置 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 标志 指标参考使用 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 字节数 目标 协议 选择加入 退出 源 目标

链输入(策略接受 0 个数据包,0 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

链输出(策略接受 0 个数据包,0 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

链 POSTROUTING(策略接受 0 个数据包,0 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标


在虚拟机客户机上:

/etc/网络/接口

自动档
iface lo inet 环回

自动 eth0
iface eth0 inet 静态
  地址 10.0.0.11
  网络掩码 255.255.255.0

Guest 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 标志 指标参考使用 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 字节数 目标 协议 选择加入 退出 源 目标

链输入(策略接受 0 个数据包,0 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

链输出(策略接受 0 个数据包,0 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

链 POSTROUTING(策略接受 0 个数据包,0 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

从 Guest ping KVM Host 对于 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 时间=0.555 毫秒

$ 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 时间=0.772 毫秒

从 Guest ping 另一台计算机 192.168.2.3 不起作用:

--- 192.168.2.3 ping 统计 ---
已发送 277 个数据包,已接收 0 个数据包,100% 数据包丢失,耗时 276399 毫秒

从访客 Ping google.com 不起作用:

ping:未知主机 google.com

答案1

我认为你缺少一个用于伪装的 iptable 规则

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

相关内容