Маршрутизация в операционных системах Windows
Российский Интернет стремительно развивается, все больше людей получают доступ в Глобальную сеть, каналы связи расширяются, позволяя подключать больше абонентов. В мегаполисах, таких как Москва, Санкт-Петербург, Екатеринбург, Нижний Новгород и др., широко распространено подключение к Интернету через локальную сеть или DSL-модемы, а обычные модемы уже практически не используются. В таких сетях часто возникает проблема с маршрутизацией, поскольку существует разделение на локальный сегмент и на интернет-соединение (пользователь получает реальный внешний IP-адрес). В настоящей статье мы рассмотрим наиболее распространенные утилиты для работы с сетевой маршрутизацией, которые входят в стандартный пакет операционных систем на базе Windows.
Ping
Первая утилита, как ни странно, — это команда ping. Она позволяет определить наличие компьютера в сети, для чего посылает удаленному компьютеру эхо-ICMP-запросы. Если компьютер не блокирует входящие ICMP-пакеты (это позволяет сделать, например, встроенный брандмауэр Windows Firewall), то утилита подсчитывает время отклика от компьютера, а в случае отправки нескольких пакетов выдает суммарную статистику. Большинство внутренних роутеров, конечно же, не блокируют ICMP-запросы, поэтому с помощью этой команды можно определить, какой из узлов сети доступен. Рассмотрим эту утилиту подробнее.
Для вызова справки по возможным ключам запуска команды ping необходимо добавить ключ /?. Вызов утилиты ping лучше всего осуществлять из командной строки (cmd), которую, в свою очередь, можно вызвать через Пуск -> Выполнить -> cmd (в операционной системе Windows Vista функция Выполнить размещена в строке поиска, в самом низу меню Пуск).
По умолчанию команда ping отсылает четыре пакета к удаленному узлу и на основе данных, полученных в результате отправки, выдает статистическую информацию. Статистика наглядно показывает, сколько пакетов было потеряно и среднее время отправки (время отклика) в процентном соотношении, а также максимальные и минимальные величины. В тех случаях, когда происходят значительные потери пакетов в локальной сети, лучше всего использовать команду ping с ключом –t. При выполнении утилиты с этим ключом пакеты будут отсылаться постоянно, пока пользователь не прекратит ее работу. Остановить работу утилиты можно, одновременно нажав распространенную комбинацию клавиш Ctrl + C. Для вывода текущей статистики без прекращения работы утилиты используется сочетание клавиш Ctrl + Break. В таком случае пакеты будут продолжать отсылаться, а пользователь получит сводную статистику по уже отправленным пакетам.
Утилита ping также дает возможность задать количество пакетов, отправляемых удаленному узлу. Для этого необходимо выполнить команду ping с ключом –n x, где x — количество отправляемых пакетов. В свою очередь, при наличии такой возможности ключ –a позволяет определить доменное имя удаленного компьютера, если известен лишь его IP-адрес.
В некоторых случаях к узлу доходят пакеты маленького объема, а пакет большого объема теряется. По умолчанию утилита ping отсылает пакеты с размером буфера 32 байт. Этот объем можно изменять в пределах от 0 до 65 500. Для этого служит ключ –l x, где x — количество отправляемых узлу байт.
Также утилита ping позволяет задать параметр поля TTL (time-to-live) каждого пакета. Для этого служит ключ –i x, где x — время жизни пакета в диапазоне от 0 до 255. Команда ping дает возможность задать время ожидания отправленного пакета. Для этого необходимо запускать утилиту с параметром –w x, где x — время ожидания, которое задается в миллисекундах и может иметь практически неограниченную величину.
Теперь перейдем к самому главному. Утилита ping выдает не только статистику по количеству отправленных/полученных пакетов, но и приблизительный маршрут каждого из пакетов. Для этого при запуске утилиты нужно задать ключ –r x, где x — количество прыжков для пакета. Это значение для данной команды лежит в пределах от 0 до 10. После выполнения этой команды статистика будет содержать информацию по прыжкам для каждого отправленного пакета. Утилита также может показать штамп времени для каждого прыжка. Для активации этой функции необходимо запускать утилиту с параметром –s x, где x может принимать значения от 1 до 4.
Большинство функций отображения маршрута в утилите ping зависят от полученного ответа: если ответ от запрашиваемого компьютера не получен, пользователь не увидит никакой информации.
Отметим, что здесь не рассматриваются команды, которые относятся к протоколу IPv6, поскольку он до сих пор не нашел широкого применения, хотя его поддержка по умолчанию включена во все новейшие операционные системы.
Tracert
Следующая полезная команда — утилита tracert. Она позволяет осуществлять трассировку маршрута к конкретному узлу. По своим функциям эта утилита отличается от команды ping тем, что может отображать статистику в реальном времени и ей не требуется ответ от компьютера. То есть трассировка осуществляется даже в том случае, если компьютер недоступен. Утилита показывает все промежуточные звенья, которые встречаются на пути прохождения пакета. В своей статистике эта утилита указывает не только основные узлы, через которые проходит маршрут к заданному компьютеру, но и отображает среднее время отклика для каждого из узлов.
Использовать данную команду очень просто: достаточно в командной строке написать tracert ya.ru, где ya.ru может быть любым доменным именем или IP-адресом. В качестве дополнительных опций можно указать ключ –d, который запрещает обращаться к DNS-серверам и сопоставлять полученные в результате выполнения команды IP-адреса доменным именам, что может значительно повысить скорость работы программы. Также эта утилита позволяет выбирать маршрут из указанного списка, который должен находиться в файле, например txt. Кроме всего прочего, для трассировки маршрута возможно указание времени ожидания ответа от компьютера. Задается время параметром –w x, где x — время ожидания в миллисекундах. Для этой утилиты существуют и другие дополнительные опции, но все они относятся к новому, еще не получившему широкого распространения протоколу IPv6.
Pathping
Данная утилита представляет собой гибрид утилит tracert и ping. Ее основное отличие от tracert заключается в том, что она работает несколько быстрее, так как сначала отправляет запросы удаленному узлу, через который идет маршрут. При этом используется уже известный маршрут, а не прокладывается новый, как в утилите tracert. Программа tracert, наоборот, заново прокладывает маршрут, что занимает больше времени на сбор статистики. Утилита pathping первоначально выводит узлы, чрез которые проходит пакет до искомого компьютера, а затем собирает статистику по времени отклика от каждого узла и по времени доступа к удаленному узлу в целом. Отметим, что эта утилита поставляется в большинстве операционных систем Windows, однако в некоторых, например в Windows XP Home, отсутствует.
В остальном ее параметры ничем не отличаются от описанных ключей в утилите tracert. Ключ –n определяет работу утилиты только с IP-адресами, игнорируя сопоставление через DNS-имена для каждого хоста. Эта опция значительно увеличивает время сбора статистики.
Route
И наконец, одна из основополагающих утилит маршрутизации — команда route. С ее помощью пользователь может прописать, удалить или отредактировать все статические маршруты на используемом компьютере. Для вывода текущей таблицы маршрутизации необходимо выполнить в командной строке команду route print. В результате в виде таблицы будет выведена вся информация о текущих интерфейсах и таблица маршрутизации. Поскольку в этой статье мы рассматриваем только протокол IPv4, таблице маршрутизации для протокола IPv6 внимание уделяться не будет.
Для каждого из маршрутов, помимо назначения и шлюза, через который пакет от компьютера попадает к маршруту, в таблице маршрутизации есть такое понятие, как метрика. Метрика позволяет создать приоритет среди одинаковых маршрутов в зависимости от используемого интерфейса подключения. Например, есть VPN-подключение, которое выпускает компьютер в Интернет, и локальное подключение к сети. По умолчанию в операционной системе Windows приоритет, то есть метрика, подключения к VPN-серверу имеет меньшее значение, что подразумевает более высокий приоритет для прохождения пакета. Для VPN-подключения метрика маршрутов будет 25, а для локального соединения — 200. Соответственно если пакет не может достичь точки назначения при прохождении через VPN-канал, то он отправляется по интерфейсу, который имеет меньший приоритет (метрику).
Добавление маршрута осуществляется через команду:
route add ip mask gateway metric x if y,
где ip — адрес или сеть назначения, mask — маска подсети, gateway — шлюз, через который пакет будет идти к месту назначения, x — числовое значение метрики маршрута, y — порядковый номер интерфейса. Тут стоит обратить внимание на некоторые особенности. Шлюз gateway должен располагаться в той же подсети, что и сетевой адаптер, через который производится подключение. Если в качестве адреса назначения указывается конкретный IP-адрес, то можно не указывать маску подсети, так как она во всех случаях будет иметь вид 255.255.255.255. Отметим, что добавление ключа –p в конце строки означает, что маршрут будет прописан в качестве постоянного и останется в таблице маршрутизации даже после перезагрузки. Если интерфейс if не задан, система попытается определить наилучший интерфейс для добавляемого маршрута.
Удаление маршрута происходит через команду:
route delete ip,
где ip — адрес назначения, прописанный в таблице маршрутизации.
Модификация маршрута производится по команде:
route change ip mask gateway metric x if y,
где ip — адрес или сеть назначения, mask — маска подсети, gateway — шлюз, через который пакет будет идти к месту назначения, x — числовое значение метрики маршрута, а y — порядковый номер интерфейса. Модификация маршрута может производиться только в случае смены шлюза или/и метрики интерфейса.
С помощью команды route print 192.* будут выведены все маршруты, начинающиеся с IP-адресов 192.*.*.* Также можно вывести маршруты, относящиеся, например, к сети 192.168.192.0/24, — route print 192.168.192.*
Для полной очистки таблицы маршрутизации применяется команда route –f. Однако не следует злоупотреблять ею, поскольку в большинстве случаев после выполнения этой команды ваша сеть окажется неработоспособной.