我有一个网络上的windows计算机,它不出所料地从标记的VLAN中获得了一个IPv6地址。
我有路由器/计算机连接到一个没有标签的vlan (id 1)和标记(id 2)的交换机上。为了简单起见,让我们假设这个VLAN2是针对VoIP手机的,它将看到使用标记的vlan作为DHCP请求的一部分的选项。
出于某种原因,这个网络上的Windows计算机正在从2001:db8:1051:4001::/64和2001:db8:1051:4002::/64子网中获取一个SLAAC地址。我预计Windows计算机只会从无标记的VLAN/Subnet中获取地址。
具有来自2001:db8:1051:4002::/64的地址的windows计算机将无法实际使用此地址进行任何操作。它不能平分网关2001:db8:1051:4002::1,网关的ping也不能工作。据我所知,它实际上不能以任何方式使用这个地址。
带有过滤器icmp6 and ip6[40] == 134的wireshark捕获将显示两个子网的路由广告。
从引导到livecd的同一台计算机上捕获的tcpdump将显示以太网帧中具有适当vlan的2001:db8:1051:4002::/64广告。Linux并不能从两个子网中获得地址。
Windows计算机是全新安装的Windows 10 1709,我在Realtek和Broadcom适配器的系统上都看到了这种行为。
配置
+--------------+ +-----------+ +------------------+
| Linux Router +----+ HP Switch +----+ Windows Computer |
+--------------+ +-----------+ +------------------+Linux路由器接口配置
3: eth_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 0c:c4:7a:14:c7:fd brd ff:ff:ff:ff:ff:ff
inet 10.2.25.1/24 brd 10.2.25.255 scope global eth_lan
valid_lft forever preferred_lft forever
inet6 2001:db8:1051:4001::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:fe14:c7fd/64 scope link
valid_lft forever preferred_lft forever
5: eth_lan.2@eth_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:14:c7:fd brd ff:ff:ff:ff:ff:ff
inet 10.2.26.1/24 brd 10.2.26.255 scope global eth_lan.2
valid_lft forever preferred_lft forever
inet6 2001:db8:1051:4002::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:fe14:c7fd/64 scope link
valid_lft forever preferred_lft foreverLinux RADVD Config
interface eth_lan
{
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
MaxRtrAdvInterval 90;
MinRtrAdvInterval 30;
prefix ::/64
{
};
};
interface eth_lan.2
{
AdvSendAdvert on;
MaxRtrAdvInterval 90;
MinRtrAdvInterval 30;
prefix ::/64
{
};
AdvDefaultPreference low;
};开关配置
HP-2530-24G-PoEP# show running-config
Running configuration:
; J9773A Configuration Editor; Created on release #YA.15.14.0007
; Ver #05:18.63.ff.37.27:91
hostname "HP-2530-24G-PoEP"
snmp-server community "public" unrestricted
vlan 1
name "DEFAULT_VLAN"
untagged 1-28
ip address dhcp-bootp
exit
vlan 2
name "VLAN2"
tagged 1-28
no ip address
exit为什么Windows系统从标记的VLAN中获取一个非功能的IPv6地址?是否有任何方法可以在不禁用VLAN-2上的IPv6或在Windows系统连接的端口上标记该VLAN的情况下停止此操作?
对评论中提出的问题的答复
如果指定静态IPv6地址,Windows计算机是否能够在网络上进行通信?
如果从VLAN-1子网给出静态地址,连接到端口(无标记vlan1,标记vlan2)的计算机将完全正常工作,但不会在VLAN2子网上工作,这正是我所期望的。
您是否尝试过禁用路由器上的SLAAC,并且只使用DHCPv6?
如果我禁用AdvAutonomous off;并启用有状态的DHCPv6服务器,计算机将只能从无标记的DHCPv6服务器上获得一个地址。
如果在eth_lan.2上禁用RA会发生什么?
客户端将不会从那个VLAN 2子网中获得地址。不过,我希望IPv6能够在子网上工作,因此几乎需要RA。
发布于 2018-04-18 18:40:34
我将确保NIC的驱动程序与他们的迷你河完全安装,以支持操作系统中的VLAN支持。
本机Windows不支持正确的VLAN,在最坏的情况下它只会删除VLANid。
引用Wireshark;
Windows没有内置的VLAN支持机制。没有单独的物理接口和VLAN接口可以捕获,除非有一个专门的驱动程序添加了这种支持。因此,您是否在Wireshark中看到VLAN标记将取决于您拥有的网络适配器以及它及其驱动程序如何处理VLAN标记。大多数“简单”的网络适配器(例如,广泛使用的Realtek 8139)及其驱动程序只需将VLAN标记传递到上层以处理这些问题。在这种情况下,Wireshark将看到VLAN标记,并能够处理和显示它们。一些更复杂的适配器将处理适配器和/或驱动程序中的VLAN标记。这包括一些英特尔适配器和,据我所知,布罗德康千兆位芯片组(基于NetXtreme/57 as芯片)。此外,有专门驱动程序的卡也可能遵循这条路径,以防止来自“真正”驱动程序的干扰。
更新1
=======
找到了一个微软博客参考那里;Windows网络讨论了802.1P,但是他们提供了更多关于802.1Q (VLAN标记)的信息
WindowsNetworking堆栈完全支持802.1Q标记,即UserPriority (正如Mathias在本文中讨论的那样)和VlanId。但是,没有堆栈组件(tcpip等)曾经在VlanId字段上执行操作。供应商,如Intel,Broadcom等,结合NIC硬件,在其微型端口驱动程序中实现VLAN。因此,Windows使ISV能够实现VLAN (如果他们愿意的话),但并不是本机实现的。-加布
从另一个MS 博客 (这可以解释为什么您的Windows计算机不能平移IPv6 6的S网关(并且很容易用wireshark验证,因为即使应该标记出的包(PC->网关)也会被取消))
您的NIC负责将802.1q标记添加到传出数据包。
考虑到这个更新,我的术语“剥掉vlan id”一开始有点重,因为它在默认情况下不会删除它,它会将vlan id作为输入,但是忽略它,它只是不发送vlan id之后,并将所有的管理留给NIC的驱动程序。
https://serverfault.com/questions/907602
复制相似问题