This commit is contained in:
nik
2025-10-01 22:55:09 +03:00
parent 4d0ece634b
commit 74e98c37c4
591 changed files with 20286 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

View File

@@ -0,0 +1,54 @@
@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

View File

@@ -0,0 +1,95 @@
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 '').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' }
[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)
}
}
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
}

View File

@@ -0,0 +1,53 @@
@echo off // отключаем отображение выполеняемых команд в консольке
chcp 65001 >nul // меняем кодировку на utf8 (вывод команды отправляется в nul)
setlocal EnableExtensions EnableDelayedExpansion // включили расширенные возможности cmd и отложенную подстановку переменных
set MODE=%1 // первый параметр (statis/dhcp)
set IFACE=%2 // второй параметр (имя интерфейса)
set IP=%3 // третий параметр (ipv4 адрес)
set MASK=%4 // четвертый параметр (маска подсети)
set GW=%5 // пятый параметр (gateway)
set DNS1=%6 // шестой параметр (первый DNS-сервер)
set DNS2=%7 // седьмой параметр (второй DNS-сервер)
if /i "%MODE%"=="dhcp" goto dhcp // если параметр режима dhcp перейти по метке dhcp
if /i "%MODE%"=="static" goto static // аналогично со static
echo 1) DHCP
echo 2) Static // если режим не задан в параметрах то распечатаем 2 варианта и дадим пользователю выбрать
set /p MODESEL=Select mode [1/2]: // спросим у пользователя вариант
if "%MODESEL%"=="1" set MODE=dhcp // если введено 1, то MODE=dhcp
if "%MODESEL%"=="2" set MODE=static // иначе MODE=static
if not defined IFACE set /p IFACE=Interface name [Ethernet]: // если не указано имя интерфейса запросим ввод
if "%IFACE%"=="" set IFACE=Ethernet // если пользователь ничего не ввел (пустая строка), то используем Ethernet по умолчанию
if /i "%MODE%"=="dhcp" goto dhcp // опять же если выбран dhcp переходим на соответствующую метку
if /i "%MODE%"=="static" goto static // аналогично
echo Invalid selection // иначе выводим текст ошибки
exit /b 1 // и выходим из программы (код ошибки 1)
:dhcp // метка для настройки DHCP
if not defined IFACE set /p IFACE=Interface name [Ethernet]: // опять же если имя интерфейса не задано, запрашиваем
if "%IFACE%"=="" set IFACE=Ethernet // по умолчанию ставим Ethernet
netsh interface ip set address name="%IFACE%" source=dhcp // переводим интерфейс в получение ip через dhcp
netsh interface ip set dns name="%IFACE%" source=dhcp // аналогично для dns
ipconfig /flushdns // очищаем dns-кэш
echo Done // оповещаем юзера о завершении операции
exit /b 0 // выходим с кодом ошибки 0
:static
if not defined IFACE set /p IFACE=Interface name [Ethernet]: // спрашиваем имя интерфеса если оно не установлено уже
if "%IFACE%"=="" set IFACE=Ethernet // по умолчанию ставим Ethernet
if not defined IP set /p IP=IPv4 address: // запрашиваем пользователя ввести ip
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: // dns1
if not defined DNS2 set /p DNS2=DNS2 (optional): // dns2
netsh interface ip set address name="%IFACE%" static %IP% %MASK% %GW% 1 // назначаем все переданные пользователем параметры
netsh interface ip set dns name="%IFACE%" static %DNS1% primary // задаем основной dns сервер
if defined DNS2 netsh interface ip add dns name="%IFACE%" %DNS2% index=2 // если пользователем был задан второй dns то устанавливаем его как второй
ipconfig /flushdns // очищаем dns-кэш
echo Done // оповещаем пользователя об успешном завершении программы
exit /b 0 // выходим с нулевым кодом ошибки

View File

@@ -0,0 +1,86 @@
param(
[ValidateSet('DHCP','STATIC','INFO')] [string]$Mode, # параметр режима (DHCP/STATIC/INFO)
[string]$Interface = 'Ethernet', # сетевой интерфейс (Ethernet - значение по умолчанию)
[string]$IP, # ipv4 адрес
[string]$Mask, # маска подсети
[string]$Gateway, # шлюз
[string[]]$Dns # массив dns серверов
)
function MaskToPrefix($m){ # переводим маску в длину префикса (255.255.255.0 -> 24)
$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){ # проводим настройку через dhcp сервер
EnsureInterface $alias # проверяем есть ли интерфейс с таким именем
Set-NetIPInterface -InterfaceAlias $alias -AddressFamily IPv4 -Dhcp Enabled # включаем получение IP по DHCP
Set-DnsClientServerAddress -InterfaceAlias $alias -ResetServerAddresses # аналогично для dns
ipconfig /flushdns | Out-Null # очищаем dns кэш
}
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 # удалим существующие ip на этом интерфейсе
Get-NetIPConfiguration -InterfaceAlias $alias | Get-DnsClientServerAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | ForEach-Object { Set-DnsClientServerAddress -InterfaceAlias $alias -ResetServerAddresses } # сбрасываем текущие dns настройки
New-NetIPAddress -InterfaceAlias $alias -IPAddress $ip -PrefixLength $prefix -DefaultGateway $gw | Out-Null # создаем новый ip и шлюз
if($dns){ Set-DnsClientServerAddress -InterfaceAlias $alias -ServerAddresses $dns } # если заданы dns сервера, пропишем их
ipconfig /flushdns | Out-Null # чистим dns кэш
}
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|дуплекс|скорост' } # получаем расширенные свойства адаптера, ищем строки со словом 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 # и выводим его
}
# если параметр $Mode не передан, показываем меню выбора
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 # вызывыаем настройку dhcp
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
}

Binary file not shown.

View File

@@ -0,0 +1,438 @@
#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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

View File

@@ -0,0 +1,376 @@
#import "@preview/tablex:0.0.9": tablex, rowspanx
#set text(size: 1.3em)
// title
#align(center)[Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики]
\
\
\
#align(center)[Факультет инфокоммуникационных технологий]
#align(center)[Направление подготовки 11.03.02]
\
\
#align(center)[Практическая работа №2]
#align(center)[Изучение общих принципов построения IP сетей]
\
\
#align(center)[Вариант 19]
\
\
\
\
\
\
\
#align(right)[Выполнил:]
#align(right)[Дощенников Никита Андреевич]
#align(right)[Группа: К3121]
#align(right)[Проверил:]
#align(right)[Антон Харитонов]
\
\
#align(center)[Санкт-Петербург]
#align(center)[2025]
#pagebreak()
// page 1
=== Цель работы.
Освоить принципы построения и настройки IP-сетей с использованием маршрутизаторов и коммутаторов, а также закрепить навыки конфигурации сетевых интерфейсов и проверки работоспособности сети с помощью базовых инструментов диагностики.
=== Структура сети.
В соответствии с вариантом 19, необходимо использовать маршрутизаторы 1, 3 и 7 и сети с номерами 1, 3(5), 6(5) (числа в скобках - кол-во подсетей). На рисунке 1 изображена структура сети.
#figure(
image("assets/1.jpg"),
caption: "Рисунок 1. Структура сети.",
supplement: none
)
Разобьём сети. Сеть 3 - сеть вида 192.168.32.0/19. Определим минимальное возможное количество разрядов в маске для получения 5 подсетей.
$
N = ceil.l log_2(K + 1) ceil.r
$
где $K$ - количество подсетей. Подставив 5 получим:
$
N = log_2(5 + 1) = 3
$
Длина маски 19. Так как мы добавляем еще 3 разряда для подсети, то длина получается 22 единицы.
#align(center)[#table(columns: 4)[][код][двоичный адрес][десятичный адрес][1][001][11000000.10101000.00100100.00000000][192.168.36.0][2][010][11000000.10101000.00101000.00000000][192.168.40.0][3][011][11000000.10101000.00101100.00000000][192.168.44.0][4][100][11000000.10101000.00110000.00000000][192.168.48.0][5][101][11000000.10101000.00110100.00000000][192.168.52.0]]
Маска имеет длину 22 единицы, то есть
$
11111111.11111111.11111100.0000000 " или " 255.255.252.0
$
Для сети 1. Широковещательный адрес = (IP адрес) | (инвертированная маска). Где знаком "|" обозначается побитовое или.
Получим
$
11000000.10101000.00100100.00000000 | 00000000.00000000.00000011.11111111 =
$
$
11000000.10101000.00100111.11111111
$
или в десятичном виде:
$
192.168.36.0 | 0.0.3.255 = 192.168.39.255
$
Так как в нашей маске 22 единицы, то под узел останется 32 - 22 = 10 разрядов. Тогда максимум узлов - $2^10 - 2 = 1024 - 2 = 1022$. Получаем соответствующий диапазон:
$
192.168.36.1 192.168.39.254
$
Проделав разбивку для других сетей, мы получили сеть на рисунке 2.
#figure(
image("assets/2.jpg"),
caption: "Рисунок 2. Структура сети.",
supplement: none
)
Таблица маршрутизации:
/*
#align(center)[
#tablex(
columns: 3,
stroke: 0.5pt + black,
align: center,
inset: (x: 6pt, y: 4pt),
[Router], [Interface], [IP],
rowspanx(5)[1], [1], [194.44.183.17/28],
(), [2], [192.168.36.254/22],
(), [3], [192.168.40.254/22],
(), [4], [192.168.44.254/22],
(), [5], [192.168.48.254/22],
(), [6], [192.168.52.254/22],
(), [7], [9.2.0.254/16],
rowspanx(5)[3], [1], [9.2.0.253/16],
(), [2], [193.10.20.254/22],
(), [3], [193.10.24.254/22],
(), [4], [9.10.0.253/16],
rowspanx(5)[7], [1], [9.10.0.254/16],
(), [2], [10.1.18.254/23],
(), [3], [10.1.20.254/23],
(), [4], [10.1.22.254/23],
(), [5], [10.1.24.254/23],
(), [6], [10.1.26.254/23]
)
]
*/
#import "@preview/tablex:0.0.9": tablex, rowspanx
#align(center)[
#tablex(
columns: 3,
stroke: 0.5pt + black,
align: center,
inset: (x: 6pt, y: 4pt),
[M], [Int], [IP],
rowspanx(7)[1], [1], [194.44.183.17/28],
(), [2], [192.168.36.254/22],
(), [3], [192.168.40.254/22],
(), [4], [192.168.44.254/22],
(), [5], [192.168.48.254/22],
(), [6], [192.168.52.254/22],
(), [7], [9.2.0.254/16],
rowspanx(4)[3], [1], [9.2.0.253/16],
(), [2], [193.10.20.254/22],
(), [3], [193.10.24.254/22],
(), [4], [9.10.0.253/16],
rowspanx(6)[7], [1], [9.10.0.254/16],
(), [2], [10.1.18.254/23],
(), [3], [10.1.20.254/23],
(), [4], [10.1.22.254/23],
(), [5], [10.1.24.254/23],
(), [6], [10.1.26.254/23],
)
]
Для M1:
#align(center)[
#table(columns: 4)[Network][Mask][Gateway][Int][194.44.183.17][255.255.255.240][0.0.0.0][1][192.168.36.0][255.255.252.0][0.0.0.0][2][192.168.40.0][255.255.252.0][0.0.0.0][3][192.168.44.0][255.255.252.0][0.0.0.0][4][192.168.48.0][255.255.252.0][0.0.0.0][5][192.168.52.0][255.255.252.0][0.0.0.0][6][9.2.0.0][255.255.0.0][0.0.0.0][7][193.10.16.0][255.255.240.0][9.2.0.253][7][10.1.16.0][255.255.240.0][9.2.0.253][7][0.0.0.0][0.0.0.0][194.44.183.17][1]
]
Для M3:
#align(center)[
#table(columns: 4)[Network][Mask][Gateway][Int][192.168.32.0][255.255.224.0][9.2.0.254][1][9.2.0.0][255.255.0.0][0.0.0.0][1][193.10.20.0][255.255.252.0][0.0.0.0][3][10.1.16.0][255.255.240.0][9.10.0.254][4][9.10.0.0][255.255.0.0][0.0.0.0][4][0.0.0.0][0.0.0.0][9.2.0.254][1]
]
Для M7:
#align(center)[
#table(columns: 4)[Network][Mask][Gateway][Int][192.168.32.0][255.255.224.0][9.10.0.253][1][193.10.16.0][255.255.240.0][9.10.0.253][1][9.10.0.0][255.255.0.0][0.0.0.0][1][10.1.18.0][255.255.254.0][0.0.0.0][2][10.1.20.0][255.255.254.0][0.0.0.0][3][10.1.22.0][255.255.254.0][0.0.0.0][4][10.1.24.0][255.255.254.0][0.0.0.0][5][10.1.26.0][255.255.254.0][0.0.0.0][6][0.0.0.0][0.0.0.0][9.10.0.253][1]
]
=== Cisco Packet Tracer
Для начала я добавил 3 маршрутизатора M1, M3 и M7 типа Router-PT-Empty.
#align(center)[#image("assets/3.png")]
Затем, при отключенном питании я добавил модули PT-ROUTER-NM-1CFE в каждый из маршрутизаторов.
Для M1:
#align(center)[#image("assets/4.png")]
Для M3:
#align(center)[#image("assets/5.png")]
Для M7:
#align(center)[#image("assets/6.png")]
Для настройки маршрутизаторов использовались команды `enable` (`en`) для перехода в привилегированный режим, а также `configure terminal` (или сокращенно `conf t`) для перехода в режим глобальной конфигурации.
После этого для каждого из портов были указаны нужные IP.
Для M1:
```
enable
conf t
interface fa0/0
ip address 192.168.36.254 255.255.252.0
no shutdown
interface fa1/0
ip address 192.168.40.254 255.255.252.0
no shutdown
interface fa2/0
ip address 192.168.44.254 255.255.252.0
no shutdown
interface fa3/0
ip address 192.168.48.254 255.255.252.0
no shutdown
interface fa4/0
ip address 192.168.52.254 255.255.252.0
no shutdown
interface fa5/0
ip address 9.2.0.254 255.255.0.0
no shutdown
```
Получилось:
#align(center)[#image("assets/7.png")]
Для M3:
```
enable
conf t
interface fa0/0
ip address 9.2.0.253 255.255.0.0
no shutdown
interface fa1/0
ip address 193.10.20.254 255.255.252.0
no shutdown
interface fa2/0
ip address 193.10.24.254 255.255.252.0
no shutdown
interface fa3/0
ip address 9.10.0.253 255.255.0.0
no shutdown
```
Получилось:
#align(center)[#image("assets/8.png")]
Для M7:
```
enable
conf t
interface fa0/0
ip address 9.10.0.254 255.255.0.0
no shutdown
interface fa1/0
ip address 10.1.18.254 255.255.254.0
no shutdown
interface fa2/0
ip address 10.1.20.254 255.255.254.0
no shutdown
interface fa3/0
ip address 10.1.22.254 255.255.254.0
no shutdown
interface fa4/0
ip address 10.1.24.254 255.255.254.0
no shutdown
interface fa5/0
ip address 10.1.26.254 255.255.254.0
no shutdown
```
Получилось:
#align(center)[#image("assets/9.png")]
Затем добавим компьютеры соединил их проводами Copper Cross-Over):
#align(center)[#image("assets/10.png")]
Для каждого компьютера я добавил IP, Mask и Gateway.
#align(center)[
#table(columns: 4)[PC][IP][Mask][Gateway][PC0][192.168.36.1][255.255.252.0][192.168.36.254][PC1][192.168.40.1][255.255.252.0][192.168.40.254][PC2][192.168.44.1][255.255.252.0][192.168.44.254][PC3][192.168.48.1][255.255.252.0][192.168.48.254][PC4][192.168.52.1][255.255.252.0][192.168.52.254][PC5][193.10.20.1][255.255.252.0][193.10.20.254][PC6][193.10.24.1][255.255.252.0][193.10.24.254][PC7][10.1.18.1][255.255.254.0][10.1.18.254][PC8][10.1.20.1][255.255.254.0][10.1.20.254][PC9][10.1.22.1][255.255.254.0][10.1.22.254][PC10][10.1.24.1][255.255.254.0][10.1.24.254][PC11][10.1.26.1][255.255.254.0][10.1.26.254]
]
Также добавим маршруты на маршрутизаторах.
Для M1:
```
ip route 193.10.16.0 255.255.240.0 9.2.0.253
ip route 10.1.16.0 255.255.240.0 9.2.0.253
ip route 0.0.0.0 0.0.0.0 9.2.0.253
```
#align(center)[#image("assets/11.png")]
Для M3:
```
ip route 192.168.32.0 255.255.224.0 9.2.0.254
ip route 10.1.16.0 255.255.240.0 9.10.0.254
ip route 0.0.0.0 0.0.0.0 9.2.0.254
```
#align(center)[#image("assets/12.png")]
Для M7:
```
ip route 192.168.32.0 255.255.224.0 9.10.0.253
ip route 193.10.16.0 255.255.240.0 9.10.0.253
ip route 0.0.0.0 0.0.0.0 9.10.0.253
```
#align(center)[#image("assets/13.png")]
Попробуем пингануть PC11 с PC0.
#align(center)[#image("assets/14.png")]
Теперь визуализируем работу нашей сети с помощью режима Simulation.
Отправим PDU с PC0 до PC11.
#align(center)[#image("assets/15.png")]
#align(center)[#image("assets/16.png")]
#align(center)[#image("assets/17.png")]
#align(center)[#image("assets/18.png")]
#align(center)[#image("assets/19.png")]
Как можно видеть пакет был успешно доставлен.
=== Заключение.
В ходе работы была спроектирована и настроена IP-сеть из трёх маршрутизаторов в Cisco Packet Tracer, выполнена адресация интерфейсов и конечных устройств, а также настройка статической маршрутизации. Связность между всеми узлами проверена.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

View File

@@ -0,0 +1,136 @@
#set text(size: 1.3em)
// title
#align(center)[Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики]
\
\
\
#align(center)[Факультет инфокоммуникационных технологий]
#align(center)[Направление подготовки 11.03.02]
\
\
#align(center)[Практическая работа №3]
#align(center)[Хабы. Коммутаторы. DHCP.]
\
\
\
//#align(center)[Вариант 19]
\
\
\
\
\
\
\
#align(right)[Выполнил:]
#align(right)[Дощенников Никита Андреевич]
#align(right)[Группа: К3121]
#align(right)[Проверил:]
#align(right)[Антон Харитонов]
\
\
#align(center)[Санкт-Петербург]
#align(center)[2025]
#pagebreak()
// page 1
=== Цель работы.
Изучить принципы работы концентраторов и коммутаторов второго уровня, освоить настройку и применение VLAN, а также организовать автоматическую выдачу IP-адресов с использованием DHCP-сервера в локальной сети.
=== Концентраторы.
Была выбрана сеть 3 из второй лабораторной, то есть все устройства будут находиться в подсети `192.168.32.0/22`. В качестве коммутатора был выбран 2960-24TT, а также 6 компьютеров типа PC-PT. Я подключил компьютеры к коммутатору проводами Copper Straight-Through. Также я задал каждому ПК IP адрес в соответствии с таблицей ниже.
#align(center)[
#table(columns: 2)[PC][IP][0][192.168.32.1][1][192.168.32.2][2][192.168.32.3][3][192.168.32.4][4][192.168.32.5][5][192.168.32.6]
]
Получилась схема ниже.
#align(center)[#image("assets/1.png")]
Для проверки работоспособности отправим PDU с PC0 на PC5 (ICMP запрос).
#align(center)[#image("assets/2.png")]
Так как PC0 не знает MAC адрес PC4, то совершает ARP запрос всем своим компьютерам.
#align(center)[#image("assets/3.png")]
#align(center)[#image("assets/4.png")]
#align(center)[#image("assets/5.png")]
#align(center)[#image("assets/6.png")]
#align(center)[#image("assets/7.png")]
#align(center)[#image("assets/8.png")]
#align(center)[#image("assets/9.png")]
#align(center)[#image("assets/10.png")]
=== Виртуальные сети.
Ниже показана физическая схема.
#align(center)[#image("assets/11.png")]
А также логический вид.
#align(center)[#image("assets/12.png")]
При помощи команды `vlan x` (`x` обозначает номер VLAN) для всех коммутаторов была добавлена информация о всех VLAN. Например, для `fa0/1`:
```
int fa0/1
switchport access vlan 10
```
Для тех портов, которые связываются с другими сетевыми устройствами использовался мод `trunk`. Например:
```
int fa0/23
switchport mode trunk
```
Затем в настройках Server-PT (DHCP сервер) был включен DHCP service. И добавлены pool для каждого из 6 vlan'ов.
#align(center)[#image("assets/13.png")]
Затем при помощи команд `vlan database` и `vlan x` (где `x` опять таки номер vlan'а) в коммутатор третьего уровня (3560-24PS) была добавлена информация о VLAN. Например:
```
interface vlan 20
ip address 10.20.0.254 255.255.255.0
ip helper-address 10.60.0.1
```
Затем для порта другого коммутатора был включен мод `trunk`.
```
int fa0/2
switchport trunk encapsulation dot1q
switchport mode trunk
```
Затем порт DHCP сервера:
```
int fa0/1
switchport access vlan 10
```
Затем для всех устройств в настройках IP адреса была переключена опция Static на DHCP и устройство получило свои настройки.
Попробуем пингануть PC5 с PC2. Так как они находятся в одном VLAN, то пинг должен пройти.
#align(center)[#image("assets/14.png")]
А для, например, пинга с PC0 до Laptop0 ничего не должно произойти, так как они находятся в разных VLAN.
#align(center)[#image("assets/15.png")]
=== Заключение.
В ходе выполнения работы были изучены принципы работы концентраторов и коммутаторов второго уровня, выполнена настройка VLAN и реализована автоматическая выдача IP-адресов с помощью DHCP-сервера. Полученные результаты подтвердили корректную работу сети: устройства внутри одного VLAN успешно обменивались данными, а взаимодействие между различными VLAN было ограничено в соответствии с настройками.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More