我在尝试进行正确配置的过程中遇到了一些问题
现在我有一台 Cisco Catalyst 交换机、一台 Cisco 路由器 2811 和一个带有 4-8 个 VM(Linux、BSD、Windows)的 VMware ESXi 节点,每个节点都配置为使用 802.1q,并且它们分为 5 个 VLAN。
接下来,节点使用以下配置连接到 Cisco Catalyst 2964 的接口端口 0/1:
switchport trunk allowed vlan 1-11
switchport mode trunk
switchport nonegottiate
为每个 vlan 加上“接口 vlan”,此时具有 ipv4 静态地址的虚拟主机可以 ping 通交换机(vlan 2 的主机可以 ping 通交换机的接口 Vlan2,等等)。
接下来,我配置将连接到 Cisco 2811 路由器的交换机接口
switchport trunk allowed vlan 1-11, 99
switchport mode trunk
switchport nonegottiate
switchport mode trunk native 99
在 Cisco 2811 路由器中,我为每个 Vlan(99 除外)创建了一个 dhcpv4 池,并开始在接口上工作
interface FastEthernet0/0.1
encapsulation dot1Q 1
ip address 192.168.1.1 255.255.255.0
ipv6 address 2001:DB8:C0CA:1::1/64
!
interface FastEthernet0/0.2
encapsulation dot1Q 2
ip address 192.168.2.1 255.255.255.0
ipv6 address 2001:DB8:C0CA:2::1/64
!
interface FastEthernet0/0.3
encapsulation dot1Q 3
ip address 192.168.3.1 255.255.255.0
ipv6 address 2001:DB8:C0CA:3::1/64
!
interface FastEthernet0/0.4
encapsulation dot1Q 4
ip address 192.168.4.1 255.255.255.0
ipv6 address 2001:DB8:C0CA:4::1/64
!
interface FastEthernet0/0.5
encapsulation dot1Q 5
ip address 192.168.5.1 255.255.255.0
ipv6 address 2001:DB8:C0CA:5::1/64
!
interface FastEthernet0/0.99
encapsulation dot1Q 99 native
ip address 192.168.99.1 255.255.255.0
这样,我删除了静态 IPv4 地址并重新启动了虚拟主机。令我惊讶的是,他们配置了 IPv6 地址,但没有 IPv4。当我尝试 ping 每个主机的 IPv6 默认网关时,我又大吃一惊:我无法 ping 通,但我可以 ping 通远程主机。
接下来,我选择了 2 个不同的虚拟主机并在它们上面放置静态 IPv4 地址,它们可以毫无问题地 ping 通本地网关甚至远程节点,但是 DHCP 仍然失败。
在某个时候我启用“debug ip dhcp server packet”,我发现一些非常奇怪的事情:所有广播消息都到达路由器接口 fa 0/0.1**(并且该接口正在响应 DHCPOFFER)。这让我想起了另一件事:**在发送本地 ping IPv6 之前,首先使用多播消息通过 NDP 进行检查但当您尝试发送远程数据包时情况并非如此。
此时,我非常确定 VMware ESXi 已正确配置 Vlan,交换机似乎也是同样的情况,因为路由器能够正确地将“IPv6 路由器广告”传送到虚拟主机。但是路由器在广播(和似乎)多播方面收到了错误的传送,因为它的答案被发送到了错误的 VLAN(或者从不回答 NDP 邻居请求)。
建议?
-- 添加于 25/03
我看到的是接下来的内容:
VMWare ESXi 节点的 CDP 从交换机状态获取 Vlan 为 1 并显示该 Vlan 的 IP 地址范围。经过一些测试,我从 ESXi 主机的端口移除了 Vlan1,并再次检查了 CDP,现在新的 IP 地址范围来自 Vlan 2,但 VLAN 仍标记为“1”,现在节点的广播无法到达路由器。
-- 添加于 25/03 (第二部分)
根据@JelmerS 的建议,VMWare 显示的内容如下:
esxcfg-vswitch -l
Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
vSwitch0 128 4 128 1500 vmnic0
PortGroup Name VLAN ID Used Ports Uplinks
VM Network 0 0 vmnic0
Management Network 0 1 vmnic0
Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
vSwitch1 128 13 128 1500 vmnic1
PortGroup Name VLAN ID Used Ports Uplinks
Vlan5 5 2 vmnic1
Vlan4 4 3 vmnic1
Vlan2 2 3 vmnic1
Vlan3 3 2 vmnic1
我正在使用的交换机是 vSwitch1其所有节点均与互联网隔离(另一个用于远程连接节点)
答案1
我会检查您在 ESX 中的配置。
判断 ESX 配置是否损坏的一个简单方法是将 vlan 99 添加到 Gi0/1(朝向您的主机)并将其设置为本机 vlan(就像您对路由器所做的那样)。这将防止未标记的数据包最终进入连接到路由器的 Fa0/1.1 的 vlan,并确认您的 vSwitch 配置需要检查。
答案2
由于所有 DHCP 请求都通过 VLAN 1 传入,这也是中继到 ESXi 主机的默认 VLAN,我猜 ESXi 根本没有标记流量。确保每个主机都连接到 vswitch 中的不同端口组,并将每个端口组设置为适当的标记。查看VMware 的此知识库。
顺便说一句:一般最佳做法是不使用 VLAN 1。