Начало работы с настройкой IP в Windows PowerShell

A common SysAdmin task involves managing a PowerShell IP configuration. Typically, one performs this task using the GUI, which is OK. But PowerShell can do the same job and more, which you can put into scripting.

В этом руководстве вы узнаете, как использовать несколько средств управления сетью в PowerShell для управления IP-адресом, шлюзом и DNS-настройками хоста под управлением Windows.

Продолжайте читать и повышайте свои навыки по устранению сетевых проблем с помощью команд конфигурации IP PowerShell!

Предварительные требования

Это руководство включает практические демонстрации. Вам потребуется административный доступ к PowerShell на современной операционной системе Windows для следования инструкциям. В этом руководстве используется Windows Server 2022, но команды также подходят для версий Windows 10 и более поздних.

Получение свойств сетевого адаптера (Get-NetAdapter)

При устранении неполадок или получении IP-адреса хоста вы можете использовать традиционные инструменты, такие как ping, ipconfig или sconfig. Но с помощью средств PowerShell вы можете автоматизировать этот процесс.

Откройте PowerShell и выполните следующую команду Get-NetAdapter, чтобы получить список сетевых адаптеров и их свойств, таких как InterfaceAlias и InterfaceIndex вашего хоста.

Get-NetAdapter
Getting network adapters’ properties

Обратите внимание, что у вашего адаптера еще нет объекта IP-адреса. Вам нужно знать, с каким адаптером вы собираетесь работать. В этом руководстве вы работаете с адаптером с псевдонимом Ethernet.

Получение конфигурации IP PowerShell для адреса (Get-NetIPAddress)

Вы ранее перечислили все сетевые интерфейсы с помощью одной команды. Но вы также можете перечислить значения свойств и текущий IP-адрес вашего хоста с помощью командлета Get-NetIPAddress.

Запустите нижеприведенную команду (без параметров), чтобы отобразить адрес каждого адаптера и конфигурацию IP PowerShell.

Get-NetIPAddress
Getting all IP address configurations

Теперь выполните следующую команду для сужения вывода (Select-Object) до InterfaceAlias и IPAddress Ethernet.

Get-NetIPAddress -InterfaceAlias Ethernet | Select-Object -Property InterfaceAlias,IPAddress
Finding the IP address assigned to an interface (Ethernet)

Получение информации о маршруте IP (Get-NetRoute)

IP-адрес позволяет хосту общаться с другими в той же сети. Но что происходит, когда хосту необходимо общаться за пределами этой сети?

A gateway address is necessary, and the Get-NetRoute cmdlet is what you need. This cmdlet provides information that previous cmdlets you have learned about do not.

Запустите нижеприведенную команду Get-NetRoute, чтобы проверить текущий шлюз (NextHop) для интерфейса Ethernet.

Get-NetRoute -InterfaceAlias Ethernet | Where-Object -Property RouteMetric -EQ 0 | Select-Object -Property NextHop

Обычно адрес шлюза предоставляется DHCP-сервером. Вам захочется зафиксировать этот адрес позже для этой статьи.

Finding the gateway address assigned to an interface

Получение IP-адресов серверов DNS (Get-DnsClientServerAddress)

DNS необходим для разрешения имен как внутри, так и вне сетей. Без DNS вам пришлось бы запоминать интернет-адрес для каждого хоста в вашей сети.

Однако скорее всего ваш хост уже настроен на использование DNS через DHCP. Вы можете воспользоваться командлетом Get-DnsClientServerAddress, чтобы проверить текущую конфигурацию.

Get-DnsClientServerAddress

Запишите IP-адреса, перенаправив вывод в текстовый файл или записав их. Вам придется заново присвоить эти адреса серверов DNS позже в этом руководстве.

Verifying the current DNS configuration

Получение конфигураций IP-сети (Get-NetIPConfiguration)

Когда вам нужна информация, собранная предыдущими тремя командлетами, вам известными, командлет Get-NetIPConfiguration пригодится. Одна из его важных особенностей – предоставление более фокусированной информации.

Запустите командлет Get-NetIPConfiguration ниже, чтобы отобразить конфигурации IP-сети, собранные предыдущими командлетами, которые вы выполнили.

Get-NetIPConfiguration
Getting IP network configurations

Команда Get-NetIPConfiguration работает быстрее, если у вас есть только один сетевой интерфейс. Но если у вас есть более одного сетевого интерфейса, вам может потребоваться фильтровать свойства, чтобы предотвратить прокрутку консоли.

Настройка IP, шлюза и DNS-адреса вручную

С помощью изученных вами команд настало время применить свои новые знания на практике. В этом уроке вы назначите статический IP-адрес, шлюз и серверы DNS для хоста Windows Server 2022.

Команды, начиная с этого момента, изменяют только IP-адрес, шлюз и настройки DNS для указанного сетевого адаптера. Вы должны повторить эти шаги для каждого адаптера, который вы хотите изменить.

1. Откройте PowerShell от имени администратора, и выполните следующую команду для списка сетевых адаптеров на вашем сервере.

Get-NetAdapter

Команда поиска установленных сетевых адаптеров

Определите сетевой адаптер, который вы хотите изменить. Вы можете использовать имя адаптера или индекс, отображенный в списке (например, Ethernet).

Current network adapter properties of all installed adapters

2. Затем выполните нижеследующую команду Net-NetIPAddress, чтобы изменить IPv4-адрес вашего сетевого адаптера. -PrefixLength 24 показывает, что использованы первые 24 бита IP-адреса для сетевой части адреса. Обязательно замените следующие параметры:

  • AdapterName – Название или индексный номер целевого сетевого адаптера.
  • ServerAddress – IPv4-адрес, который нужно добавить к сетевому адаптеру.
  • GatewayAddress – Адрес шлюза должен находиться в той же подсети, что и IPv4-адрес.
New-NetIPAddress -InterfaceAlias "[AdapterName]" -IPAddress [ServerAddress] -PrefixLength 24 -DefaultGateway [GatewayAddress]
Setting a new IP address and gateway

Связанная с командой New-NetIPAddress является Set-NetIPAddress, которая изменяет существующую конфигурацию IP, а Remove-NetIPAddress удаляет конфигурацию.

3. Теперь выполните следующую команду Set-DnsClientServerAddress, которая не выводит результат, но изменяет DNS-серверы. Убедитесь, что вы замените AdapterName на имя вашего сетевого адаптера (-InterfaceAlias) или индексный номер (-InterfaceIndex). Эта команда устанавливает DNS-серверы для вашего сетевого адаптера на общедоступные DNS-серверы Google на 8.8.8.8 и 8.8.4.4. Но вы можете указать любые допустимые IP-адреса DNS-серверов.

Set-DnsClientServerAddress -InterfaceAlias "[AdapterName]" -ServerAddresses 8.8.8.8, 8.8.4.4

Обратите внимание, что с помощью команды Set-DnsClientServerAddress вы можете назначить один или несколько внутренних или общедоступных IP-адресов DNS.

4. Наконец, выполните следующую команду Restart-NetAdapter, которая не выводит результат в консоль, но перезапускает ваш сетевой адаптер и применяет изменения. Поздравляем! Вы только что вручную сконфигурировали ваш сетевой интерфейс с пользовательской конфигурацией.

Restart-NetAdapter -Name Ethernet

Если у вашего хоста есть только один адаптер, как в этом руководстве, возможна временная потеря соединения в зависимости от вашего текущего подключения. Этот последний шаг является важным для завершения процесса и начала использования нового IP-адреса.

Заключение

Знание конфигурации вашей сети критично для поддержания здоровой сети. Хорошая новость в том, что вы узнали о четырех основных командах конфигурации сети, доступных через средства управления IP-адресами в PowerShell.

С этим новым знанием вы легко можете создать сценарий, используя возможности конфигурации IP-адресов в PowerShell, в рамках более общего процесса настройки сервера.

Что же дальше? Почему бы не попробовать настроить более продвинутые параметры, такие как MTU, добавление дополнительных маршрутов или сброс адаптера для использования DHCP вместо статического адреса?

Source:
https://adamtheautomator.com/powershell-ip-configuration/