我正在使用在 VMWare ESXi 4.0.0 上创建的 Centos 5.3 VM。我在接口 eth3 上创建了一个带有标签 3 的 vlan 接口,并为其指定了一个与 vlan 中其他计算机位于同一子网中的 IP。当我尝试通过新创建的 vlan 接口 (eth3.3) ping 另一台计算机时,它无法 ping 通。但如果我尝试通过实际接口 eth3 ping,它就会 ping 通。我以为它应该以另一种方式工作。我不明白如何排除故障。有人能给我一些关于如何排除故障的指示吗?以下是我执行的步骤:-
# ifconfig eth3
eth3 链路封装:以太网 HWaddr 00:0C:29:F1:DF:DC
inet6 地址:fe80::20c:29ff:fef1:dfdc/64 范围:链路
UP 广播运行多播 MTU:1500 指标:1
RX 数据包:29522 错误:0 丢弃:0 超限:0 帧:0
TX 数据包:142 错误:0 丢弃:0 超限:0 载波:0
冲突:0 txqueuelen:1000
RX 字节:2319562(2.2 MiB)TX 字节:30298(29.5 KiB)
基地址:0x2080 内存:d8940000-d8960000
# vconfig add eth3 3
将 VID == 3 的 VLAN 添加到 IF -:eth3:-
# ifconfig eth3.3 172.22.125.154
# ifconfig eth3.3
eth3.3 链路封装:以太网 HWaddr 00:0C:29:F1:DF:DC
inet 地址:172.22.125.154 Bcast:172.22.255.255 掩码:255.255.0.0
inet6 地址:fe80::20c:29ff:fef1:dfdc/64 范围:链路
UP 广播运行多播 MTU:1500 指标:1
RX 数据包:0 错误:0 丢弃:0 超限:0 帧:0
TX 数据包:33 错误:0 丢弃:0 超限:0 载波:0
冲突:0 txqueuelen:0
RX 字节:0(0.0 b)TX 字节:7944(7.7 KiB)
# ping 172.22.125.3 -I eth3.3
从 172.22.125.154 PING 172.22.125.3 (172.22.125.3) eth3.3:56(84) 字节数据。
--- 172.22.125.3 ping 统计 ---
发送了 2 个数据包,接收了 0 个数据包,100% 数据包丢失,时间 999 毫秒
# ping 172.22.125.3 -I eth3
从 172.20.70.145 PING 172.22.125.3 (172.22.125.3) eth3: 56(84) 字节数据。
来自 172.22.125.3 的 64 字节:icmp_seq=1 ttl=64 时间=1.67 毫秒
来自 172.22.125.3 的 64 字节:icmp_seq=2 ttl=64 时间=1.85 毫秒
答案1
除非您将 vmware 中的 eth3 配置为中继接口,否则这将不起作用。
您最有可能要做的是在 vmware 中配置 vlan,然后将 eth3 分配到 vlan3(在 vmware 中)。您不需要在 VM 内部配置 vlan。
答案2
就 VLAN 要求而言,您确定 ESX 网络和物理交换机端口配置正确吗?如果您希望能够在客户操作系统中处理 VLAN 标记,则必须在 VGT 模式下配置虚拟机设置中虚拟机的 Eth3 网卡映射到的端口组,并且物理交换机必须保持该端口组使用的上行链路的物理端口上的 VLAN 标记不变。另一种可能性是 vSwitch 上的 NIC 组合可能会给您的物理交换机基础架构带来问题,流量在一个方向上工作但在相反方向上失败就是这种情况的一个症状。在这种情况下它们是如何配置的(vSwitch 有多少个上行链路,您是否对端口组有任何策略覆盖,上行链路是否连接到单独的物理交换机?
您的问题很可能出在机器内部,但最好在客户操作系统上不必要地浪费时间之前检查底层虚拟网络是否良好。
ESX Server 支持三种 VLAN 标记模式:
- VGT - 虚拟客户机标记。– vSwitch 将网络数据包传递到客户机操作系统,同时保留 802.1Q 标记不变。如果您需要在客户机操作系统中支持 [多个] VLAN,则需要启用此模式。您可以通过在客户机的 NIC 映射到的端口组上选择 VLAN ID 4095 来启用 VGT 模式。
- EST - 外部交换机标记。VLAN 标记完全由物理交换机处理,永远不会呈现给 ESX 主机,802.1q VLAN 标记在传输到 ESX 服务器网卡之前被删除,并添加到从它们接收的数据包中。客户机网络不知道 VLAN 标记。ESX 主机或客户机操作系统上都不需要进行 VLAN 配置。
- VST - 虚拟交换机标记。在此模式下,VLAN 标记由 vSwitch 处理,而客户操作系统看不到 VLAN 流量 - 必须在该 vSwitch 上的端口\端口组上配置特定的 VLAN ID。
Ken Cline 的 7 篇博客文章系列对此进行了出色的概述(以及您想要了解的有关 ESX vSwitch 配置的几乎所有其他信息),您可以找到第一个在这里,文章末尾讨论了 ESX VLAN 概念。
答案3
我不是 Linux 专家(我运行的是 NetBSD),但是您是否在 ifconfig 行中正确指定了子网掩码?
在 NetBSD 上,我必须使用类似
ifconfig vlan3 1.2.3.4/24
对于 255.255.255.0 或 0xffffff00 (无论如何分割,都是 24 位网络掩码。)
答案4
如果可能的话,您可以在接收端运行 tcpdump,如下所示:
tcpdump -i <interface> 'src 172.22.125.154 and icmp'
如果发送了 ping 但没有回复,接收端可能不知道如何发送到那一端。
执行:traceroute 172.22.125.154
它是否使用正确的网关发送?它尝试使用的网关是否能够发送到该网络?
如果它没有发送到 172.22.125.154,那么您设置 172.22.125.154 的源计算机可能存在路由问题,或者您没有正确配置(网络掩码、网关等)源计算机上的 VLAN。
我的 2 美分...
编辑:在黑暗中射击;)尝试启用代理 arp echo 1 > /proc/sys/net/ipv4/conf/eth3/proxy_arp