【问题标题】:Powershell: Determine the current Physical network adapter in use allowing internet connectionsPowershell:确定当前使用的物理网络适配器允许互联网连接
【发布时间】:2021-09-12 09:03:31
【问题描述】:

我正在尝试通过 powershell 确定正在使用的物理网络适配器。

我有一些我正在创建的函数的部分,但在确定实际使用的物理适配器时遇到问题:

  1. 使用Get-NetAdapter -Physical | Select-Object Name, InterfaceDescription, ifIndex, Status 我可以获得物理网络适配器,如果它们已启动: 在这里我还得到了接口索引(稍后相关):
Name InterfaceDescription IfIndex Status
Ethernet Intel(R) Ethernet Connection (4) I219-V 23 Up
Wi-Fi Intel(R) Dual Band Wireless-AC 8265 8 Up
  1. 使用Get-NetRoute -InterfaceIndex <interface index> | Where-Object {$_.AddressFamily -eq 'IPV4'},我可以获得所有接口的路由(在本例中为 2 个)

问题是两个接口都有各自网关的 0.0.0.0/0 路由,因此它们中的任何一个都可以将我路由到“常规”互联网(比如 google.com)。

那么我如何确定实际使用的接口呢?我认为这两种情况下的接口度量都可以帮助我:

ifIndex DestinationPrefix NextHop RouteMetric ifMetric
8 0.0.0.0/0 192.168.3.1 256 40
23 0.0.0.0/0 192.168.1.1 256 25

因此以太网接口 (IfIndex = 23) 的 IfMetric 为 25。由于两者的 RouteMetric 相同,理论上以太网接口将优先。

这适用于有或没有 VPN 客户端的连接(实际上对于这些测试,我是通过 VPN 客户端连接的)但是:

一个。我不能 100% 确定这是否每次都能奏效。

b.如果接口的 Route Metric 不同怎么办?什么优先:ifMetric、RouteMetric 还是两者的组合?

很高兴阅读您的 cmets 或这方面的经验。

谢谢!

【问题讨论】:

    标签: powershell networking routes vpn


    【解决方案1】:

    这是我的经验指标的组合,但我通常得到明确答案的方式是对 URL 或 IP 运行 Test-NetConnection 命令,该命令的输出将列出它使用的接口。我使用它来确保流量通过我们的 VPN 适配器,但在您的情况下,如果您执行 Test-NetConnection -ComputerName www.google.com,它将返回所用接口的接口别名,您可以使用该别名查找 ifindex 并将其映射回适配器(如果有)多个适配器

    【讨论】:

    • 嗨!没想到……使用 Test-NetConnection 看起来更容易。我会做一些测试。非常感谢!。
    • 好的,我已经测试过了。
    • 好的,我已经测试过了。问题是,在使用 VPN 工作时,针对 VPN 资源之一(例如,内部 Sharepoint)的 Test-NetConnection 将通过 VPN 适配器(显然)路由,该适配器最终是依赖于物理适配器的虚拟适配器...
    猜你喜欢
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多