0

I want to route a website to specific NIC. The interface number of the NIC is 38: Atheros AR7015

>route print
===========================================================================
Interface List
 13...00 e0 53 17 32 68 ......Realtek PCI GBE Family Controller
  3...0a 00 27 00 00 03 ......VirtualBox Host-Only Ethernet Adapter
  2...00 26 37 bd 39 42 ......PdaNet Broadband Adapter
 17...74 d4 35 bd 37 c4 ......Intel(R) Ethernet Connection I217-V
 38...54 e6 fc 95 17 85 ......Atheros AR7015 Wireless Network Adapter
  1...........................Software Loopback Interface 1
 12...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
 16...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
  8...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3
===========================================================================

Using this and this questions I execute the command, but it just prints the help page:

C:\Windows\system32>route ADD website.com IF 38

Manipulates network routing tables.

ROUTE [-f] [-p] [-4|-6] command [destination]
                  [MASK netmask]  [gateway] [METRIC metric]  [IF interface]

  -f           Clears the routing tables of all gateway entries.  If this is
               used in conjunction with one of the commands, the tables are
               cleared prior to running the command.

  -p           When used with the ADD command, makes a route persistent across
               boots of the system. By default, routes are not preserved
               when the system is restarted. Ignored for all other commands,
               which always affect the appropriate persistent routes.

  -4           Force using IPv4.

  -6           Force using IPv6.

  command      One of these:
                 PRINT     Prints  a route
                 ADD       Adds    a route
                 DELETE    Deletes a route
                 CHANGE    Modifies an existing route
  destination  Specifies the host.
  MASK         Specifies that the next parameter is the 'netmask' value.
  netmask      Specifies a subnet mask value for this route entry.
               If not specified, it defaults to 255.255.255.255.
  gateway      Specifies gateway.
  interface    the interface number for the specified route.
  METRIC       specifies the metric, ie. cost for the destination.

All symbolic names used for destination are looked up in the network database
file NETWORKS. The symbolic names for gateway are looked up in the host name
database file HOSTS.

If the command is PRINT or DELETE. Destination or gateway can be a wildcard,
(wildcard is specified as a star '*'), or the gateway argument may be omitted.

If Dest contains a * or ?, it is treated as a shell pattern, and only
matching destination routes are printed. The '*' matches any string,
and '?' matches any one char. Examples: 157.*.1, 157.*, 127.*, *224*.

Pattern match is only allowed in PRINT command.
Diagnostic Notes:
    Invalid MASK generates an error, that is when (DEST & MASK) != DEST.
    Example> route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1
             The route addition failed: The specified mask parameter is invalid. (Destination & Mask) != Destination.

Examples:

    > route PRINT
    > route PRINT -4
    > route PRINT -6
    > route PRINT 157*          .... Only prints those matching 157*

    > route ADD 157.0.0.0 MASK 255.0.0.0  157.55.80.1 METRIC 3 IF 2
             destination^      ^mask      ^gateway     metric^    ^
                                                         Interface^
      If IF is not given, it tries to find the best interface for a given
      gateway.
    > route ADD 3ffe::/32 3ffe::1

    > route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2

      CHANGE is used to modify gateway and/or metric only.

    > route DELETE 157.0.0.0
    > route DELETE 3ffe::/32

C:\Windows\system32>

I also tried specifying all the arguments but it gives me an error. I think I entered everything correctly

C:\Windows\system32>route ADD vk.com MASK 255.255.255.255 192.168.83.1 IF 38
The route addition failed: The parameter is incorrect.


C:\Windows\system32>

The same error occurs if I set the NIC IP as the IF parameter. Saw that approach in other questions somewhere.

I also tried specifying raw IP instead of the website name:

C:\Windows\system32>route add 87.240.165.80 IF 38

Manipulates network routing tables.
...

the same output for IP as IF:

C:\Windows\system32>route add 87.240.165.80 IF 192.168.83.27

and

C:\Windows\system32>route ADD 87.240.165.80 MASK 255.255.255.255 192.168.83.1 IF 192.168.83.27
The route addition failed: The system cannot find the file specified.


C:\Windows\system32>

OK for IF number 38:

C:\Windows\system32>route ADD 87.240.165.80 MASK 255.255.255.255 192.168.83.1 IF 38
 OK!

C:\Windows\system32>
6
  • 3
    Have you tried to set all information (also netmask, gateway, ...) in your command? What happens then? It is possible, that the parser cannot determine the structure of your command and tries to interpred "IF" as netmask. Commented Sep 17, 2017 at 10:33
  • @DanielHofer I've updated the question accordingly. But I am not sure what to put in metric place.. I am researching this
    – Sam
    Commented Sep 17, 2017 at 10:37
  • 1
    Did you also try to specify an IP address as destination to make sure it is not the DNS causing the error? Commented Sep 17, 2017 at 10:43
  • @DanielHofer updated again
    – Sam
    Commented Sep 17, 2017 at 10:46
  • 1
    But this time, you used an IP address instead of the interface number? I only know the possibilities to set the number (like you did most of the time) or let Windows decide by leaving out this information. Commented Sep 17, 2017 at 10:51

1 Answer 1

1

In the original command, there are two mistakes:

  1. Routing happens on layer 3 which means based on IP addresses. Thus it doesn't make sense to enter a hostname since this would have to be translated by the DNS. This leads to the problem that sometimes, several IPs can be chosen, but the more severe problem is that the IP may change, but the orignal route still persists. When entering the IP directly, the user intuitively knows that it will not be updated automatically. This behaviour is consistent with the comments on answer https://serverfault.com/a/144584.

  2. Although Windows could make an educated guess (if the IF is set), the information about the next hop is required. This also makes sense, since static routes should also work when no dynamic information is present. Therefore, Windows won't use the next hop announced by the DHCP.

So for your case, the command with the least changes to get it work would be

route ADD 87.240.165.80 192.168.83.1 IF 38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .