Андрей Смирнов
Время чтения: ~19 мин.
Просмотров: 1

How to run tracetcp in windows and linux

Description

The Internet is a large and complex aggregation of network hardware, connected together by gateways. Tracking the route your packets follow (or finding a gateway that’s discarding your packets) can be difficult. The traceroute command utilizes the IP protocol «time to live» field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to some host.

The only mandatory parameter is the destination hostname or IP number. The default probe datagram length is 40 bytes, but this may be increased by specifying a packet size (in bytes) after the destination hostname.

traceroute attempts to trace the route an IP packet would follow to some Internet host by launching probe packets with a small ttl (time to live) then listening for an ICMP «time exceeded» reply from a gateway. It start its probes with a ttl of one and increases this by one until it gets an ICMP «port unreachable» (or TCP reset), which means we got to the «host», or hit a max (which defaults to 30 hops). Three probes (by default) are sent at each ttl setting and a line is printed showing the ttl, address of the gateway and round trip time of each probe. The address can be followed by additional information when requested. If the probe answers come from different gateways, the address of each responding system will be printed. If there is no response within a 5.0 seconds (default), an «*» (asterisk) is printed for that probe.

After the trip time, some additional annotation can be printed: !H, !N, or !P (host, network or protocol unreachable), !S (source route failed), !F (fragmentation needed), !X (communication administratively prohibited), !V (host precedence violation), !C (precedence cutoff in effect), or !<num> (ICMP unreachable code <num>). If almost all the probes result in some kind of unreachable, traceroute gives up and exit.

You don’t want the destination host to process the UDP probe packets, so the destination port is set to an unlikely value (you can change it with the -p flag). There is no such a problem for ICMP or TCP tracerouting (for TCP we use half-open technique, which prevents our probes to be seen by applications on the destination host).

In the modern network environment the traditional traceroute methods can not be always applicable, because of widespread use of firewalls. Such firewalls filter the «unlikely» UDP ports, or even ICMP echoes. To solve this, some additional tracerouting methods are implemented (including tcp); see below. Such methods try to use particular protocol and source/destination port, to bypass firewalls (to be seen by firewalls just as a start of allowed type of a network session).

Трассировка маршрута

Использование утилиты «Tracert».

Рассмотрим пример работы программы в операционной системе Windоws. Программа tracert выполняет отправку данных указанному узлу сети, при этом отображая сведения о всех промежуточных маршрутизаторах, через которые прошли данные на пути к целевому узлу. В случае проблем при доставке данных до какого-либо узла программа позволяет определить, на каком именно участке сети возникли неполадки. Здесь хочется отметить, что программа работает только в направлении от источника пакетов и является весьма грубым инструментом для выявления неполадок в сети. В силу особенностей работы протоколов маршрутизации в сети Интернет, обратные маршруты часто не совпадают с прямыми, причем это справедливо для всех промежуточных узлов в трейсе. Поэтому ICMP ответ от каждого промежуточного узла может идти своим собственным маршрутом, затеряться или прийти с большой задержкой, хотя в реальности с пакетами, которые адресованы конечному узлу, этого не происходит. Кроме того, на промежуточных маршрутизаторах часто стоит ограничение числа ответов ICMP в единицу времени, что приводит к появлению ложных потерь.
Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:

1. Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.

2. Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.

3. Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная строка.

Далее вам необходимо произвести трассировку до заданного ip адреса или доменного имени.

Использование утилиты «Pathping

PathPing предоставляет информацию о латентности сети и потерях данных на промежуточных узлах между исходным пунктом и пунктом назначения. Команда pathping в течение некоторого периода времени отправляет многочисленные сообщения с эхо-запросом каждому маршрутизатору, находящемуся между исходным пунктом и пунктом назначения, а затем на основании пакетов, полученных от каждого из них, вычисляет результаты. Поскольку pathping показывает коэффициент потери пакетов для каждого маршрутизатора или связи, можно определить маршрутизаторы или подсети, имеющие проблемы с сетью. Команда pathping выполняет эквивалентное команде tracert действие, идентифицируя маршрутизаторы, находящиеся на пути.

Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:

1. Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.

2. Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.

3. Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная

Внимание! Выполнение данной команды потребует некоторое время, необходимо дождаться полного выполнения, как указано в примере ниже

Копирование текста из командной строки.

Чтобы скопировать текст к кликаем правой кнопкой мышки по командной строке и вызываем контекстное меню. В открывшемся меню выбираем пункт «Пометить». После этого текст в командной строке можно выделить обычным движением мышкой и скопировать с помощь комбинации клавиш Ctrl+C.

Далее результаты необходимо будет переслать на электронный адрес почты 911@profintel.ru, с указанием вашего id номера и кратким описанием вашей проблемы.

What is Traceroute?

Traceroute is a monitoring command commonly used by network and system administrators in their day-to-day operations.

This basic network diagnostic tool has three primary objectives, which give you an accurate and complete understanding of a network problem.

With Traceroute, you can?

  1. Get the complete path that a packet uses to reach its destination.
  2. Discover the names and identity of routers and devices within the path.
  3. Find the time it took to send and receive data to each device on the path.

Traceroute gives you complete information about the path that your data will take to reach its destination, without actually sending data (other than ICMP).

For example, if the source of the path (your computer) is in Boston, Massachusetts and the destination in San Jose, California (a Server), Traceroute will identify the complete path, each hop (the computers, routers, or any devices that comes in between the source and the destination) on the path, and the time it takes to go and come back.

Команда strace Linux

Как я уже сказал, команда strace показывает все системные вызовы программы, которые та отправляет к системе во время выполнения, а также их параметры и результат выполнения. Но при необходимости можно подключиться и к уже запущенному процессу. Перед тем, как перейти к практике, разберём опции утилиты и её синтаксис:

$ strace опции команда аргументы

В самом простом варианте strace запускает переданную команду с её аргументами и выводит в стандартный поток ошибок все системные вызовы команды. Давайте разберём опции утилиты, с помощью которых можно управлять её поведением:

  • -i — выводить указатель на инструкцию во время выполнения системного вызова;
  • -k — выводить стек вызовов для отслеживаемого процесса после каждого системного вызова;
  • -o — выводить всю информацию о системных вызовах не в стандартный поток ошибок, а в файл;
  • -q — не выводить сообщения о подключении о отключении от процесса;
  • -qq — не выводить сообщения о завершении работы процесса;
  • -r — выводить временную метку для каждого системного вызова;
  • -s — указать максимальный размер выводимой строки, по умолчанию 32;
  • -t — выводить время суток для каждого вызова;
  • -tt — добавить микросекунды;
  • -ttt — добавить микросекунды и количество секунд после начала эпохи Unix;
  • -T — выводить длительность выполнения системного вызова;
  • -x — выводить все не ASCI-строки в шестнадцатеричном виде;
  • -xx — выводить все строки в шестнадцатеричном виде;
  • -y — выводить пути для файловых дескрипторов;
  • -yy — выводить информацию о протоколе для файловых дескрипторов;
  • -c — подсчитывать количество ошибок, вызовов и время выполнения для каждого системного вызова;
  • -O — добавить определённое количество микросекунд к счетчику времени для каждого вызова;
  • -S — сортировать информацию выводимую при опции -c. Доступны поля time, calls, name и nothing. По умолчанию используется time;
  • -w — суммировать время между началом и завершением системного вызова;
  • -e — позволяет отфильтровать только нужные системные вызовы или события;
  • -P — отслеживать только системные вызовы, которые касаются указанного пути;
  • -v — позволяет выводить дополнительную информацию, такую как версии окружения, статистику и так далее;
  • -b — если указанный системный вызов обнаружен, трассировка прекращается;
  • -f — отслеживать также дочерние процессы, если они будут созданы;
  • -ff — если задана опция -o, то для каждого дочернего процесса будет создан отдельный файл с именем имя_файла.pid.
  • -I — позволяет блокировать реакцию на нажатия Ctrl+C и Ctrl+Z;
  • -E — добавляет переменную окружения для запускаемой программы;
  • -p — указывает pid процесса, к которому следует подключиться;
  • -u — запустить программу, от имени указанного пользователя.

Вы знаете основные опции strace, но чтобы полноценно ею пользоваться, нужно ещё разобраться с системными вызовами, которые используются чаще всего. Мы не будем рассматривать все, а только основные. Многие из них вы уже и так знаете, потому что они называются так же, как и команды в терминале:

  • fork — создание нового дочернего процесса;
  • read — попытка читать из файлового дескриптора;
  • write — попытка записи в файловый дескриптор;
  • open — открыть файл для чтения или записи;
  • close — закрыть файл после чтения или записи;
  • chdir — изменить текущую директорию;
  • execve — выполнить исполняемый файл;
  • stat — получить информацию о файле;
  • mknod — создать специальный файл, например, файл устройства или сокет;

А теперь разберём примеры strace Linux.

Linux команды консоли для работы с текстом

19. more / less

Это две простенькие команды терминала для просмотра длинных текстов, которые не вмещаются на одном экране. Представьте себе очень длинный вывод команды. Или вы вызвали cat для просмотра файла, и вашему эмулятору терминала потребовалось несколько секунд, чтобы прокрутить весь текст. Если ваш терминал не поддерживает прокрутки, вы можете сделать это с помощью less. Less новее, чем more и поддерживает больше опций, поэтому использовать more нет причин.

20. head / tail

Ещё одна пара, но здесь у каждой команды своя область применения. Head выводит несколько первых строк из файла (голова), а tail выдает несколько последних строк (хвост). По умолчанию каждая утилита выводит десять строк. Но это можно изменить с помощью опции -n. Ещё один полезный параметр -f, это сокращение от follow (следовать). Утилита постоянно выводит изменения в файле на экран. Например, если вы хотите следить за лог файлом, вместо того, чтобы постоянно открывать и закрывать его, используйте команду tail -nf.

21. grep

Grep, как и другие инструменты Linux, делает одно действие, но делает его хорошо: она ищет текст по шаблону. По умолчанию она принимает стандартный ввод, но вы можете искать в файлах. Шаблон может быть строкой или регулярным выражением. Она может вывести как совпадающие, так и не совпадающие строки и их контекст. Каждый раз, когда вы выполняете команду, которая выдает очень много информации, не нужно анализировать всё вручную — пусть grep делает свою магию.

22. sort

Сортировка строк текста по различным критериям. Наиболее полезные опции: -n (Numeric), по числовому значению, и -r (Reverse), которая переворачивает вывод. Это может быть полезно для сортировки вывода du. Например, если хотите отсортировать файлы по размеру, просто соедините эти команды.

24. diff

Показывает различия между двумя файлами в построчном сравнении. Причём выводятся только строки, в которых обнаружены отличия. Измененные строки отмечаются символом «с», удалнные — «d», а новые — «а».

Кстати, я подготовил ещё одну подробную статью, в которой описан именно просмотр содержимого текстового файла в Linux c помощью терминала.

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

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

laura@debian7:~$ whoami
laura
laura@debian7:~$ echo $USER
laura

2. Выведите список всех пользователей, осуществивших вход в систему.

laura@debian7:~$ who
laura     pts/0        2014-10-13 07:22 (10.104.33.101)
laura@debian7:~$

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

laura@debian7:~$ w
 07:47:02 up 16 min,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.104.33.101    07:30    6.00s  0.04s  0.00s w
root     pts/1    10.104.33.101    07:46    6.00s  0.01s  0.00s sleep 42
laura@debian7:~$

4. Выведите информацию об имени вашей учетной записи и вашем уникальном идентификаторе пользователя (userid).

laura@debian7:~$ id
uid=1005(laura) gid=1007(laura) группы=1007(laura)
laura@debian7:~$

5. Используйте утилиту для перехода к использованию учетной записи другого пользователя (если вы не используете учетную запись пользователя root, вам потребуется пароль от учетной записи другого пользователя). После этого вернитесь к использованию предыдущей учетной записи.

laura@debian7:~$ su tania
Password:
tania@debian7:/home/laura$ id
uid=1006(tania) gid=1008(tania) группы=1008(tania)
tania@debian7:/home/laura$ exit
laura@debian7:~$

6. А теперь используйте команду для перехода к использованию учетной записи другого пользователя и отметьте различия.

Учтите, что команда переместит вас в домашнюю директорию другого пользователя (в примере это пользователь ).

laura@debian7:~$ su - tania
Password:
tania@debian7:~$ pwd
/home/tania
tania@debian7:~$ logout
laura@debian7:~$

7. Попробуйте создать новую учетную запись пользователя (используя для этого вашу обычную учетную запись). Попытка должна завершиться неудачей. (Подробности процесса добавления учетных записей пользователей описаны в следующей главе.)

laura@debian7:~$ useradd valentina
-su: useradd: command not found
laura@debian7:~$ /usr/sbin/useradd valentina
useradd: Отказано в доступе.
useradd: cannot lock /etc/passwd; try again later.

Вполне возможно, что утилита будет расположена по пути в файловой системе вашего компьютера.

8. А теперь попытайтесь сделать то же самое, но добавив вызов утилиты перед вашей командой.

laura@debian7:~$ sudo /usr/sbin/useradd valentina
 password for laura:
laura is not in the sudoers file.  This incident will be reported.
laura@debian7:~$

Обратите внимание на то, что пользователь не имеет разрешения на использование утилиты в данной системе.

Предыдущий раздел:ОглавлениеСледующий раздел:
Глава 24. Дополнительная информация о сценариях   Глава 26. Управление учетными записями пользователей

NOTES top

       To speed up work, normally several probes are sent simultaneously.
       On the other hand, it creates a "storm of packages", especially in
       the reply direction. Routers can throttle the rate of icmp responses,
       and some of replies can be lost. To avoid this, decrease the number
       of simultaneous probes, or even set it to 1 (like in initial
       traceroute implementation), i.e.  -N 1

       The final (target) host can drop some of the simultaneous probes, and
       might even answer only the latest ones. It can lead to extra "looks
       like expired" hops near the final hop. We use a smart algorithm to
       auto-detect such a situation, but if it cannot help in your case,
       just use -N 1 too.

       For even greater stability you can slow down the program's work by -z
       option, for example use -z 0.5 for half-second pause between probes.

       To avoid an extra waiting, we use adaptive algorithm for timeouts
       (see -w option for more info). It can lead to premature expiry
       (especially when response times differ at times) and printing "*"
       instead of a time. In such a case, switch this algorithm off, by
       specifying -w with the desired timeout only (for example, -w 5).

       If some hops report nothing for every method, the last chance to
       obtain something is to use ping -R command (IPv4, and for nearest 8
       hops only).

Traceroute Command Syntax and Options (for Windows)

The tracert (for windows) command is available at the Command Prompt in all Windows operating systems including Windows 10, Windows 8, Windows 7, Windows XP, Windows Vista, and older versions of Windows as well.

The tracert command syntax is given below:

tracert       target 

Below is a brief description with each tracert option in Windows…

OptionDescription
-dThis tracert option prevents tracert from resolving IP addresses to hostnames, often resulting in much faster results.
-h MaxHopsThis option specifies the maximum number of hops in the search for the target. If you do not specify MaxHops, and a target has not been found by the default max hops (30 for Windows), tracert will stop looking.
-w TimeOutUsing this tracert option, you can specify the time, in milliseconds, to allow each reply before timeout.
-4It forces tracert to use IPv4 only.
-6It forces tracert to use IPv6 only.
TargetA mandatory option. It is used to specify the destination, either an IP address or hostname.
/?Use the help switch with the tracert command to show detailed help about the command’s multiple options.

Как посмотреть таблицу маршрутизации

Перед тем как что-либо менять, нужно понять какие правила уже используются. В Linux для этого существует несколько команд. Чтобы посмотреть таблицу маршрутизации можно использовать команду route:

Вот так выглядит таблица маршрутизации linux. Тут выводится достаточно простая информация, которой не всегда достаточно чтобы понять суть дела. Более подробно можно посмотреть с помощью команды routel:

Тут вы уже можете видеть IP адрес цели (target), IP адрес шлюза (gateway), IP отправителя (source), протокол, и даже сетевой интерфейс. Но самый удобный способ посмотреть таблицу маршрутизации linux — это команда ip:

Вывод похож на результат предыдущей команды, но выглядит не совсем привычно, это потому, что вывод команды можно использовать в качестве аргумента для ip route add или ip route del. Это очень удобно. Как вы видите, в качестве шлюза по умолчанию везде используется 192.168.1.1. Рассмотрим подробнее что означает вывод этой команды:

  • default — в данной строке означает вариант по умолчанию. Здесь должен быть ip адрес цели или маска подсети;
  • via 192.168.1.1 — указывает через какой шлюз мы можем добраться до этой цели, у нас это 192.168.1.1;
  • dev enp2s0 — сетевой интерфейс, с помощью которого будет доступен этот шлюз;
  • proto static — означает, что маршрут был установлен администратором, значение kernel значит что он был установлен ядром;
  • metric — это приоритет маршрута, чем меньше значение — тем выше приоритет.

А теперь рассмотрим выполняется настройка маршрутов Linux.

Таблицы маршрутизации

Вывести таблицы маршрутизации. Ядро принимает решение о применении той или иной таблицы на основании адреса источника пакета. Эти таблицы применимы для всех пакетов.

# ip rule list
0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

Вывести содержимое таблицы local.

# ip route show table local

Таблица local. Пакет при выборе пути к месту назначения проверяется правилом с наименьшим приоритетом. Правило 0 отправит поиск маршрута в таблицу «local».

Таблица local проверяет не адресован ли пакет локальной машине (широковещательный или сетевой адреса интерфейсов). Таблицу local автоматически заполняют команды конфигурации сетевых интерфейсов.

  • Таблица main — является основной и именно она используется, если в команде, связанной с маршрутизацией, не указано какую таблицу использовать. При поднятии интерфейсов в неё прописываются маршруты к подсетям интерфейсов, стартовые скрипты также заносят в эту таблицу значение шлюза по-умолчанию. Использование команды route add администратором также может дополнить таблицу маршрутами. В общем случае, таблица main всегда содержит подходящий для пакета маршрут (например шлюз по-умолчанию).
  • Таблица default изначально пуста.
  • Модификация таблицы маршрутизации:
    Добавление маршрута через шлюз: ip route add 172.16.10.0/24 via 192.168.1.1
    Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0
    Маршрут с метрикой: ip route add 172.16.10.0/24 dev eth0 metric 100

    Кроме add также поддерживаются и другие действия: del — удалить маршрут; replace — заменить маршрут другим; change — изменить параметры маршрута.

Policy-Routing. Маршрутизация для двух ISP

  • Статическая маршрутизация в Linux

  • Роутинг и policy-routing в Linux при помощи iproute2

  • Принцип работы Routing Policy DataBase

Пример 1. Создание таблицы для маршрутизации пакетов с определенного IP- адреса. Локальная сеть 10.26.95.0/24 имеет выход в Интернет с двух разных провайдеров – основной ISP1 (статика) и резервный ISP2 (Настройка DHCP сервера Linux, FreeBSD).

В файле /etc/iproute2/rt_tables для удобства задаются символьные имена таблиц, это не обязательно так как все таблицы имеют цифровые идентификаторы. Напримерecho ’82 velton’ >> /etc/iproute2/rt_tables

  • Маршрут по умолчанию для таблицы ’82 velton’
    ip route add default via 82.117.232.1 table 82
  • Внесем правила маршрутизация для пользователя с IP 10.26.95.5, после чего эта таблица станет доступна в выводе команды ip rule list. Теперь все пользователи шлют пакеты через ISP1, кроме пользователя с IP 10.26.95.251
    ip rule add from 10.26.95.25132 table 82
  • Очистить кеш маршрутизатора для вступления в силу сделанных изменений
    ip route flush cache

Пример 2. Создание таблицы для маршрутизации, когда часть сетей (AS) нужно маршрутизировать через резервного провайдер ISP2. Например, это может быть дешевая точка обменом трафика или ресурсы провайдера.

  • Создаем как в предыдущем примере маршрут по умолчанию для таблицы ’82 velton’
    ip route add default via 82.117.232.1 table 82
  • Прописываем статические маршруты на сети ISP2
    ip route add 82.117.224.019 via 82.117.234.15
    ip route add 85.90.192.019 via 82.117.234.15
  • Добавим rule для всех сетей
    ip rule add to 82.117.224.019 table 82
    ip rule add to 85.90.192.019 table 82
  • Очистить кеш маршрутизатора для вступления в силу сделанных изменений
    ip route flush cache

RemarksRemarks

  • Это средство диагностики определяет путь, полученный к назначению, отправляя сообщения эхо-запросов ICMP с различными значениями срока жизни (TTL) назначения.This diagnostic tool determines the path taken to a destination by sending ICMP echo Request messages with varying time to Live (TTL) values to the destination. Каждый маршрутизатор по пути должен уменьшить срок жизни в пакете IP по меньшей мере до 1 перед его пересылкой.Each router along the path is required to decrement the TTL in an IP packet by at least 1 before forwarding it. Фактически, TTL является максимальным счетчиком ссылок.Effectively, the TTL is a maximum link counter. Если срок жизни пакета достигнет значения 0, то ожидается, что маршрутизатор вернет сообщение об истечении времени ICMP на исходный компьютер.When the TTL on a packet reaches 0, the router is expected to return an ICMP time Exceeded message to the source computer. Трассировка определяет путь путем отправки первого сообщения эхо-запроса с TTL 1 и приращением TTL на 1 для каждой последующей передачи до тех пор, пока целевой объект не ответит или не будет достигнуто максимальное число прыжков.tracert determines the path by sending the first echo Request message with a TTL of 1 and incrementing the TTL by 1 on each subsequent transmission until the target responds or the maximum number of hops is reached. Максимальное число прыжков равно 30 по умолчанию и может быть указано с помощью параметра /h .The maximum number of hops is 30 by default and can be specified using the /h parameter. Путь определяется путем проверки превышения времени ICMP сообщений, возвращенных промежуточными маршрутизаторами, и сообщения эхо-ответа, возвращаемого назначением.The path is determined by examining the ICMP time Exceeded messages returned by intermediate routers and the echo Reply message returned by the destination. Однако некоторые маршрутизаторы не возвращают сообщения о превышении времени для пакетов с истекшими значениями TTL и невидимы для команды tracert.However, some routers do not return time Exceeded messages for packets with expired TTL values and are invisible to the tracert command. В этом случае для этого прыжка отображается строка звездочек (*).In this case, a row of asterisks (*) is displayed for that hop.
  • Для трассировки пути и обеспечения сетевой задержки и потери пакетов для каждого маршрутизатора и ссылки в пути используется команда pathping .To trace a path and provide network latency and packet loss for each router and link in the path, use the pathping command.
  • Эта команда доступна, только если протокол Internet Protocol (TCP/IP) установлен в качестве компонента в свойствах сетевого адаптера в окне Сетевые подключения.This command is available only if the Internet Protocol (TCP/IP) protocol is installed as a component in the properties of a network adapter in Network Connections.
Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации