<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hyper-V on HiDa</title>
    <link>https://www.0niu.cn/tags/hyper-v/</link>
    <description>Recent content in Hyper-V on HiDa</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh</language>
    <lastBuildDate>Wed, 16 Sep 2026 13:40:56 +0800</lastBuildDate><atom:link href="https://www.0niu.cn/tags/hyper-v/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>用 Hyper-V 给 Windows 添加虚拟网卡</title>
      <link>https://www.0niu.cn/posts/windows-hyper-v-virtual-nic/</link>
      <pubDate>Wed, 16 Sep 2026 13:40:56 +0800</pubDate>
      
      <guid>https://www.0niu.cn/posts/windows-hyper-v-virtual-nic/</guid>
      <description>&lt;p&gt;Hyper-V 宿主机可以有自己的虚拟网卡，用来直连物理交换机上的某个 VLAN。场景是：物理交换机端口做了 Trunk，承载多个 VLAN，但宿主机只需要接入其中一个。&lt;/p&gt;
&lt;p&gt;先决条件：Windows 开启了 Hyper-V 功能（Win+R 输入 optionalfeatures，勾选 Hyper-V）。&lt;/p&gt;
&lt;h2 id=&#34;创建虚拟交换机&#34;&gt;创建虚拟交换机&lt;/h2&gt;
&lt;p&gt;用管理员身份打开 PowerShell，执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;New-VMSwitch -Name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vTrunk&amp;#34;&lt;/span&gt; -NetAdapterName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;以太网&amp;#34;&lt;/span&gt; -AllowManagementOS $false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-Name&lt;/code&gt;：虚拟交换机名称，随意起，后面引用要用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-NetAdapterName&lt;/code&gt;：绑定的物理网卡名，在控制面板里能看到&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-AllowManagementOS $false&lt;/code&gt;：宿主机不通过这个交换机走管理网络，避免路由冲突&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步只是建立了虚拟交换机和物理网卡的连接，宿主机自己还没有接口可以通信。&lt;/p&gt;
&lt;h2 id=&#34;给宿主机加虚拟网卡&#34;&gt;给宿主机加虚拟网卡&lt;/h2&gt;
&lt;p&gt;上一步创建的交换机默认只服务虚拟机，宿主机要接入，需要单独加一块虚拟网卡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Add-VMNetworkAdapter -ManagementOS -SwitchName vTrunk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-ManagementOS&lt;/code&gt; 表示这块网卡属于宿主机（管理操作系统），而不是某台虚拟机。加完之后打开网络适配器设置，会看到一个新的虚拟网卡。&lt;/p&gt;
&lt;p&gt;但到这里还不够——这块网卡默认会收到 Trunk 口上所有 VLAN 的流量，需要告诉它只认其中一个。&lt;/p&gt;</description>
      <content>&lt;p&gt;Hyper-V 宿主机可以有自己的虚拟网卡，用来直连物理交换机上的某个 VLAN。场景是：物理交换机端口做了 Trunk，承载多个 VLAN，但宿主机只需要接入其中一个。&lt;/p&gt;
&lt;p&gt;先决条件：Windows 开启了 Hyper-V 功能（Win+R 输入 optionalfeatures，勾选 Hyper-V）。&lt;/p&gt;
&lt;h2 id=&#34;创建虚拟交换机&#34;&gt;创建虚拟交换机&lt;/h2&gt;
&lt;p&gt;用管理员身份打开 PowerShell，执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;New-VMSwitch -Name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vTrunk&amp;#34;&lt;/span&gt; -NetAdapterName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;以太网&amp;#34;&lt;/span&gt; -AllowManagementOS $false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-Name&lt;/code&gt;：虚拟交换机名称，随意起，后面引用要用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-NetAdapterName&lt;/code&gt;：绑定的物理网卡名，在控制面板里能看到&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-AllowManagementOS $false&lt;/code&gt;：宿主机不通过这个交换机走管理网络，避免路由冲突&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步只是建立了虚拟交换机和物理网卡的连接，宿主机自己还没有接口可以通信。&lt;/p&gt;
&lt;h2 id=&#34;给宿主机加虚拟网卡&#34;&gt;给宿主机加虚拟网卡&lt;/h2&gt;
&lt;p&gt;上一步创建的交换机默认只服务虚拟机，宿主机要接入，需要单独加一块虚拟网卡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Add-VMNetworkAdapter -ManagementOS -SwitchName vTrunk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-ManagementOS&lt;/code&gt; 表示这块网卡属于宿主机（管理操作系统），而不是某台虚拟机。加完之后打开网络适配器设置，会看到一个新的虚拟网卡。&lt;/p&gt;
&lt;p&gt;但到这里还不够——这块网卡默认会收到 Trunk 口上所有 VLAN 的流量，需要告诉它只认其中一个。&lt;/p&gt;
&lt;h2 id=&#34;给虚拟网卡配-access-vlan&#34;&gt;给虚拟网卡配 Access VLAN&lt;/h2&gt;
&lt;p&gt;物理交换机端口是 Trunk，上面跑着多个 VLAN，帧都带着 802.1Q 标签。Hyper-V 的虚拟交换机只是透明转发，打标签和剥标签的工作由虚拟网卡来做：把虚拟网卡设为 Access 模式并指定 VLAN ID 后，它发出的帧会打上该 VLAN 的标签，收到带对应标签的帧则剥掉标签再交给系统。效果等效于物理交换机上的一个 Access 端口。&lt;/p&gt;
&lt;p&gt;所以宿主机要接入某个 VLAN，直接在它的虚拟网卡上配 Access VLAN ID 即可：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vTrunk&amp;#34;&lt;/span&gt; -Access -VlanId &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-ManagementOS&lt;/code&gt;：作用对象是宿主机的虚拟网卡，不是某台虚拟机的&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-VMNetworkAdapterName&lt;/code&gt;：上一步加出来的那块网卡的名字。没指定 &lt;code&gt;-Name&lt;/code&gt; 时默认叫「以太网 2」之类，也可以在 &lt;code&gt;Add-VMNetworkAdapter&lt;/code&gt; 时用 &lt;code&gt;-Name&lt;/code&gt; 显式起名，后面引用更稳&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-Access&lt;/code&gt;：把网卡设为 Access 模式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-VlanId 20&lt;/code&gt;：Access 模式下必须指定，表示这块卡只收发 VLAN 20 的帧&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;设完之后，去网络适配器属性里确认新虚拟网卡的 VLAN 设置已经生效，再给它配上 VLAN 20 的 IP 地址，宿主机就接入目标网段了。&lt;/p&gt;
&lt;h2 id=&#34;虚拟机侧怎么做&#34;&gt;虚拟机侧怎么做&lt;/h2&gt;
&lt;p&gt;如果虚拟机也要接入同一个 VLAN：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Add-VMNetworkAdapter -VMName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MyVM&amp;#34;&lt;/span&gt; -SwitchName vTrunk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Set-VMNetworkAdapterVlan -VMName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MyVM&amp;#34;&lt;/span&gt; -VMNetworkAdapterName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;网卡&amp;#34;&lt;/span&gt; -Access -VlanId &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;虚拟机网卡默认不带 VLAN 设置，不执行 &lt;code&gt;Set-VMNetworkAdapterVlan&lt;/code&gt; 的话，它会收到 Trunk 口上所有 VLAN 的流量，通常不是想要的结果。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/powershell/module/hyper-v/new-vmswitch&#34;&gt;New-VMSwitch 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/powershell/module/hyper-v/add-vmnetworkadapter&#34;&gt;Add-VMNetworkAdapter 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/powershell/module/hyper-v/set-vmnetworkadaptervlan&#34;&gt;Set-VMNetworkAdapterVlan 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
  </channel>
</rss>
