Главная страница
Навигация по странице:

  • Сказать преподавателю IP адрес

  • 20: 58: 26.765637 ) протокол (IP ) имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80

  • Фильтры tcpdump

  • Сетевые настройки на сервере Debian. Задачи Сконфигурировать сетевой интерфейс с помощью команды ip


    Скачать 1.09 Mb.
    НазваниеЗадачи Сконфигурировать сетевой интерфейс с помощью команды ip
    Дата03.04.2023
    Размер1.09 Mb.
    Формат файлаdocx
    Имя файлаСетевые настройки на сервере Debian.docx
    ТипДокументы
    #1032805

    Сетевые настройки на сервере Debian
    В ходе выполнения лабораторной работы все этапы подкрепляются скриншотами.
    Задачи:


    1. Сконфигурировать сетевой интерфейс с помощью команды IP

    Указать ip адрес 192.168.14.x

    Маска 255.255.0.0

    Шлюз 192.168.249.206

    DNS:192.168.251.1



      1. Проверить наличие интернета

      2. Выполнить nslookup ya.ru

      3. Сказать преподавателю IP адрес




    1. Сконфигурировать сетевой интерфейс с помощью GUI


    Указать ip адрес 192.168.x.x

    Маска 255.255.0.0

    Шлюз 192.168.249.201

    DNS:8.8.8.8


      1. Проверить наличие интернета

      2. Выполнить nslookup ya.ru

      3. Выставить динамическое получение ip адреса




    1. Изменить имя хоста




    1. Воспользоваться утилитой tcpdump.

      1. В одном терминале запустить прослушивание пакетов, в другом запустить команду ping отловить:

        1. Все пакеты протокола icmp

        2. Все пакеты, исходящие на сервера ya.ru




    1. Изучить возможности команды route, netstat, traceroute в Linux и составьте краткое описание работы и функциональности.


    ТЕОРИТИЧЕСКАЯ ЧАСТЬ
    Настройка статического IP
    Вы установили сервер и во время установки указали какие-то сетевые параметры, или не указали, не важно. Но сейчас вы решили, что вам нужно назначить статический ip (static ip) адрес. Воспользуемся для этого утилитой ip. Сначала посмотрим список всех сетевых интерфейсов:
    # ip a

    В данном случаи в системе 1 сетевой интерфейс eth0 и он каким-то образом уже сконфигурирован. Назначим ему еще один статический адрес:
    # ip addr add 192.168.1.35/24 dev eth0
    Этот адрес будет добавлен к уже существующему адресу. Проверим это:

    # ip a


    Теперь сервер будет доступен по обоим адресам. Текущая настройка сохранится только до перезагрузки сервера. Чтобы она применялась во время загрузки, нужно либо каким-то образом добавить команду на изменение настроек в автозагрузку, например в /etc/rc.local, но это будет костыль. Правильнее отредактировать файл, который отвечает за сетевые настройки в debian - /etc/network/interfaces. Для того, чтобы назначить постоянный статический ip адрес, его нужно привести к следующему виду:
    # mcedit /etc/network/interfaces

    source /etc/network/interfaces.d/*
    auto lo

    iface lo inet loopback
    auto eth0

    iface eth0 inet static

    address 192.168.1.35

    gateway 192.168.1.1

    netmask 255.255.255.0

    auto

    указанный интерфейс необходимо запускать автоматически при загрузке системы

    iface

    интерфейс eth0 находится в диапазоне адресов IPv4 со статическим ip

    address

    статический ip адрес

    gateway

    шлюз по-умолчанию

    netmask

    маска сети



    Для проверки перезагружаем сервер и смотрим, все ли в порядке с настройкой статического ip адреса. Если вам нужно сменить ip адрес в debian, то вы можете временно изменить его с помощью команды ip, либо постоянно, отредактировав параметр address в файле сетевых настроек interfaces.
    Получение сетевых настроек по DHCP
    Теперь рассмотри вариант, когда вам необходимо получить динамический ip адрес в Debian. Здесь по аналогии с предыдущими настройками можно пойди двумя путями:

    1. Получить ip адрес по dhcp в консоли с помощью программы dhclient, который будет работать до перезагрузки.

    2. Отредактировать файл конфигурации сетевых интерфейсов.

    Смотрим снова на текущую конфигурацию сети:

    # ip a



    Выполним команду на получение ip адреса по dhcp и проверим сеть:

    # dhclient

    # ip a


    В качестве второго ip мы получили адрес от dhcp сервера. Если у вас несколько сетевых интерфейсов, то необходимо добавлять название после команды, например вот так:

    # dhclient eth0

    Для того, чтобы сбросить адрес, нужно воспользоваться следующим ключом:

    # dhclient -r

    Обратим внимание, что эта команда сбросит все ip адреса интерфейса, в том числе и статические. Чтобы снова запросить адрес, нужно выполнить предыдущую команду на получение ip с указанием сетевого интерфейса eth0.

    Все изменения, сделанные в консоли после перезагрузки, исчезнут. Чтобы их сохранить, приведем файл /etc/network/interfaces к следующему виду:
    # mcedit /etc/network/interfaces

    source /etc/network/interfaces.d/*
    auto lo

    iface lo inet loopback
    auto eth0

    iface eth0 inet dhcp
    Установка шлюза по-умолчанию (default gateway)
    Теперь разберемся со шлюзом по-умолчанию. В предыдущих примерах со статическим ip адресом и настройками по dhcp у нас не было необходимости указывать отдельно default gateway. Мы его устанавливали вместе с остальными настройками. Чтобы посмотреть установленный по-умолчанию шлюз в debian, можно воспользоваться следующей командой в консоли:

    # ip r sh

    default via 192.168.1.1 dev eth0

    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.24

    Это шлюз по-умолчанию (default gateway). Можно воспользоваться другими, более популярными и привычными командами:

    # route

    # netstat -nr

    Если получите ошибки:

    -bash: route: command not found

    -bash: netstat: command not found
    Значит у вас не установлен пакет net-tools. Установить его можно следующей командой.

    # apt install net-tools

    Если нам нужно сменить default gateway, то сначала надо удалить текущий шлюз, а потом назначить новый.

    # route del default gw 192.168.1.1

    # route add default gw 192.168.1.50

    То же самое, только с помощью ip:

    # ip route del default

    # ip route add default via 192.168.1.50

    Проверяем, что получилось:

    # ip r sh

    default via 192.168.1.50 dev eth0

    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.24
    Все получилось. Эта настройка будет действовать до перезагрузки. Чтобы ее сохранить, либо меняйте конфигурационный файл interfaces, либо, при необходимости, придумывайте что-то еще. 
    Как указать DNS сервер
    Для того, чтобы указать dns сервер, достаточно его записать в файл /etc/resolv.conf в следующем виде:

    # mcedit /etc/resolv.conf

    nameserver 192.168.1.1

    nameserver 77.88.8.1

    nameserver 8.8.8.8

    nameserver 1.1.1.1

    192.168.1.1

    локальный dns сервер

    77.88.8.1

    публичный сервер Яндекса

    8.8.8.8

    публичный сервер Гугла

    1.1.1.1

    публичный сервер cloudflare

    Если у вас стоит resolvconf, то в случае ненадобности, удалите его командой:

    # apt-get remove resolvconf

    После этого сервер надо перезагрузить и удалить сломавшуюся символьную ссылку /etc/resolv.conf, а вместо нее создать файл с нужным содержанием, которое я привел выше.

    Если же вам по какой-то причине необходима указанная выше программа, она у вас стоит и вы не хотите ее удалять, то адрес dns сервера необходимо указать в файле /etc/network/interfaces, добавив к параметрам интерфейса еще один:
    dns-nameservers 192.168.1.1 77.88.8.1 8.8.8.8 1.1.1.1

    Этот параметр нужно установить сразу после указания шлюза gateway. Несколько адресов разделяются пробелом.

    Изменить hostname (имя хоста)
    Во время установки debian вы указывали имя хоста. Посмотреть его текущее значение можно в консоли:

    # hostname

    debian
    Это значение записано в файле /etc/hostname. Есть 2 способа изменить hostname в debian:

    1. Простой и быстрый с помощью консольной команды. Результат работает только до перезагрузки компьютера. Потом вернется старое имя.

    2. С помощью изменения конфигурационного файла результат сохраняется и после перезагрузки. Чтобы сразу применить изменение, потребуется выполнить системный скрипт.

    Для первого способа достаточно в консоли ввести команду:

    # hostname debian10

    Теперь проверим, что получилось:

    # hostname

    debian10
    Имя хоста изменилось, но в файле /etc/hostname по-прежнему указано прошлое значение. После перезагрузки hostname снова примет старое значение debian. Чтобы сделать постоянное изменение, необходимо ввести новое значение в файл вручную:
    # mcedit /etc/hostname

    debian10

    Изменение вступит в силу после перезагрузки. Если воспользоваться командой:

    # hostnamectl set-hostname debian10

    то изменения применятся сразу же.

    Tcpdump
    Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C.

    Давайте рассмотрим одну строку из примера вывода:

    20:58:26.765637 IP 10.0.0.50.80 > 10.0.0.1.53181: Flags [F.], seq 1, ack 2, win 453, options [nop,nop,TS val 3822939 ecr 249100129], length 0


    Каждая строка включает:

    • Метка времени Unix (20: 58: 26.765637)

    • протокол (IP)

    • имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80)

    • имя хоста или IP-адрес назначения и номер порта (10.0.0.1.53181)

    • Флаги TCP (Flags [F.]). Указывают на состояние соединения и могут содержать более одного значения:


      • o S — SYN. Первый шаг в установлении соединения

      • F — FIN. Прекращение соединения

      • — ACK. Пакет подтверждения принят успешно

      • P — PUSH. Указывает получателю обрабатывать пакеты вместо их буферизации

      • R — RST. Связь прервалась

    • Порядковый номер данных в пакете. (seq 1)

    • Номер подтверждения. (ack 2)

    • Размер окна (win 453). Количество байтов, доступных в приемном буфере. Далее следуют параметры TCP

    • Длина полезной нагрузки данных. (length 0)



    Установка tcpdump



    В дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT:

    # apt install tcpdump -y

    Опции tcpdump



    Запускать tcpdump нужно с правами root. Tcpdump включает в себя множество опций и фильтров. При запуске tcpdump без каких-либо параметров произойдет перехват всех пакетов, проходящих через интерфейс по умолчанию.

    Вывести список доступных системе сетевых интерфейсов, в которых tcpdump может захватывать пакеты:


    # tcpdump -D

    или

    # tcpdump --list-interfaces

    1.eth0

    2.nflog (Linux netfilter log (NFLOG) interface)

    3.nfqueue (Linux netfilter queue (NFQUEUE) interface)

    4.eth1

    5.any (Pseudo-device that captures on all interfaces)

    6.lo [Loopback]


    Очень полезно для систем, в которых нет команды для вывода списка интерфейсов.

    Для захвата пакетов, проходящих через определенный интерфейс, используйте -i с именем интерфейса. Если не указать имя, тогда tcpdump подберет первый обнаруженный сетевой интерфейс.


    # tcpdump -i eth1

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

    listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes

    01:06:09.278817 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 1, length 64

    01:06:09.279374 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 4761, seq 1, length 64

    01:06:10.281142 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 2, length 64


    • -v увеличивает количество отображаемой информации о пакетах

    • -vv дает еще более подробную информацию


    По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов.

    • -n Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имени.

    # tcpdump –n

    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

    04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100

    04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0

    04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36

    04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0

    04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100

    #tcpdump -c 5

    04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100

    04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0

    04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36

    04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0

    04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100

    5 packets captured



    • -tttt для использования более удобных временных меток (по умолчанию используются временные метки Unix)

    # tcpdump –tttt


    2020-07-06 04:30:12.203638 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186734102:2186734138, ack 204107103, win 37232, length 36

    2020-07-06 04:30:12.203910 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0

    2020-07-06 04:30:12.204292 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 36:72, ack 1, win 37232, length 36

    2020-07-06 04:30:12.204524 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0

    2020-07-06 04:30:12.204658 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 72:108, ack 1, win 37232, length 36

    Фильтры tcpdump



    Фильтр выражений


    Фильтр выражений выбирает, какие заголовки пакетов будут отображаться. Если фильтры не применяются, отображаются все заголовки пакетов.


    Самые распространенные фильтры :

    • port

    • host

    • src

    • dst

    • tcp

    • udp

    • icmp

    Фильтр портов



    Фильт портов используется для просмотра пакетов, поступающих на определенный порт:

    # tcpdump -i eth1 -c 5 port 80

    23:54:24.978612 IP 10.0.0.1.53971 > 10.0.0.50.80: Flags [SEW], seq 53967733, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0

    23:54:24.978650 IP 10.0.0.50.80 > 10.0.0.1.53971: Flags [S.E], seq 996967790, ack 53967734, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0

    23:54:24.978699 IP 10.0.0.1.53972 > 10.0.0.50.80: Flags [SEW], seq 226341105, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0

    23:54:24.978711 IP 10.0.0.50.80 > 10.0.0.1.53972: Flags [S.E], seq 1363851389, ack 226341106, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0

    Фильтр хостов



    Для перехвата пакетов, приходящих или исходящих от определенного хоста. Например, IP-адрес 10.0.2.15:

    # tcpdump host 10.0.2.15


    03:48:06.087509 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 3862934963:3862934999, ack 65355639, win 37232, length 36

    03:48:06.087806 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0

    03:48:06.088087 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 36:72, ack 1, win 37232, length 36

    03:48:06.088274 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0

    03:48:06.088440 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 72:108, ack 1, win 37232, length 36


    Для перехвата пакетов определенных типов протоколов. Например, icmp, на интерфейсе eth1:


    # tcpdump -i eth1 icmp


    04:03:47.408545 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 75, length 64

    04:03:47.408999 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 75, length 64

    04:03:48.408697 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 76, length 64

    04:03:48.409208 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 76, length 64

    04:03:49.411287 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 77, length 64

    Комбинирование фильтров



    Фильтры можно комбинировать с помощью операторов:


    • AND

    • OR

    • NOT


    Это позволит писать команды, которые могут более точно изолировать пакеты. Например, пакеты с определенного IP-адреса и для определенного порта:


    # tcpdump -n -i eth1 src 10.0.0.1 and dst port 80


    00:18:17.155066 IP 10.0.0.1.54222 > 10.0.0.50.80: Flags [F.], seq 500773341, ack 2116767648, win 4117, options [nop,nop,TS val 257786173 ecr 5979014], length 0

    00:18:17.155104 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [S], seq 904045691, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 257786173 ecr 0,sackOK,eol], length 0

    00:18:17.157337 IP 10.0.0.1.54221 > 10.0.0.50.80: Flags [P.], seq 4282813257:4282813756, ack 1348066220, win 4111, options [nop,nop,TS val 257786174 ecr 5979015], length 499: HTTP: GET / HTTP/1.1

    00:18:17.157366 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [.], ack 1306947508, win 4117, options [nop,nop,TS val 257786174 ecr 5983566], length 0


    Если нужно перехватить все пакеты кроме ICMP, используем оператор NOT:

    # tcpdump -i eth1 not icmp

    Сохранение заголовков в файл



    Вывод tcpdump может довольно быстро перемещаться по экрану. В таких случаях можно сохранить заголовки пакетов в файле с опцией -w. Вывод сохраняется в файлы с расширением .pcap.


    Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap.


    # tcpdump -i eth1 -c 10 -w icmp.pcap


    tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes

    10 packets captured

    10 packets received by filter

    0 packets dropped by kernel


    Прочитать этот файл можно с помощью опции -r


    # tcpdump -i eth1 -c 10 -w icmp.pcap


    reading from file icmp.pcap, link-type EN10MB (Ethernet)

    05:33:20.852732 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 33, length 64

    05:33:20.853245 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 33, length 64

    05:33:21.852586 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 34, length 64

    05:33:21.853104 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 34, length 64

    05:33:22.852615 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 35, length 64


    написать администратору сайта