【发布时间】:2021-09-12 09:03:31
【问题描述】:
我正在尝试通过 powershell 确定正在使用的物理网络适配器。
我有一些我正在创建的函数的部分,但在确定实际使用的物理适配器时遇到问题:
- 使用
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 |
- 使用
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