-1

我有一台使用 RHEL6.4 操作系统的主机。在主机下,我有一个也运行 RHEL6.4 的 KVM VM。

主机连接到具有 vlan 标记 1 的标记交换机接口。

我已将主机网络接口配置如下:

ifcfg-eth0

#
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
USERCTL=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
#

ifcfg-eth1

#
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
USERCTL=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
#

ifcfg-债券0

#
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
NAME=bond0
ONBOOT=yes
USERCTL=no
BONDING_OPTS="mode=active-backup primary=eth0 miimon=100"
#

和主机vswitch如下:

#
ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 bond0
ovs-vsctl add-port ovsbr0 vlan1 tag=1 -- set interface content type=internal
ifconfig vlan1 192.168.1.2/28 up
#

而且我能够ping通外部vlan1 GW(192.168.1.1)。

我遇到的问题是我无法从 VM ping 外部 IPv4 网关。当我从 VM ping 时,我得到了第一个数据包的响应,但其余数据包似乎丢失了 VLAN 标记并转到错误的接口。如果我 tcpdump bond0.1 我看到第一个 ICMP 请求和回复,但其余的 ICMP 回复似乎出现在bond0 接口(不是bond0.1)

#
[root@vm ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=2.64 ms
^C
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 1 received, 80% packet loss, time 4786ms
rtt min/avg/max/mdev = 2.642/2.642/2.642/0.000 ms
[root@vm ~]#
#
[root@vm ~]#  tcpdump -i bond0.1 host 192.168.1.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bond0.1, link-type EN10MB (Ethernet), capture size 65535 bytes
20:49:28.053502 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 1, length 64
20:49:28.054158 IP 192.168.1.1 > 192.168.1.3: ICMP echo reply, id 55664, seq 1, length 64
20:49:29.055189 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 2, length 64
20:49:30.054971 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 3, length 64
20:49:31.054935 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 4, length 64
20:49:32.054918 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 5, length 64
#
[root@vm]# tcpdump -i bond0 host 192.168.1.1
tcpdump: WARNING: bond0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes
20:49:28.053509 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 1, length 64
20:49:29.055199 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 2, length 64
20:49:29.055653 IP 192.168.1.1 > 192.168.1.3: ICMP echo reply, id 55664, seq 2, length 64
20:49:30.054983 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 3, length 64
20:49:30.055522 IP 192.168.1.1 > 192.168.1.3: ICMP echo reply, id 55664, seq 3, length 64
20:49:31.054968 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 4, length 64
20:49:31.056497 IP 192.168.1.1 > 192.168.1.3: ICMP echo reply, id 55664, seq 4, length 64
20:49:32.054927 IP 192.168.1.3 > 192.168.1.1: ICMP echo request, id 55664, seq 5, length 64
20:49:32.055402 IP 192.168.1.1 > 192.168.1.3: ICMP echo reply, id 55664, seq 5, length 64

虚拟机网络接口配置如下:

ifcfg-eth0

#
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
USERCTL=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

ifcfg-eth1

#
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
USERCTL=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

ifcfg-债券0

#
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
NAME=bond1
ONBOOT=yes
USERCTL=no
BONDING_OPTS="mode=active-backup primary=eth0 miimon=100"

ifcfg-bond0.1

#
VLAN=yes
TYPE=Vlan
DEVICE=bond0.1
NAME=bond0.1
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.3
NETMASK=255.255.255.240

知道为什么会出现这个问题吗?

4

1 回答 1

0

默认情况下,Vlan 1 未标记。因此,当您将其用作标记(中继模式下的端口)时,您应该在交换机上选择另一个未标记(默认 vlan)。在错误的 vlan 配置中,您可能会看到上述行为:您正在发送流量,但您没有将其取回。因此,创建另一个 vlan 并重试。

还要检查 sysctl 和这篇文章的另一个设置

于 2016-05-13T06:16:14.487 回答