Главная

Thursday, 7 October 2021

Настройки сети с помощью PowerShell.

Всем привет.

Я решил сделать записи на память по использованию PowerShell для администрирования Windows сети, Firewall и Defender в описании Сергея Яремчука.

Сегодня пройдемся по настройкам сети. Оригинал был напечатан в журнале "Системный администратор", № 2014/6.

Microsoft заявляет, что постепенно классические консольные утилиты, к которым администраторы привыкли за долгое время, будут заменяться командлетами PowerShell.

С выходом PowerShell 4.0 модуль Net TCP/IP пополнился новыми командлетами, которые упростили настройку сети. За настройку параметров интерфейса вместо netsh interface ipv4 отвечают два командлета – New-NetIPAddress и Set-NetIPAddress, синтаксис у них схож, оба могут создавать новые настройки, но второй позволяет модифицировать текущие.

New-NetIPAddress -InterfaceAlias Ethernet -IPv4Address 192.168.0.2 -DefaultGateway 192.168.0.1

Set-NetIPAddress -InterfaceAlias Ethernet -PrefixLength 24

Вместо InterfaceAlias удобнее использовать индекс InterfaceIndex, его легко узнать, просмотрев вывод Get-NetIPInterface. Для удаления настроек IP используется командлет Remove-NetIPAddress.

Remove-NetIPAddress -IPAddress 192.168.0.2

Для корректной работы нам понадобится настроить адреса DNS-серверов, это решается с помощью командлета Set-DNSClientServerAddress (из состава модуля DNSClient):

Get-DnsClientServerAddress

Set-DNSClientServerAddress -InterfaceIndex 12 -ServerAddresses "192.168.0.1","8.8.8.8"

Текущие сетевые настройки можно узнать из выводов Get-NetIPAddress и Get-NetIPConfiguration (алиас gip), являющихся аналогами ifconfig. Например, Get-NetIPConfiguration выводит полную информацию о сетевых настройках: IP-адреса интерфейса и шлюза и DNS. Дополнительный параметр -Detailed позволит получить больше данных. Команда route долго использовалась для просмотра и настройки маршрутов, теперь ему на замену идет набор командлетов *-NetRoute, очень простых и понятных в использовании. Получаем текущие настройки маршрутизации и устанавливаем новый маршрут по умолчанию.

Get-NetRoute

New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.0.1" -InterfaceIndex 12

Чтобы проверить доступность определенного узла, PowerShell предлагает два командлета: Test-Connection и Test-NetConnection (сокращенно tnc). Первый входит в основной модуль PowerShell Management и для проверки использует ICMP (в работе напоминает обычный ping).

Второй входит в состав модуля NetTCPIP и обладает большими возможностями, позволяя проверить доступность определенного порта или системы с разных ПК. Например, проверим подключение к SRV01.example.org с двух систем:

Test-NetConnection -ComputerName SRV01.example.org -source localhost, SRV02.example.org

Чтобы получить больше информации достаточно добавить ключ -InformationLevel Detailed, ключ -TraceRoute позволит произвести трассировку подключения (аналог tracert). Для проверки, слушается ли порт, следует указать его номер (поддерживается четыре строковых параметра – SMB, HTTP, RDP и PING). Если ввести команду без указания узла, будет проверено подключение к Интернету. 

Test-NetConnection -Port 80 -InformationLevel Detailed

Количество решаемых задач может быть очень велико, для каждых условий будут оптимальны разные настройки TCP, а установки по умолчанию эффективны не всегда. Для тюнинга TCP предназначен набор командлетов *-NetTCPSetting и *-NetTransportFilter.

С помощью Get-NetTCPSetting получаем список преднастроек. По умолчанию SettingName установлено в значение Automatic, и настройки пусты. Зато существенно различаются между собой InternetCustom, DatacenterCustom, Compat, Datacenter и Internet, назначение которых понятно и без объяснений. Но редактировать можно только профили InternetCustom и DatacenterCustom. Какие подключения будет использовать профиль, можно выяснить, выполнив Get-NetTCPConnections.

Включим расширения IP ECN (Explicit Congestion Notification, явное уведомление о  перегруженности, см. RFC 3168) и протокол DCTCP (Data Center TCP) для DatacenterCustom.

Set-NetTCPSetting -SettingName DatacenterCustom -ECNCapability Enabled -CongestionProvider DCTCP

Чтобы применить параметр TCP к порту с номером или диапазону IP-адреса назначения, надо создать транспортный фильтр с помощью командлета New-NetTransportFilter.

New-NetTransportFilter –SettingName DatacenterCustom –DestinationPrefix 172.16.0.0/16

Дополнительно можно задать локальный и удаленный порты. 


No comments:

Post a Comment

А что вы думаете по этому поводу?