Windows network protocol binderThis is a command line tool which can show and alter protocol bindings. This is useful if you want to alter your network configuration from a script. The MS loopback adapter, vmware bridging protocol and OpenVPN TAP adapter are the sorts of things you might want to alter with this tool. You can use it on your normal ethernet adapter but being a physical adapter, it becomes difficult to automate the installation of it.
Usageproto [--list|--bind|--unbind] [options] --list [--adapter=adapter] [--protocol=protocol] [--layer=UPPER|LOWER] --bind [--adapter=adapter] --protocol=protocol [--layer=UPPER|LOWER] --unbind [--adapter=adapter] --protocol=protocol [--layer=UPPER|LOWER] adapter and protocol names may end with a % which means wildcardExample --listproto --list adapter=*msloop not bound to protocol=ms_netbios->ms_netbt->ms_tcpip6->ROOT\NET\0000 bound to protocol=ms_netbios->ms_netbt->ms_tcpip->ROOT\NET\0000 not bound to protocol=ms_server->ms_netbt->ms_tcpip6->ROOT\NET\0000 not bound to protocol=ms_server->ms_netbt->ms_tcpip->ROOT\NET\0000 bound to protocol=vmware_bridge->ROOT\NET\0000 not bound to protocol=ms_msclient->ms_netbt->ms_tcpip6->ROOT\NET\0000 not bound to protocol=ms_msclient->ms_netbt->ms_tcpip->ROOT\NET\0000 bound to protocol=ms_tcpip->ROOT\NET\0000 bound to protocol=ms_ndisuio->ROOT\NET\0000 bound to protocol=ms_pppoe->ROOT\NET\0000 not bound to protocol=ms_netbt->ms_tcpip6->ROOT\NET\0000 bound to protocol=ms_netbt->ms_tcpip->ROOT\NET\0000 not bound to protocol=ms_tcpip6->ROOT\NET\0000 adapter=pci\ven_14e4&dev_1677 bound to protocol=ms_netbios->ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_netbios->ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_server->ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_server->ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_psched->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=vmware_bridge->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_msclient->ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_msclient->ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_ndisuio->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_pppoe->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5There is a lot of information there so you can filter it with the --adapter and --protocol parameters proto --list --adapter=*msloopwill only list the *msloop adapter. Filtering on protocol is probably the most useful. This example shows the adapters using IPv6. Note the use of % as a wild card. proto --list --protocol=ms_tcpip6% Windows protocol binder version 0.1 Written by John Newbigin <jn@it.swin.edu.au> adapter=*vmnetadapter8 bound to protocol=ms_tcpip6->ROOT\VMWARE\0001 adapter=*vmnetadapter1 bound to protocol=ms_tcpip6->ROOT\VMWARE\0000 adapter=*msloop not bound to protocol=ms_tcpip6->ROOT\NET\0000 adapter=*tunmp bound to protocol=ms_tcpip6->ROOT\*TUNMP\0000 adapter=pci\ven_14e4&dev_1677 bound to protocol=ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 adapter=ms_ndiswanip adapter=ms_ptiminiport adapter=ms_pppoeminiport adapter=ms_pptpminiport adapter=ms_l2tpminiport adapter=sw\{eeab7790-c514-11d1-b42b-00805fc1270e} Altering bindings--bind and --unbind work in the same way. You must specify a protocol to operate on but it may be a wildcard. Before you alter the bindings you should use --list and test your --adapter and --protocol values. Lets assume I want to unbind vmware_bridging from my loopback adapter proto --list --adapter=*msloop --protocol=vmware_bridge% Windows protocol binder version 0.1 Written by John Newbigin <jn@it.swin.edu.au> adapter=*msloop bound to protocol=vmware_bridge->ROOT\NET\0000That looks good so I can go ahead and use --unbind proto --unbind --adapter=*msloop --protocol=vmware_bridge% proto --list --adapter=*msloop --protocol=vmware_bridge% Windows protocol binder version 0.1 Written by John Newbigin <jn@it.swin.edu.au> adapter=*msloop not bound to protocol=vmware_bridge->ROOT\NET\0000 Binding it back is the same, just use --bind. If you want a protocol bound to all but a single adapter, first unbind it from all adapters, and then bind on a specific adapter Configuring the protocolYou should be able to use netsh to alter settings like IP addresses and DHCP etc. You will have to check the MS docs on how to do that. More informationMore information about adding interfaces can be found in the ByteClub WIKI under Windows Networking |