Files
2025-10-01 22:55:09 +03:00

439 lines
22 KiB
Typst
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#set text(size: 1.3em)
// title
#align(center)[Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики]
\
\
\
#align(center)[Факультет инфокоммуникационных технологий]
#align(center)[Направление подготовки 11.03.02]
\
\
#align(center)[Практическая работа №1]
#align(center)[Консольные средства настройки Windows]
\
\
\ //#align(center)[Вариант 19]
\
\
\
\
\
\
\
#align(right)[Выполнил:]
#align(right)[Дощенников Никита Андреевич]
#align(right)[Группа: К3121]
#align(right)[Проверил:]
#align(right)[Антон Харитонов]
\
\
#align(center)[Санкт-Петербург]
#align(center)[2025]
#pagebreak()
// page 1
=== Цель работы
Освоить практические навыки настройки сетевых параметров в ОС Windows (или другой операционной системе), изучить консольные инструменты для диагностики и администрирования сети, научиться создавать скрипты для автоматической конфигурации сетевого интерфейса и ознакомиться с форматом записи сетевых путей UNC.
=== Сетевые компоненты
Control Panel -> Network and Internet -> Network and Sharing Center -> Change adapter settings -> Ethernet -> Properties
#align(center)[#image("assets/1.png")]
На снимке экрана мы видим сетевые компоненты, такие как Client for Microsoft Networks (позволяет ПК подключаться к общим папкам, принтерам и другим ресурсам в сети (клиентская часть SMB/CIFS)), File and Printer Sharing for Microsoft Networks (позволяем другим ПК подключаться к ресурсам моего компьютера (серверная часть SMB/CIFS)), Internet Protocol Version 4 / 6 (обеспечивает работу сети и интернета через IPv4/IPv6 адреса).
Я отключил File and Printer Sharing for Microsoft Networks, чтобы предотвратить удалённый доступ к файлам, принтерам и другим ресурсам моего компьютера по протоколу Server Message Block.
=== Утилиты.
`ping` - консольная утилита для проверки доступности узла в сети и измерения времени отклика. Она отправляет ICMP-эхо-запросы на указанный IP-адрес или доменное имя и выводит ответы (если узел доступен).
#align(center)[#image("assets/2.png")]
Если установлен параметр `-t`, пакеты отправляются бесконечно, например:
#align(center)[#image("assets/3.png")]
Пинг, в данном случае, прерывается сочетанием клавиш Ctrl+C.
Для установки определенного количества запросов используется параметр `-n <number>`:
#align(center)[#image("assets/4.png")]
Чтобы установить размер пакета байтах), можно использовать параметр `-l <size>`.
#align(center)[#image("assets/5.png")]
Параметр `-f` позволяет не фрагментировать пакет.
#align(center)[#image("assets/6.png")]
Параметры `-4` и `-6` позволяют принудительно использовать IPv4 и IPv6 соответственно.
#align(center)[#image("assets/7.png")]
Пример записи результата в файл:
#align(center)[#image("assets/8.png")]
`tracert` - утилита, показывающая маршрут следования пакетов от компьютера-исполнителя до указанного хоста (список всех промежуточных узлов, через которые проходит пакет).
#align(center)[#image("assets/9.png")]
Параметр `-d` позволяет программе не пытаться определять имена узлов и тем самым ускоряет работу программы.
#align(center)[#image("assets/10.png")]
Параметр `-h <number>` устанавливает максимальное число прыжков, через которое программа завершает свою работу.
#align(center)[#image("assets/11.png")]
Параметр `-w <time>` задает таймаут ожидания ответа в мс.
#align(center)[#image("assets/12.png")]
`ipconfig` - утилита, используемая для работы с сетевыми настройками. Она выводит и управляет конфигурацией сетевых интерфейсов на ПК.
#align(center)[#image("assets/13.png")]
`ipconfig /all` показывает расширенную информацию (физический адрес, dhcp-настройки, и т.д.)
#align(center)[#image("assets/14.png")]
#align(center)[#image("assets/15.png")]
Чтобы освободить текущий IP можно использовать `ipconfig /release`
#align(center)[#image("assets/16.png")]
#align(center)[#image("assets/17.png")]
Чтобы запросить новый IP используется команда `ipconfig /renew`
#align(center)[#image("assets/18.png")]
#align(center)[#image("assets/19.png")]
Чтобы посмотреть содержимое DNS-кэша можно использовать команду `ipconfig /displaydns`
#align(center)[#image("assets/20.png")]
#align(center)[#image("assets/21.png")]
#align(center)[#image("assets/22.png")]
#align(center)[#image("assets/23.png")]
Чтобы сбросить DNS-кэш используем `ipconfig /flushdns`:
#align(center)[#image("assets/24.png")]
Чтобы повторно зарегистрировать компьютер в DNS используем команду `ipconfig /registerdns`
#align(center)[#image("assets/25.png")]
`net` - утилита для администрирования, работы с сетью, пользователями, сервисами и ресурсами.
Для подключения, отображения и отключения сетевых ресурсов используем `net use`.
#align(center)[#image("assets/26.png")]
Для просмотра компьютеров и общих ресурсов в локальной сети используем `net view`.
#align(center)[#image("assets/27.png")]
Команды `net start` и `net stop` используются для управления службами Windows.
#align(center)[#image("assets/28.png")]
Для управления общими ресурсами используем команду `net share`.
#align(center)[#image("assets/29.png")]
Для демонстрации и настройки параметров сетевых служб Server и Workstation используем команды `net config server` и `net config workstation` соответственно.
#align(center)[#image("assets/30.png")]
#align(center)[#image("assets/31.png")]
#align(center)[#image("assets/32.png")]
Для демонстрации и управления сетевыми сессиями (т.е. соединения удаленных пользователей с компьютером) используем команду `net session`.
#align(center)[#image("assets/33.png")]
Для работы с локальными пользователями Windows используем команду `net user`.
#align(center)[#image("assets/34.png")]
#align(center)[#image("assets/35.png")]
Для демонстрации статистики работы сетевых служб Windows используем команду `net statistics`.
#align(center)[#image("assets/36.png")]
#align(center)[#image("assets/37.png")]
Для управления локальными группами пользователей в Windows используем команду `net localgroup`.
#align(center)[#image("assets/38.png")]
#align(center)[#image("assets/39.png")]
=== Скрипты.
Исходный код для `netcfg.cmd`:
```bat
@echo off
chcp 65001 >nul
setlocal EnableExtensions EnableDelayedExpansion
set MODE=%1
set IFACE=%2
set IP=%3
set MASK=%4
set GW=%5
set DNS1=%6
set DNS2=%7
if /i "%MODE%"=="dhcp" goto dhcp
if /i "%MODE%"=="static" goto static
echo 1) DHCP
echo 2) Static
set /p MODESEL=Select mode [1/2]:
if "%MODESEL%"=="1" set MODE=dhcp
if "%MODESEL%"=="2" set MODE=static
if not defined IFACE set /p IFACE=Interface name [Ethernet]:
if "%IFACE%"=="" set IFACE=Ethernet
if /i "%MODE%"=="dhcp" goto dhcp
if /i "%MODE%"=="static" goto static
echo Invalid selection
exit /b 1
:dhcp
if not defined IFACE set /p IFACE=Interface name [Ethernet]:
if "%IFACE%"=="" set IFACE=Ethernet
netsh interface ip set address name="%IFACE%" source=dhcp
netsh interface ip set dns name="%IFACE%" source=dhcp
ipconfig /flushdns
echo Done
exit /b 0
:static
if not defined IFACE set /p IFACE=Interface name [Ethernet]:
if "%IFACE%"=="" set IFACE=Ethernet
if not defined IP set /p IP=IPv4 address:
if not defined MASK set /p MASK=Subnet mask:
if not defined GW set /p GW=Gateway:
if not defined DNS1 set /p DNS1=DNS1:
if not defined DNS2 set /p DNS2=DNS2 (optional):
netsh interface ip set address name="%IFACE%" static %IP% %MASK% %GW% 1
netsh interface ip set dns name="%IFACE%" static %DNS1% primary
if defined DNS2 netsh interface ip add dns name="%IFACE%" %DNS2% index=2
ipconfig /flushdns
echo Done
exit /b 0
```
В начале пользователь выбирает вариант настройки:
#align(center)[#image("assets/40.png")]
При выборе DHCP пользователю предлагается выбрать имя интерфейса (по умолчанию Ethernet), а затем настройки устанавливаются автоматически.
#align(center)[#image("assets/41.png")]
При выборе опции Static происходит следующая настройка.
#align(center)[#image("assets/42.png")]
Аналогичные настройки можно произвести при помощи аргументов командной строки.
#align(center)[#image("assets/43.png")]
#align(center)[#image("assets/44.png")]
Исходный код для `netcfg.ps1`:
```powershell
param(
[ValidateSet('DHCP','STATIC','INFO')] [string]$Mode,
[string]$Interface = 'Ethernet',
[string]$IP,
[string]$Mask,
[string]$Gateway,
[string[]]$Dns
)
function MaskToPrefix($m){
$b = ($m -split '\.') | ForEach-Object {[Convert]::ToString([int]$_,2).PadLeft(8,'0')}
($b -join '' -split '1').Count - 1 | Out-Null
($b -join '').ToCharArray() | Where-Object {$_ -eq '1'} | Measure-Object | Select-Object -ExpandProperty Count
}
function EnsureInterface($alias){
$a = Get-NetAdapter -InterfaceAlias $alias -ErrorAction SilentlyContinue
if(-not $a){ throw "Interface not found: $alias" }
}
function ConfigureDhcp($alias){
EnsureInterface $alias
Set-NetIPInterface -InterfaceAlias $alias -AddressFamily IPv4 -Dhcp Enabled
Set-DnsClientServerAddress -InterfaceAlias $alias -ResetServerAddresses
ipconfig /flushdns | Out-Null
}
function ConfigureStatic($alias,$ip,$mask,$gw,$dns){
EnsureInterface $alias
$prefix = MaskToPrefix $mask
Get-NetIPConfiguration -InterfaceAlias $alias | Get-NetIPAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | Remove-NetIPAddress -Confirm:$false -ErrorAction SilentlyContinue
Get-NetIPConfiguration -InterfaceAlias $alias | Get-DnsClientServerAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | ForEach-Object { Set-DnsClientServerAddress -InterfaceAlias $alias -ResetServerAddresses }
New-NetIPAddress -InterfaceAlias $alias -IPAddress $ip -PrefixLength $prefix -DefaultGateway $gw | Out-Null
if($dns){ Set-DnsClientServerAddress -InterfaceAlias $alias -ServerAddresses $dns }
ipconfig /flushdns | Out-Null
}
function ShowNicInfo($alias){
$na = Get-NetAdapter -InterfaceAlias $alias -ErrorAction SilentlyContinue
if(-not $na){ throw "Interface not found: $alias" }
$adv = Get-NetAdapterAdvancedProperty -InterfaceDescription $na.InterfaceDescription -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -match 'Duplex|Speed|дуплекс|скорост' }
$info = [pscustomobject]@{
Name = $na.Name
InterfaceAlias = $na.InterfaceAlias
InterfaceDescription= $na.InterfaceDescription
Status = $na.Status
MediaConnection = $na.MediaConnectionState
LinkSpeed = $na.LinkSpeed
DuplexSetting = ($adv | Where-Object { $_.DisplayName -match 'Duplex|дуплекс' } | Select-Object -First 1 -ExpandProperty DisplayValue)
}
$info
}
if(-not $Mode){
Write-Host "1) DHCP 2) STATIC 3) INFO"
$sel = Read-Host "Select mode [1/2/3]"
if($sel -eq '1'){ $Mode='DHCP' }
elseif($sel -eq '2'){ $Mode='STATIC' }
elseif($sel -eq '3'){ $Mode='INFO' }
}
if($Mode -eq 'DHCP'){
if(-not $PSBoundParameters.ContainsKey('Interface')){ $Interface = Read-Host "Interface alias (default: Ethernet)"; if([string]::IsNullOrWhiteSpace($Interface)){ $Interface='Ethernet' } }
ConfigureDhcp -alias $Interface
Get-NetIPConfiguration -InterfaceAlias $Interface
exit
}
if($Mode -eq 'STATIC'){
if(-not $PSBoundParameters.ContainsKey('Interface')){ $Interface = Read-Host "Interface alias (default: Ethernet)"; if([string]::IsNullOrWhiteSpace($Interface)){ $Interface='Ethernet' } }
if(-not $IP){ $IP = Read-Host "IPv4 address" }
if(-not $Mask){ $Mask = Read-Host "Subnet mask" }
if(-not $Gateway){ $Gateway = Read-Host "Gateway" }
if(-not $Dns){ $DnsStr = Read-Host "DNS (comma-separated, optional)"; if($DnsStr){ $Dns = $DnsStr -split '\s*,\s*' } }
ConfigureStatic -alias $Interface -ip $IP -mask $Mask -gw $Gateway -dns $Dns
Get-NetIPConfiguration -InterfaceAlias $Interface
exit
}
if($Mode -eq 'INFO'){
if(-not $PSBoundParameters.ContainsKey('Interface')){ $Interface = Read-Host "Interface alias (default: Ethernet)"; if([string]::IsNullOrWhiteSpace($Interface)){ $Interface='Ethernet' } }
ShowNicInfo -alias $Interface | Format-List
exit
}
```
При запуске скрипта, пользователю предлагается выбрать одну из трех опций: DHCP, STATIC, INFO.
При выборе опции INFO пользователю предлагается выбрать имя интерфейса (по умолчанию Ethernet).
#align(center)[#image("assets/45.png")]
Пользователю, при помощи функции `ShowNicInfo`, находит указанный адаптер (`Get-NetAdapter`), затем его расширенные настройки (`Get-NetAdapterAdvancedProperty`) и выводит их через `Format-List`.
Если выбрать режим DHCP, то автоматически будут получены IP и DNS через DHCP. `Set-NetIPInterface -InterfaceAlias <name> -AddressFamily IPv4 -Dhcp Enabled` включает DHCP-клиент для IPv4 у выбранного интерфейса. `Set-DnsClientServerAddress -InterfaceAlias <name> -ResetServerAddresses` сбрасывает настройки DNS. `ipconfig /flushdns` очищает DNS-кэш.
#align(center)[#image("assets/46.png")]
Если же выбран режим STATIC, то производится ручная настройка сети. `Remove-NetIPAddress` удаляет старые IP-настройки интерфейса, чтобы не было конфликтов. `Set-DnsClientServerAddress -InterfaceAlias <name> -ResetServerAddresses` очищает предыдущие записи DNS. `New-NetIPAddress -InterfaceAlias <name> -IPAddress <ip> -PrefixLength <length> -DefaultGateway <gateway>` создаёт новую конфигурацию для IPv4. `Set-DnsClientServerAddress -InterfaceAlias <name> -ServerAddresses <dns1,dns2>` прописывает DNS-сервера вручную. `ipconfig /flushdns` сбрасывает DNS-кэш.
#align(center)[#image("assets/47.png")]
Аналогичную настройку можно произвести при помощи аргументов командной строки.
#align(center)[#image("assets/48.png")]
#align(center)[#image("assets/49.png")]
#align(center)[#image("assets/50.png")]
=== Ответы на вопросы
Как с помощью графической оболочки Windows можно запретить доступ через определенный сетевой интерфейс к ресурсам используемого компьютера? Как можно запретить используемому компьютеру доступ к ресурсам других компьютеров в сети Microsoft?
Чтобы запретить доступ через определённый сетевой интерфейс к ресурсам локального компьютера, необходимо отключить компонент File and Printer Sharing for Microsoft Networks в свойствах этого интерфейса
Чтобы запретить компьютеру обращаться к общим ресурсам других компьютеров, необходимо отключить компонент Client for Microsoft Networks.
Опишите назначение команды net с директивами use, view, stop, start, share, config, session, user, statistics, localgroup. Приведите примеры.
- `net use` подключение сетевых дисков или принтеров.
Пример: `net use Z: \\server\docs`
- `net view` просмотр доступных в сети компьютеров и их общих ресурсов.
Пример: `net view \\PC-NAME`
- `net start` запуск службы.
Пример: `net start spooler`
- `net stop` остановка службы.
Пример: `net stop spooler`
- `net share` управление общими папками и принтерами.
Пример: `net share docs=C:\Users\Public\Documents`
- `net config` параметры служб Workstation и Server.
Пример: `net config server`
- `net session` просмотр и управление сетевыми сессиями.
Пример: `net session \\192.168.1.5 /delete`
- `net user` управление локальными пользователями.
Пример: `net user student 12345 /add`
- `net statistics` статистика работы сетевых служб.
Пример: `net statistics workstation`
- `net localgroup` управление локальными группами пользователей.
Пример: `net localgroup Administrators student /add`
Как с помощью командной строки в Windows узнать адрес DNS, на который настроен ваш компьютер?
В командной строке можно выполнить:
```
ipconfig /all
```
В выводе будет раздел DNS Servers, где перечислены все настроенные DNS-адреса.
Зачем нужна команда net use? Как с помощью этой утилиты подключить на локальный диск R: папку TEST на компьютере SRV (приведите командную строку)?
`net use` используется для подключения сетевых ресурсов (папок и принтеров).
Пример для подключения:
```
net use R: \SRV\TEST
```
Как в Windows из PowerShell переименовать сетевое соединение?
Для переименования используется команда:
```powershell
Rename-NetAdapter -Name "old name" -NewName "new name"
```
Какие существуют и чем отличаются режимы работы адаптера (duplex)?
- Half-Duplex данные передаются только в одном направлении в каждый момент времени (либо приём, либо передача). Используется в старых сетях, более низкая производительность.
- Full-Duplex одновременная передача и приём данных. Современный стандарт, обеспечивает более высокую скорость.
- Auto-Negotiation автоматическое согласование режима (по умолчанию на большинстве адаптеров).
=== Вывод
В ходе работы я ознакомился с графическими и консольными средствами настройки сети в Windows. Были рассмотрены базовые сетевые утилиты (`ping`, `tracert`, `ipconfig`) и возможности системной команды `net` с её основными подкомандами. Также были реализованы скрипты для автоматической настройки сетевых интерфейсов через CMD и PowerShell.