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

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

Изучаемые команды: arp, ifconfig, netstat, ping, route, ssh, telnet, traceroute

Сценарий: Настройка сетевого интерфейса

Сценарий посвящен сетевым интерфейсам – прослойке между канальным и сетевым уровнем в 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)
  1. С помощью команды arp можно узнать текущую ARP-таблицу операционной системы (соответствие MAC-адресов канального уровня IP-адресам). Таблица автоматически поддерживается операционной системой в процессе сетевого обмена.

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

Сценарий: Настройка таблицы маршрутизации

В сценарии производится изучение и настройка таблицы маршрутизации 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.

    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
    30.30.30.1      0.0.0.0        255.255.255.255  UH    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

    Эта команда добавляет явный маршрут до отдельного хоста с указанным 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.

    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
    30.30.30.1                      255.0.0.0       U     0      0        0 ens33
    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
  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

Сценарий: Изучение службы доменных имён

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

Начальные условия: Командная строка суперпользователя, сетевой интерфейс настроен на статический 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.

Сценарий: Простая диагностика работы сети

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

Начальные условия: Командная строка суперпользователя, сетевой интерфейс настроен на статический 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
    ...

Сценарий: Работа по удалённому терминалу

Сценарий рассматривает работу по удалённому сетевому терминалу с использованием программы 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 ~ #

После окончания выполнения практической работы приведите сетевые параметры интерфейса в исходное состояние.

Last updated