> For the complete documentation index, see [llms.txt](https://antons-organization-1.gitbook.io/administrirovanie-linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://antons-organization-1.gitbook.io/administrirovanie-linux/setevye-nastroiki-linux/prakticheskaya-rabota-7.-upravlenie-setyu.md).

# Практическая работа №7. Управление сетью

*Цель занятия:* изучение инструментов конфигурирования сети в UNIX, включающих настройку параметров TCP/IP-сети.

*Изучаемые команды:* [arp](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-arp), [ifconfig](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-ifconfig), [netstat](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-netstat), [ping](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-ping), [route](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-route), [ssh](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-ssh), [telnet](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-telnet), [traceroute](http://heap.altlinux.org/tmp/unix_base/ch06.html#def-cmd-traceroute)

#### Сценарий: Настройка сетевого интерфейса <a href="#network-scenario-eth" id="network-scenario-eth"></a>

Сценарий посвящен сетевым интерфейсам – прослойке между канальным и сетевым уровнем в UNIX. В сценарии показано, как получать информацию о настроенных в системе сетевых интерфейсах и как производится их диагностика и конфигурирование.

*Начальные условия:* Командная строка суперпользователя после входа в систему.

1. Получить сведения обо всех настроенных сетевых интерфейсах с помощью команды **ifconfig -a**:

   ```
   desktop ~ # ifconfig -a
   ens33     Link encap:Ethernet  HWaddr 00:0D:60:8D:42:AA  
             inet addr:192.168.1.5  Bcast:192.168.1.255  Mask:255.255.255.0
             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
             RX packets:204779 errors:0 dropped:0 overruns:0 frame:0
             TX packets:107606 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:1000 
             RX bytes:302429520 (288.4 Mb)  TX bytes:9177476 (8.7 Mb)
             Base address:0x8000 Memory:c0220000-c0240000 

   lo        Link encap:Local Loopback  
             inet addr:127.0.0.1  Mask:255.0.0.0
             UP LOOPBACK RUNNING  MTU:16436  Metric:1
             RX packets:228 errors:0 dropped:0 overruns:0 frame:0
             TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:0 
             RX bytes:17724 (17.3 Kb)  TX bytes:17724 (17.3 Kb)
   ```
2. Получить сведения обо всех настроенных сетевых интерфейсах с помощью команды ip a. И сравнить вывод команд.
3. Проверить возможность соединения с локальной машиной с помощью команды **ping 127.0.0.1**.

   ```
   desktop ~ # ping 127.0.0.1
   PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
   64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.052 ms
   64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.051 ms
   64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.055 ms
   ```
4. Перед конфигурированием интерфейса *ens33* необходимо убедиться, что он отключен. Отключение сетевого интерфейса *ens33* производится командой **ifconfig eth0 down**.

   ```
   desktop ~ # ifconfig ens33 down
   desktop ~ # ifconfig -a
   lo        Link encap:Local Loopback  
             inet addr:127.0.0.1  Mask:255.0.0.0
             UP LOOPBACK RUNNING  MTU:16436  Metric:1
             RX packets:228 errors:0 dropped:0 overruns:0 frame:0
             TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:0 
             RX bytes:17724 (17.3 Kb)  TX bytes:17724 (17.3 Kb)
   ```
5. Для назначения статического IP-адреса выданного динамически введем след. команду: **ifconfig ens33 \<IP-адрес ВМ> up**.

   ```
   desktop ~ # ifconfig ens33 192.168.1.1 up
   desktop ~ # ifconfig -a
   ens33     Link encap:Ethernet  HWaddr 00:0C:F1:2E:0E:F9
             inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
             UP BROADCAST MULTICAST  MTU:1500  Metric:1
             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:1000
             RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
             Interrupt:11 Base address:0x2000 Memory:c0210000-c0210fff

   lo        Link encap:Local Loopback  
             inet addr:127.0.0.1  Mask:255.0.0.0
             UP LOOPBACK RUNNING  MTU:16436  Metric:1
             RX packets:228 errors:0 dropped:0 overruns:0 frame:0
             TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:0 
             RX bytes:17724 (17.3 Kb)  TX bytes:17724 (17.3 Kb)
   ```

   При этом по умолчанию используется сеть класса `C`, т.е. маска сети «255.255.255.0».

Для задания специфической маски подсети используется параметр *`netmask`*. Например, данная команда задаёт параметры сети класса `A`: **ifconfig ens33 \<IP address> netmask 255.0.0.0 up**.

```
desktop ~ # ifconfig ens33 10.10.1.1 netmask 255.0.0.0 up
desktop ~ # ifconfig -a
ens33     Link encap:Ethernet  HWaddr 00:0C:F1:2E:0E:F9
          inet addr:10.10.1.1  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x2000 Memory:c0210000-c0210fff

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:228 errors:0 dropped:0 overruns:0 frame:0
          TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:17724 (17.3 Kb)  TX bytes:17724 (17.3 Kb)
```

7. С помощью команды **arp** можно узнать текущую ARP-таблицу операционной системы (соответствие MAC-адресов канального уровня IP-адресам). Таблица автоматически поддерживается операционной системой в процессе сетевого обмена.

```
desktop ~ # arp
Address                  HWtype  HWaddress           Flags Mask            Iface
gate.localnet            ether   00:02:44:8F:16:B7   C                     eth0
```

#### Сценарий: Настройка таблицы маршрутизации <a href="#network-scenario-route" id="network-scenario-route"></a>

В сценарии производится изучение и настройка таблицы маршрутизации IP. С помощью специальной программы производится изучение маршрута следования пакетов.

*Начальные условия:* Командная строка суперпользователя, сетевой интерфейс настроен на статический IP-адрес.

1. Для просмотра таблицы маршрутизации воспользуемся командой **route -n**:

   ```
   desktop ~ # route -n
   Kernel IP routing table
   Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
   10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
   127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
   0.0.0.0         10.10.1.254     0.0.0.0         UG    0      0        0 eth0
   ```
2. Без использования ключа *`-n`* для всех имён будут использоваться символьные значения: **route**

   ```
   desktop ~ # route
   Kernel IP routing table
   Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
   localnet        *               255.0.0.0       U     0      0        0 eth0
   loopback        *               255.0.0.0       U     0      0        0 lo
   default         gate.localnet   0.0.0.0         UG    0      0        0 eth0
   ```
3. Для добавления новой строки в таблицу нужно воспользоваться параметром *`add`*: **route add -host 30.30.30.1 dev ens33**.

   <pre><code>desktop ~ # route add -host 30.30.30.1 dev ens33
   desktop ~ # route -n
   Kernel IP routing table
   Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
   <strong>30.30.30.1      0.0.0.0        255.255.255.255  UH    0      0        0 ens33
   </strong>10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
   127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
   0.0.0.0         10.10.1.254     0.0.0.0         UG    0      0        0 eth0
   </code></pre>

   Эта команда добавляет явный маршрут до отдельного хоста с указанным IP-адресом через интерфейс *ens33*.
4. В качестве назначения маршрута можно указывать также целую сеть (параметр *`-net`*. Рассмотрим команду, которая задаёт маршрут в сеть «30.30.30.0» через шлюз «30.30.30.1»: **route add 30.30.30.0 gw 30.30.30.1**.

   ```
   desktop ~ # route add 30.30.30.0 gw 30.30.30.1
   desktop ~ # route -n
   Kernel IP routing table
   Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
   30.30.30.0      30.30.30.1      255.255.255.255 UG    0      0        0 ens33
   10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
   127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
   0.0.0.0         10.10.1.254     0.0.0.0         UG    0      0        0 eth0
   ```
5. Аналогичным образом маршрут удаляется, используется параметр *`del`*: **route del -host 30.30.30.1.**

   <pre><code>desktop ~ # route del -host 30.30.30.1 dev ens33
   desktop ~ # route -n
   Kernel IP routing table
   Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
   <strong>30.30.30.1                      255.0.0.0       U     0      0        0 ens33
   </strong>127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
   0.0.0.0         10.10.1.254     0.0.0.0         UG    0      0        0 eth0
   </code></pre>
6. Рассмотрим простой маршрут движения пакетов до хоста в Internet с помощью программы **traceroute ya.ru**:

   ```
   desktop ~ # traceroute ya.ru
   traceroute to ya.ru (213.180.204.8), 64 hops max, 40 byte packets
    1  10.10.1.254 (10.10.1.254)  3.418 ms  2.67 ms  0.719 ms
    2  cs7206.rinet.ru (195.54.192.28)  1.34 ms  1.378 ms  0.647 ms
    3  ix2-m9.yandex.net (193.232.244.93)  1.554 ms  1.457 ms  1.420 ms
    4  c3-vlan4.yandex.net (213.180.210.146)  2.137 ms  2.154 ms  1.842 ms
    5  ya.ru (213.180.204.8)  2.646 ms  2.183 ms 2.220 ms
   ```

#### Сценарий: Изучение службы доменных имён <a href="#network-scenario-dns" id="network-scenario-dns"></a>

Сценарий посвящен изучению службы доменных имён – её использованию и конфигурированию.

*Начальные условия:* Командная строка суперпользователя, сетевой интерфейс настроен на статический IP-адрес.

1. Просмотрим содержимое файла `/etc/hosts`, содержащего имена локальных хостов: **cat /etc/hosts**

   ```
   desktop ~ # cat /etc/hosts
   #
   # hosts         This file describes a number of hostname-to-address
   #               mappings for the TCP/IP subsystem.  It is mostly
   #               used at boot time, when no name servers are running.
   #               On small systems, this file can be used instead of a
   #               "named" name server.  Just add the names, addresses
   #               and any aliases to this file...
   #

   # Localhost
   127.0.0.1       localhost

   # Home LAN
   10.10.1.254    gate.localnet gate
   10.10.1.20     boss.localnet boss
   ```
2. Проверим работоспособность DNS с помощью команды обращения к хосту в Internet по имени **ping ya.ru**:

   ```
   desktop ~ # ping ya.ru
   PING ya.ru (213.180.204.8) 56(84) bytes of data.
   64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=54 time=3.56 ms
   64 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=54 time=2.22 ms
   ```
3. Для корректной работы службы доменных имен необходимо прописать используемые серверы DNS в файле `/etc/resolv.conf`. Просмотрим его содержимое **cat /etc/resolv.conf**:

   ```
   desktop ~ # cat /etc/resolv.conf
   domain localnet
   nameserver 30.30.30.1
   nameserver 1.1.1.1
   ```
4. С помощью команды **host ya.ru** узнаем информацию DNS о хосте в Internet:

   ```
   desktop ~ # host ya.ru
   ya.ru has address 213.180.204.8
   ya.ru mail is handled by 10 cmail.yandex.ru.
   ```
5. Вторым аргументом команды **host ya.ru ns1.yandex.ru** имя DNS-сервера, с которого необходимо получить информацию:

   ```
   desktop ~ # host ya.ru ns1.yandex.ru
   ya.ru has address 213.180.204.8
   Using domain server:
   Name: ns1.yandex.ru
   Address: 213.180.193.1#53
   Aliases:

   Using domain server:
   Name: ns1.yandex.ru
   Address: 213.180.193.1#53
   Aliases:

   ya.ru mail is handled by 10 cmail.yandex.ru.
   ```

#### Сценарий: Простая диагностика работы сети <a href="#network-scenario-diagn1" id="network-scenario-diagn1"></a>

Сценарий рассматривает самые простые способы диагностики работы сети.

*Начальные условия:* Командная строка суперпользователя, сетевой интерфейс настроен на статический IP-адрес.

1. Для проверки работоспособности сетевых служб воспользуемся командой удалённого терминала: **telnet ya.ru 80**. В данном случае будет установлено соединение с хостом в Internet по порту 80 (HTTP):

   ```
   desktop ~ # telnet ya.ru 80
   Trying 213.180.204.8...
   Connected to ya.ru.
   Escape character is '^]'.
   GET / HTTP/1.0

   HTTP/1.0 200 OK
   Server: thttpd/2.25b 29dec2003
   Content-Type: text/html; charset=windows-1251
   Date: Wed, 23 Nov 2005 05:40:33 GMT
   Last-Modified: Mon, 07 Nov 2005 15:13:14 GMT
   Accept-Ranges: bytes
   Connection: close
   Content-Length: 2005

   <html>
   <head>
   ...
   ```
2. Если во время соединения с удалённым узлом ввести команду **netstat -t** (можно применять команду **ss -tulpn**), то можно увидеть, что состояние этого соединения – «ESTABLISHED»:

   ```
   desktop ~ # netstat -t
   Active Internet connections (servers and established)
   tcp        0      0 desktop:42639           ya.ru:http              ESTABLISHED
   ```
3. Информацию обо всех соединениях в системе можно получить с помощью команды **netstat -a** (можно применять команду **ss -tulpn**). В этом случае будет выводиться информация обо всех TCP-, UDP- и локальных сокетах:

   ```
   desktop ~ # netstat -a
   Active Internet connections (servers and established)
   Proto Recv-Q Send-Q Local Address           Foreign Address         State
   tcp        0      0 *:32769                 *:*                     LISTEN
   tcp        0      0 *:32770                 *:*                     LISTEN
   tcp        0      0 *:sunrpc                *:*                     LISTEN
   tcp        0      0 *:ssh                   *:*                     LISTEN
   tcp        0      0 desktop:42639           ya.ru:http              ESTABLISHED
   udp        0      0 *:32768                 *:*
   udp        0      0 *:32769                 *:*
   udp        0      0 *:sunrpc                *:*
   Active UNIX domain sockets (servers and established)
   Proto RefCnt Flags       Type       State         I-Node Path
   unix  2      [ ACC ]     STREAM     LISTENING     8344   /var/run/acpid.socket
   unix  2      [ ACC ]     STREAM     LISTENING     8866   /var/run/sdp
   ...
   ```

#### Сценарий: Работа по удалённому терминалу <a href="#network-scenario-ssh" id="network-scenario-ssh"></a>

Сценарий рассматривает работу по удалённому сетевому терминалу с использованием программы ssh.

*Начальные условия:* Командная строка суперпользователя, сетевой интерфейс настроен на статический IP-адрес.

1. С помощью команды **ssh user@\<IP вашей ВМ>**

   ```
   desktop ~ # ssh user@10.10.1.222
   Password:
   Last login: Sat Nov 21 15:56:20 2005 from 10.10.1.5
   user@remote ~ $ 
   user@remote ~ $ exit
   ```
2. Выполним команду **who**, чтобы убедиться, что находимся на удалённой машине. Для всех пользователей, работающий удалённо, указывается IP-адрес.

   ```
   user@remote ~ $ who
   user     vc/1         Nov 14 14:04
   user     pts/0        Nov 22 10:55 (10.10.1.5)
   ```
3. Для завершение сеанса удалённого терминала нужно выйти из командной оболочки с помощью команды **exit**.

   ```
   user@remote ~ $ exit
   logout
   Connection to 10.10.1.5 closed.
   desktop ~ #
   ```

#### После окончания выполнения практической работы приведите сетевые параметры интерфейса в исходное состояние. <a href="#undefined" id="undefined"></a>
