AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 907602
Accepted
Zoredache
Zoredache
Asked: 2018-04-14 13:57:58 +0800 CST2018-04-14 13:57:58 +0800 CST 2018-04-14 13:57:58 +0800 CST

Windows 计算机从标记的 VLAN 获取 SLAAC IPv6

  • 772

我在网络上有 Windows 计算机,它们意外地从标记的 VLAN 获取 IPv6 地址。

我有路由器/计算机连接到具有未标记 vlan (id 1) 和标记 (id 2) 的交换机。为简单起见,假设此 VLAN2 用于 VoIP 手机,它将看到使用标记的 vlan 作为 DHCP 请求的一部分的选项。

2001:db8:1051:4001::/64出于某种原因,此网络上的 Windows 计算机正在从子网和2001:db8:1051:4002::/64子网中 获取 SLAAC 地址。我希望 Windows 计算机只能从未标记的 VLAN/子网中获取地址。

具有来自 的地址的 Windows 计算机2001:db8:1051:4002::/64将无法实际使用该地址做任何事情。它无法 ping 网关2001:db8:1051:4002::1,并且来自网关的 ping 不起作用。据我所知,它实际上不能以任何方式使用这个地址。

使用过滤器从 Windows 系统上捕获的wiresharkicmp6 and ip6[40] == 134将显示两个子网的路由通告。

从同一台计算机启动到 Linux livecd 的 tcpdump 捕获将显示2001:db8:1051:4002::/64以太网帧中具有正确 vlan id 的广告。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 forever

Linux RADVD 配置

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?

如果我禁用 SLAACAdvAutonomous off;并启用有状态的 DHCPv6 服务器,计算机将只能从未标记的 VLAN 获得地址。

如果在 eth_lan.2 上禁用 RA,会发生什么?

客户端将不会从该 VLAN 2 子网获取地址。不过,我希望 IPv6 在该子网上工作,因此非常需要 RA。

windows
  • 1 1 个回答
  • 1274 Views

1 个回答

  • Voted
  1. Best Answer
    yagmoth555
    2018-04-19T10:40:34+08:002018-04-19T10:40:34+08:00

    我会确保 NIC 的驱动程序完全安装了他们的微型驱动程序,以正确启用操作系统中的 VLAN 支持。

    本机 Windows NDIS 不支持正确的 VLAN,它只是在最坏的情况下剥离 VLANid。

    引用自Wireshark;

    Windows 没有内置的 VLAN 支持机制。除非存在添加此类支持的专用驱动程序,否则您无法从中捕获单独的物理和 VLAN 接口。

    因此,您是否在 Wireshark 中看到 VLAN 标签将取决于您拥有的网络适配器以及它及其驱动程序对 VLAN 标签的作用。

    大多数“简单”网络适配器(例如广泛使用的 Realtek RTL 8139)及其驱动程序将简单地将 VLAN 标记传递给上层来处理这些。在这种情况下,Wireshark 将看到 VLAN 标签并可以处理和显示它们。

    一些更复杂的适配器将处理适配器和/或驱动程序中的 VLAN 标记。这包括一些英特尔适配器,据我所知,博通千兆芯片组(基于 NetXtreme / 57XX 的芯片)。此外,具有专用驱动程序的卡也可能会遵循此路径,以防止来自“真实”驱动程序的干扰。


    更新 1
    =======

    在那里找到了一个 MS 博客参考;Windows Core Networking 谈论 802.1P,但他们提供了更多关于 802.1Q 的信息(VLAN 标记)

    Windows 网络堆栈完全支持 802.1Q 标签,即 UserPriority(正如 Mathias 在这篇文章中所讨论的)以及 VlanId。 但是,没有堆栈组件(tcpip 等)对 VlanId 字段起作用。Intel、Broadcom 等供应商在其微型端口驱动程序中结合 NIC 硬件实现 VLAN。因此,如果 ISV 愿意,Windows 允许 ISV 实施 VLAN,但本身并不实施它们。

    – 加布

    来自其他 MS博客(这可以解释为什么您的 Windows 计算机无法 ping IPv6 的网关(并且很容易使用wireshark 进行验证,因为传出数据包(PC->Gateway)即使应该被标记也不会被标记) )

    您的 NIC 负责将 802.1q 标记添加到传出数据包。

    考虑到这个更新,我的术语“strip the vlan id”一开始有点重,因为它默认不剥离它,它获取 vlan id 作为输入,但忽略它,它只是不发送之后将 vlan id 取出,并将所有管理留给 NIC 的驱动程序。

    • 4

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve