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

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

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

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

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

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

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

    desktop ~ # ifconfig -a
    eth0      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. Проверить возможность соединения с локальной машиной с помощью команды 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

  3. Перед конфигурированием интерфейса eth0 необходимо убедиться, что он отключен. Отключение сетевого интерфейса eth0 производится командой ifconfig eth0 down.

    desktop ~ # ifconfig eth0 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)

  4. Для связи сетевого интерфейса eth0 с IP-адресом 192.168.1.1 выполним команду ifconfig eth0 192.168.1.1 up.

    desktop ~ # ifconfig eth0 192.168.1.1 up
    desktop ~ # ifconfig -a
    eth0      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».

  5. Для задания специфической маски подсети используется параметр netmask. Например, данная команда задаёт параметры сети класса A: ifconfig eth0 10.10.1.1 netmask 255.0.0.0 up.

    desktop ~ # ifconfig eth0 10.10.1.1 netmask 255.0.0.0 up
    desktop ~ # ifconfig -a
    eth0      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)

  6. С помощью команды 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 10.10.2.1 dev eth0.

    desktop ~ # route add -host 10.10.2.1 dev eth0
    desktop ~ # route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    10.10.2.1       0.0.0.0         255.255.255.255 UH    0      0        0 eth0
    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-адресом через интерфейс eth0.

  4. Аналогичным образом маршрут удаляется, используется параметр del: route del -host 10.10.2.1.

    desktop ~ # route add -host 10.10.2.1 dev eth0
    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

  5. В качестве назначения маршрута можно указывать также целую сеть (парамеметр -net. Рассмотрим команду, которая задаёт маршрут в сеть «192.168.1.0» через шлюз «10.10.1.253»: route add -net 192.168.1.0 gw 10.10.1.253.

    desktop ~ # route add -net 192.168.1.0 gw 10.10.1.253
    desktop ~ # route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.1.0     10.10.1.253     255.255.255.255 UG    0      0        0 eth0
    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

  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 10.10.1.17

  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, то можно увидеть, что состояние этого соединения – «ESTABLISHED»:

    desktop ~ # netstat -t
    Active Internet connections (servers and established)
    tcp        0      0 desktop:42639           ya.ru:http              ESTABLISHED

  3. Информацию обо всех соединениях в системе можно получить с помощью команды netstat -a. В этом случае будет выводиться информация обо всех 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@10.10.1.222

    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 ~ #

Задания для самоподготовки

  1. Настройте сетевой интерфейс eth0 на сеть с адресом 192.168.77.0, состоящую из 16 машин.
  2. С помощью программы netstat определите какие значения принимают локальные порты в исходящих TCP-соединениях? В какой диапазон они попадают?