Get-NetIpInterface VS "netsh interface ipv4 show interfaces"... different results on same interfaces -> changed metric not working on always on vpn interface

Dimitri Goossens 21 Reputation points
2021-04-22T05:54:39.287+00:00

Hi,

We're performing an Always On VPN project, and have an issue with DNS resolution.
In general we want the AOVPN interface to have a lower metric then the wired NIC.
THe DNS gets chosen, based on the interface with the lowest metric.

We're using a script from Richard Hicks to change the metric of the AOVPN interface.
(https://github.com/richardhicks/aovpn/blob/master/Update-Rasphone.ps1)
It does get set correctly, and is being changed in the rasphone.pbk file located in : "C:\ProgramData\Microsoft\Network\Connections\"
(we're installing it for all users, hence the location of the file).

So far, so good.. Everything seems to get adapted correctly (verified metric on GUI interface too, and it shows the changed metric).

However when a client connects via VPN, they still get the ISP DNS server (via wired interface) to respond instead of the internal DNS server.
Lowering the metric of the AOVPN interface, should have forced this DNS to be used.

Now for the question :)

When checking the metric of the connections via "netsh interface ipv4 show interfaces", the metric is correct (we see the changed one)

When checking via Get-NetIPInterface, the old value is still shown, valued 25, which is automatic. This is the metric being used, and the one queried with netsh is being ignored.

Does anyone know why there is a difference in both ways to query them?

Windows 10 Network
Windows 10 Network
Windows 10: A Microsoft operating system that runs on personal computers and tablets.Network: A group of devices that communicate either wirelessly or via a physical connection.
2,272 questions
Windows DHCP
Windows DHCP
Windows: A family of Microsoft operating systems that run across personal computers, tablets, laptops, phones, internet of things devices, self-contained mixed reality headsets, large collaboration screens, and other devices.DHCP: Dynamic Host Configuration Protocol (DHCP). A communications protocol that lets network administrators manage centrally and automate the assignment of Internet Protocol (IP) addresses in an organization's network.
1,021 questions
0 comments No comments
{count} votes

7 answers

Sort by: Most helpful
  1. Candy Luo 12,656 Reputation points Microsoft Vendor
    2021-04-22T07:11:52.343+00:00

    Hi,

    Could you please post output of netsh interface ipv4 show interfaces and Get-NetIPInterface ? This can help us identify your issue better.

    Based on my understanding, netsh interface ipv4 show interfaces shows correct metric value but Get-NetIPInterface shows wrong metric value. And when a client connects via VPN, they still get the ISP DNS. Is that right? Please feel free to let me know if I have any misunderstanding.

    Please try Set-NetIPInterface cmdlet to set the correct metric for VPN adapter. See if it works.

    For example in Power Shell by running:

    Set-NetIPInterface -InterfaceIndex 12 -InterfaceMetric 5  
    

    Best Regards,
    Candy

    --------------------------------------------------------------

    If the Answer is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    0 comments No comments

  2. Dimitri Goossens 21 Reputation points
    2021-04-27T06:44:09.953+00:00

    Hi,
    For some reason I now get the wrong "unchanged" interface metric when executing both query cmdlets (get-netipinterface and netsh).
    The metric on the AOVPN interface is correctly changed on the adapter itself however.
    I tried disconnecting/reconnecting, but the interface metric keeps unchanged when queried with the cmdlets, but is ok when looking at the GUI properties of the adapter.

    This cmdlet works :
    Set-NetIPInterface -InterfaceIndex 12 -InterfaceMetric 5
    But by default the metric of the AOVPN connection always gets reset when you disconnect/reconnect it. (this is default behavior for Windows)

    0 comments No comments

  3. Candy Luo 12,656 Reputation points Microsoft Vendor
    2021-04-27T07:43:20.247+00:00

    Hi ,

    You might try to set wired interface's metric to a larger value and check when a client connects via VPN whether they can get internal DNS server.

    If it still doesn't work, as a workaround, you might write a script that run the command of Set-NetIPInterface -InterfaceIndex 12 -InterfaceMetric 5 once it detects a AOVPN connection. Of cause, this is not a good solution, if we want to find the root cause, I would suggest you open a case with Microsoft where more in-depth investigation can be done so that you would get a more satisfying explanation and solution to this issue.

    Here is the link:

    https://support.microsoft.com/en-us/gp/customer-service-phone-numbers

    Best Regards,
    Candy

    --------------------------------------------------------------

    If the Answer is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    0 comments No comments

  4. Dimitri Goossens 21 Reputation points
    2021-04-27T07:48:24.02+00:00

    Thanks! Setting the metric of the wired connections to a higher value does work, but if you need to do this on thousands of clients, there might be other problems popping up.
    It's too bad that Windows doesn't let you correctly set a metric for 1 particular interface (VPN), and the solution is to change everything else besides this metric :-)

    I would like to understand why the metric that you see in the GUI isn't used.


  5. Dimitri Goossens 21 Reputation points
    2021-04-27T08:15:12.993+00:00

    Thanks!
    Setting the metric via the GUI on the AOVPN interface does work, and it survives a reboot/shutdown.
    So it has something to do with the script and where it's exactly saved.
    Do you have any idea where it is taken from when quering via the cmdlet?
    So it does work manually, but we cannot do that on thousands of computers. Also the VPN interfaces gets deleted and recreated on every update.

    0 comments No comments