Windows — Изменение IP-адреса и параметров TCP/IP утилитой netsh

В Windows есть замечательная команда netsh, которая позволяет из скрипта совершать самые разнообразные действия по настройке сети. Одна из часто встречающихся задач — изменение IP-адреса скриптом.

Изменить адрес с помощью netsh легко, нужно только знать, как называется интерфейс, на который будет повешен этот адрес. В русской версии Windows он обычно называется «Подключение по локальной сети».

Пример настройки адреса. Возьмем какой-нибудь 192.168.24.33:

netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.24.33 mask=255.255.255.0 gateway=none

Другой пример с тем же адресом и с указанием основного шлюза 192.168.24.1:

netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.24.33 mask=255.255.255.0 gateway=192.168.24.1 gwmetric=1

С помощью netsh можно, к примеру, очистить ARP-кэш (то же самое, что делает arp -d *):

netsh interface ip delete arpcache

Или сбросить стек TCP/IP в случае, когда он поврежден и подключение к интернету или локальной сети не работает:

netsh interface ip reset [log_filename]

Здесь log_filename — это имя файла для вывода в него лога, например, C:\ipreset.log. В Windows 2003, к слову, невозможно удалить и снова установить протокол TCP/IP в свойствах сетевого подключения, и в этом случае последняя команда весьма полезна.

Более того, с помощью netsh можно сбросить и Winsock. Это делается в случаях, когда его конфигурация повреждена — при этом может не работать интернет, а программы — выдавать ошибку открытия сокета:

netsh winsock reset

После этого нужно перезагрузить компьютер. Microsoft предупреждает о побочных эффектах, см. подробнее здесь.

Еще один интересный пример — разрешение удаленного управления компьютером в правилах встроенного брандмауэра Windows:

netsh firewall set service remoteadmin enable

Подобным образом можно настраивать любые правила файрвола из скрипта, для этого есть все возможности. В Windows Server 2008, Windows Vista и Windows 7 вместо netsh firewall  следует использовать netsh advfirewall firewall.

Дополнительная информация о netsh:

netsh ?

Добавляя через пробел команды и знак вопроса, можно изучить возможности netsh более детально:

netsh interface ip set ?
netsh firewall set ?

Утилита может работать и в режиме командной строки, для этого нужно просто запустить netsh без параметров.

См. также: Netsh — Википедия.