Утилита route: определение маршрута прохождения пакетов ICMP
определение маршрута прохождения пакетов ICMP
TRACERT — определение маршрута прохождения пакетов ICMP
Команда TRACERT выполняет трассировку до точки назначения с помощью посылки адресату эхо-сообщений. Посылка осуществляется по протоколу Control Message Protocol (ICMP) с постоянным увеличением значений срока жизни пакетов (Time to Live, TTL).
Выведенный путь — это список ближайших интерфейсов маршрутизаторов, находящихся на пути между узлом источника и точкой назначения. Ближний интерфейс представляют собой интерфейс маршрутизатора, который является ближайшим к узлу отправителя на пути. Запущенная без параметров, команда tracert выводит справку.
Для проверки сети также можно воспользоваться командами:
- PING — основная TCP/IP-команда, используемая для устранения неполадки в соединении, проверки возможности доступа и разрешения имен;
- PATHPING — предоставляет информацию о латентности сети и потерях данных на промежуточных узлах.
Параметры и ключи утилиты TRACERT
tracert [-d] [-h максимальное_число_переходов] [-j список_узлов] [-w интервал [имя_конечного_компьютера]
- -d — Предотвращает попытки команды tracert разрешения IP-адресов промежуточных маршрутизаторов в имена. Увеличивает скорость вывода результатов команды tracert.
- -h максимальное_число_переходов — Задает максимальное количество переходов на пути при поиске конечного объекта. Значение по умолчанию равно 30.
- -j список_узов — Указывает для сообщений с эхо-запросом использование параметра свободной маршрутизации в заголовке IP с набором промежуточных мест назначения, указанных в списке_узлов. При свободной маршрутизации успешные промежуточные места назначения могут быть разделены одним или несколькими маршрутизаторами. Максимальное число адресов или имен в списке — 9. Список_адресов представляет набор IP-адресов (в точечно-десятичной нотации), разделенных пробелами.
- -w интервал — Определяет в миллисекундах время ожидания для получения эхо-ответов протокола ICMP или ICMP-сообщений об истечении времени, соответствующих данному сообщению эхо-запроса. Если сообщение не получено в течение заданного времени, выводится звездочка (*). Таймаут по умолчанию 4000 (4 секунды).
- имя_конечного_компьютера — Задает точку назначения, указанную IP-адресом или именем узла.
- -? — Отображает справку в командной строке по утилите tracert.
Примеры команды TRACERT
- Чтобы отобразить справку в командной строке по команде введите: tracert /?;
- Чтобы выполнить трассировку пути к узлу, введите команду: tracert ya.ru;
- Чтобы выполнить трассировку пути к узлу и предотвратить разрешение каждого IP-адреса в имя, введите: tracert -d ya.ru.
Видео — Работа с утилитой TRACERT
Маршруты в windows 7. Описание команды ROUTE
Для Windows XP/2000/2003
Вариант 1
Рассмотрим, например, домашнюю сеть со следующими данными:
— внутренний ip-адрес модема (default gateway
) — 192.168.1.1;
— маска подсети (subnet mask
) стандартная — 255.255.255.0;
— адрес VPN- сервера для примера — 10.1.1.1,
тогда для прописания статического маршрута в командной строке (Пуск
–> Выполнить
, или Ctrl+R
) набираем команду
route ADD -p 10.1.1.1 MASK 255.255.255.255 192.168.1.1 METRIC 1
и нажимаем «Ввод
«.
Готово!
Вариант 2
Создадим специальный файл, который при запуске автоматически зарегистрирует роуты в системе.
Нам понадобится текстовый документ (.txt). Для этого, например, жмем правой клавишей мыши по Рабочему столу
–> Создать
–> Текстовый документ.
В открывшемся документе пишем команду:
route.exe ADD –p 10.1.1.1 MASK 255.255.255.255 192.168.1.1 METRIC 1
и сохраняем документ: Файл –> Сохранить как:
Тип файла:
Все файлы
Имя:
atlant.bat
нажимаем кнопку «Сохранить
«.Осталось только запустить файл atlant.bat
. Готово!
Пояснения
:
route.exe
подпрограмма работы с маршрутами;
ADD
– команда для добавления маршрута на указанный адрес. У нас на 10.1.1.1;
-p
– этот ключ нужен, что бы сохранить маршрут. Если его не прописать, то после перезагрузки таблица маршрутов обнулится;
10.1.1.1
– адрес назначения;
MASK
– ставим этот параметр перед прописанием значения маски подсети;
192.168.1.1
– адрес основного шлюза. Чаще всего это ip-адрес модема;.
METRIC 1
– параметр, определяющий приоритет указанного выше шлюза. 1- наивысший приоритет (цена). Т.е. если бы в Вашей сети было несколько модемов, то нужно было бы каждому из них задать приоритет – на какой из модемов пакеты, не принадлежащие IP-диапазону Вашей сети, будут адресоваться в первую, вторую очередь и т.д.
Проверить прописанные маршруты можно командой route print
. Для этого заходим в командную строку (Пуск
–> Выполнить
–> cmd
–> Ok).
В открывшемся окне набираем команду route print
и нажимаем «Ввод
«.
Внимание!
Постоянные маршруты не следует путать с активными маршрутами (см. рис.)
Для удаления всех существующих постоянных маршрутов служит команда route -f
.
Для удаления какого-то конкретного постоянного маршрута служит команда route delete 10.1.1.1
(10.1.1.1 — указан в качестве примера).
Для Windows Vista
В Windows Vista таблица маршрутизации прописывается аналогично WinXP, однако только под Администратором. В Windows Vista нельзя настроить маршрутизацию из под режима обычного пользователя (даже если ваша учетная запись обладает полномочиями Администратора). Учетная запись администратора создается по умолчанию, но при обычной установке этой ОС она скрыта и отключена.
Запуск командной строки с правами администратора:Пуск
–> Поиск
–>
в поле поиска введите «cmd»
–>
на найденном файле «cmd.exe»
кликните правой клавишей мыши и выберите «Запуск от имени администратора».
Команда Route
выводит на экран все содержимое таблицы IP-маршрутизации и изменяет записи. Запущенная без параметров, команда route выводит справку.
Синтаксис параметры утилиты ROUTE
route [-f] [-p] [команда [конечная_точка] [шлюз] ] ]
- -f
— Очищает таблицу маршрутизации от всех записей, которые не являются узловыми маршрутами (маршруты с маской подсети 255.255.255.255), сетевым маршрутом замыкания на себя (маршруты с конечной точкой 127.0.0.0 и маской подсети 255.0.0.0) или маршрутом многоадресной рассылки (маршруты с конечной точкой 224.0.0.0 и маской подсети 240.0.0.0). При использовании данного параметра совместно с одной из команд (таких, как add, change или delete) таблица очищается перед выполнением команды.
- -p
— При использовании данного параметра с командой add указанный маршрут добавляется в реестр и используется для инициализации таблицы IP-маршрутизации каждый раз при запуске протокола TCP/IP.
- команда
— Указывает команду, которая будет запущена на удаленной системе. Возжожна одна из следующих команд: PRINT
— Печать маршрута, ADD
— Добавление маршрута, DELETE
— Удаление маршрута, CHANGE
— Изменение существующего маршрута.
- конечная_точка
— Определяет конечную точку маршрута. Конечной точкой может быть сетевой IP-адрес (где разряды узла в сетевом адресе имеют значение 0), IP-адрес маршрута к узлу, или значение 0.0.0.0 для маршрута по умолчанию.
- mask маска_сети
— Указывает маску сети (также известной как маска подсети) в соответствии с точкой назначения. Маска сети может быть маской подсети соответствующей сетевому IP-адресу, например 255.255.255.255 для маршрута к узлу или 0.0.0.0. для маршрута по умолчанию. Если данный параметр пропущен, используется маска подсети 255.255.255.255. Конечная точка не может быть более точной, чем соответствующая маска подсети. Другими словами, значение разряда 1 в адресе конечной точки невозможно, если значение соответствующего разряда в маске подсети равно 0.
- шлюз
— Указывает IP-адрес пересылки или следующего перехода, по которому доступен набор адресов, определенный конечной точкой и маской подсети. Для локально подключенных маршрутов подсети, адрес шлюза — это IP-адрес, назначенный интерфейсу, который подключен к подсети. Для удаленных маршрутов, которые доступны через один или несколько маршрутизаторов, адрес шлюза — непосредственно доступный IP-адрес ближайшего маршрутизатора.
- metric метрика
— Задает целочисленную метрику стоимости маршрута (в пределах от 1 до 9999) для маршрута, которая используется при выборе в таблице маршрутизации одного из нескольких маршрутов, наиболее близко соответствующего адресу назначения пересылаемого пакета. Выбирается маршрут с наименьшей метрикой. Метрика отражает количество переходов, скорость прохождения пути, надежность пути, пропускную способность пути и средства администрирования.
- if интерфейс
— Указывает индекс интерфейса, через который доступна точка назначения. Для вывода списка интерфейсов и их соответствующих индексов используйте команду route print. Значения индексов интерфейсов могут быть как десятичные, так и шестнадцатеричные. Перед шестнадцатеричными номерами вводится 0х. В случае, когда параметр if пропущен, интерфейс определяется из адреса шлюза.
Примеры команды Route
Сети для самых маленьких. Часть третья. Статическая маршрутизация / Хабр
Мальчик сказал маме: “Я хочу кушать”. Мама отправила его к папе.
Мальчик сказал папе: “Я хочу кушать”. Папа отправил его к маме.
Мальчик сказал маме: “Я хочу кушать”. Мама отправила его к папе.
И бегал так мальчик, пока в один момент не упал.
Что случилось с мальчиком? TTL кончился.
Итак, поворотный момент в истории компании “Лифт ми Ап”. Руководство понимает, что компания, производящая лифты, едущие только вверх, не выдержит борьбы на высококонкурентном рынке. Необходимо расширять бизнес. Принято решение о покупке двух заводов: в Санкт-Петербурге и Кемерово.
Нужно срочно организовывать связь до новых офисов, а у вас ещё даже локалка не заработала.
Сегодня:
1. Настраиваем маршрутизацию между вланами в нашей сети (InterVlan routing)
2. Пытаемся разобраться с процессами, происходящими в сети, и что творится с данными.
3. Планируем расширение сети (IP-адреса, вланы, таблицы коммутации)
4. Настраиваем статическую маршрутизацию и разбираемся, как она работает.
5. Используем L3-коммутатор в качестве шлюза
Содержание:
Чуточку практики для взбадривания.
В предыдущий раз мы настроили коммутаторы нашей локальной сети. На данный момент устройства разных вланов не видят друг друга. То есть фактически ФЭО и ПТО, например, находятся в совершенно разных сетях и не связаны друг с другом. Так же и серверная сеть существует сама по себе. Надо бы исправить эту досадную неприятность.
В нашей московской сети для маршрутизации между вланами мы будем использовать роутер cisco 2811. Иными словами он будет терминировать вланы. Кадры здесь заканчивают свою жизнь: из них извлекаются IP-пакеты, а заголовки канального уровня отбрасываются.
Процесс настройки маршрутизатора очень прост:
0) Сначала закончим с коммутатором msk-arbat-dsw1. На нём нам нужно настроить транковый порт в сторону маршрутизатора, чего мы не сделали в прошлый раз.
msk-arbat-dsw1(config)#interface FastEthernet0/24
msk-arbat-dsw1(config-if)# description msk-arbat-gw1
msk-arbat-dsw1(config-if)# switchport trunk allowed vlan 2-3,101-104
msk-arbat-dsw1(config-if)# switchport mode trunk
1) Назначаем имя маршрутизатора командой hostname, а для развития хорошего тона, надо упомянуть, что лучше сразу же настроить время на устройстве. Это поможет вам корректно идентифицировать записи в логах.
Router0#clock set 12:34:56 7 august 2012
Router0# conf t
Router0(config)#hostname msk-arbat-gw1
Желательно время на сетевые устройства раздавать через NTP (любую циску можно сделать NTP-сервером, кстати)
2) Далее переходим в режим настройки интерфейса, обращённого в нашу локальную сеть и включаем его, так как по умолчанию он находится в состоянии Administratively down.
msk-arbat-gw1(config)#interface fastEthernet 0/0
msk-arbat-gw1(config-if)#no shutdown
3) Создадим виртуальный интерфейс или иначе его называют подинтерфейс или ещё сабинтерфейс (sub-interface).
msk-arbat-gw1(config)#interface fa0/0.2
msk-arbat-gw1(config-if)#description Management
Логика тут простая. Сначала указываем обычным образом физический интерфейс, к которому подключена нужная сеть, а после точки ставим некий уникальный идентификатор этого виртуального интерфейса. Для удобства, обычно номер сабинтерфейса делают аналогичным влану, который он терминирует.
4) Теперь вспомним о стандарте 802.1q, который описывает тегирование кадра меткой влана. Следующей командой вы обозначаете, что кадры, исходящие из этого виртуального интерфейса будут помечены тегом 2-го влана. А кадры, входящие на физический интерфейс FastEthernet0/0 с тегом этого влана будут приняты виртуальным интерфейсом FastEthernet0/0.2.
msk-arbat-gw1(config-if)#encapsulation dot1Q 2
5) Ну и как на обычном физическом L3-интерфейсе, определим IP-адрес. Этот адрес будет шлюзом по умолчанию (default gateway) для всех устройств в этом влане.
msk-arbat-gw1(config-if)#ip address 172.16.1.1 255.255.255.0
Аналогичным образом настроим, например, 101-й влан:
msk-arbat-gw1(config)#interface FastEthernet0/0.101
msk-arbat-gw1(config-if)#description PTO
msk-arbat-gw1(config-if)#encapsulation dot1Q 101
msk-arbat-gw1(config-if)#ip address 172.16.3.1 255.255.255.0
и теперь убедимся, что с компьютера из сети ПТО мы видим сеть управления:
Работает и отлично, настройте пока все остальные интерфейсы. Проблем с этим возникнуть не должно.
Физика и логика процесса межвланной маршрутизации
Что происходит в это время с вашими данными?
Мы рассуждали в прошлый раз, что происходит, если вы пытаетесь связаться с устройством из той же самой подсети, в которой находитесь вы.
Под той же самой подсетью мы понимаем следующее.
Например, на вашем компьютере настроено следующее:
IP: 172.16.3.2
Mask: 255.255.255.0
GW: 172.16.3.1
Все устройства, адреса которых будут находиться в диапазоне 172.16.3.1-172.16.3.254 с такой же маской, как у вас будут являться членами вашей подсети. Что происходит с данными, если вы отправляет их на устройство с адресом из этого диапазона?
Повторим это с некоторыми дополнениями.
Для отправки данных они должны быть упакованы в Ethernet-кадр, в заголовок которого должен быть вставлен MAC-адрес удалённого устройства. Но откуда его взять?
Для этого ваш компьютер рассылает широковещательный ARP-запрос. В качестве IP-адреса узла назначения в IP-пакет с этим запросом будет помещён адрес искомого хоста. Сетевая карта при инкапсуляции указывает MAC-адрес FF:FF:FF:FF:FF:FF — это значит, что кадр предназначен всем устройствам. Далее он уходит на ближайший коммутатор и копии рассылаются на все порты нашего влана (ну, кроме, конечно, порта, из которого получен кадр). Получатели видят, что запрос широковещательный и они могут оказаться искомым хостом, поэтому извлекают данные из кадра. Все те устройства, которые не обладают указанным в ARP-запросе IP-адресом, просто игнорируют запрос, а вот устройство-настоящий получатель ответит на него и вышлет первоначальному отправителю свой MAC-адрес. Отправитель (в данном случае, наш компьютер) помещает полученный MAC в свою таблицу соответствия IP и MAC адресов ака ARP-кэш. Как выглядит ARP-кэш на вашем компьютере прямо сейчас, вы можете посмотреть с помощью команды arp -a
Потом ваши полезные данные упаковываются в IP-пакет, где в качестве получателя ставится тот адрес, который вы указали в команде/приложении, затем в Ethernet-кадр, в заголовок которого помещается полученный ARP-запросом MAC-адрес. Далее кадр отправляется на коммутатор, который согласно своей таблице MAC-адресов, решает, в какой порт его переправить дальше.
Но что происходит, если вы пытаетесь достучаться до устройства в другом влане? ARP-запрос ничего не вернёт, потому что широковещательные L2 сообщения кончаются на маршрутизаторе(т.е., в пределах широковещательного L2 домена), нужная сеть находится за ним, а коммутатор не пустит кадры из одного влана в порт другого. И вот для этого нужен шлюз по умолчанию (default gateway) на вашем компьютере.
То есть, если устройство-получатель в вашей же подсети, кадр просто отправляется в порт с мак-адресом конечного получателя. Если же сообщение адресовано в любую другую подсеть, то кадр отправляется на шлюз по умолчанию, поэтому в качестве MAC-адреса получателя подставится MAC-адрес маршрутизатора.
Проследим за ходом событий.
1) ПК с адресом 172.16.3.2/24 хочет отправить данные компьютеру с адресом 172.16.4.5.
Он видит, что адрес из другой подсети, следовательно, данные должны уйти на шлюз по умолчанию. Но в таком случае, ПК нужен MAC-адрес шлюза. ПК проверяет свой ARP-кэш в поисках соответствия IP-адрес шлюза — MAC-адрес и не находит нужного
2) ПК отправляет широковещательный ARP-запрос в локальную сеть. Структура ARP-запроса:
— на канальном уровне в качестве получателя — широковещательный адрес ( FF:FF:FF:FF:FF:FF), в качестве отправителя — MAC-адрес интерфейса устройства, пытающегося выяснить IP
— на сетевом — собственно ARP запрос, в нем содержится информация о том, какой IP и кем ищется.
3) Коммутатор, на который попал кадр, рассылает его копии во все порты этого влана (того, которому принадлежит изначальный хост), кроме того, откуда он получен.
4) Все устройства, получив этот кадр и, видя, что он широковещательный, предполагают, что он адресован им.
5) Распаковав кадр, все хосты, кроме маршрутизатора, видят, что в ARP-запросе не их адрес. А маршрутизатор посылает unicast’овый ARP-ответ со своим MAC-адресом.
6) Изначальный хост получает ARP-ответ, теперь у него есть MAC-адрес шлюза. Он формирует пакет из тех данных, что ему нужно отправить на 172.16.4.5. В качестве MAC-адреса получателя ПК ставит адрес шлюза. При этом IP-адрес получателя в пакете остаётся 172.16.4.5
7) Кадр посылается в сеть, коммутаторы доставляют его на маршрутизатор.
8) На маршрутизаторе, в соответствии с меткой влана, кадр принимается конкретным сабинтерфейсом. Данные канального уровня откидываются.
9) Из заголовка IP-пакета, рутер узнаёт адрес получателя, а из своей таблицы маршрутизации видит, что тот находится в непосредственно подключенной к нему сети на определённом сабинтерфейсе (в нашем случае FE0/0.102).
C 172.16.0.0/24 is directly connected, FastEthernet0/0.3
C 172.16.1.0/24 is directly connected, FastEthernet0/0.2
C 172.16.2.16/30 is directly connected, FastEthernet0/1.5
C 172.16.3.0/24 is directly connected, FastEthernet0/0.101
C 172.16.4.0/24 is directly connected, FastEthernet0/0.102
C 172.16.5.0/24 is directly connected, FastEthernet0/0.103
C 172.16.6.0/24 is directly connected, FastEthernet0/0.104
10) Маршрутизатор отправляет ARP-запрос с этого сабинтерфейса — узнаёт MAC-адрес получателя.
11) Изначальный IP-пакет, не изменяясь инкапсулируется в новый кадр, при этом:
— в качестве MAC-адреса источника указывается адрес интерфейса шлюза
— IP-адрес источника — адрес изначального хоста (в нашем случае 172.16.3.2)
— в качестве MAC-адреса получателя указывается адрес конечного хоста
— IP-адрес получателя — адрес конечного хоста (в нашем случае 172.16.4.5)
и отправляется в сеть с сабинтерфейса FastEthernet0/0.102, получая при этом метку 102-го влана.
12) Кадр доставляется коммутаторами до хоста-получателя.
Теперь обратимся к планированию. В нулевой части мы уже затронули эту тему, но тогда речь была только о двух офисах в Москве, теперь же сеть растёт.
Будет она вот такой:
То есть прибавляются две точки в Санкт-Петербурге: небольшой офис на Васильевском острове и сам завод в Озерках — и одна в Кемерово в районе Красная горка.
Для простоты у нас будет один провайдер “Балаган Телеком”, который на выгодных условиях предоставит нам L2VPN до обеих точек.
В одном из следующих выпусков мы тему различных вариантов подключения раскроем в красках. А пока вкратце: L2VPN — это, очень грубо говоря, когда вам провайдер предоставляет влан от точки до точки (можно для простоты представить, что они включены в один коммутатор).
Следует сказать несколько слов об IP-адресации и делении на подсети.
В нулевой части мы уже затронули вопросы планирования, весьма вскользь надо сказать.
Вообще, в любой более или менее большой компании должен быть некий регламент — свод правил, следуя которому вы распределяете IP-адреса везде. Сеть у нас сейчас разрастается и разработать его очень важно.
Ну вот к примеру, скажем, что для офисов в других городах это будет так:
Это весьма упрощённый регламент, но теперь мы во всяком случае точно знаем, что у шлюза всегда будет 1-й адрес, до 12-го мы будем выдавать коммутаторам и всяким wi-fi-точкам, а все сервера будем искать в диапазоне 172.16.х.13-172.16.х.23. Разумеется, по своему вкусу вы можете уточнять регламент вплоть до адреса каждого сервера, добавлять в него правило формирования имён устройств, доменных имён, политику списков доступа и т.д.
Чем точнее вы сформулируете правила и строже будете следить за их выполнением, тем проще разбираться в структуре сети, решать проблемы, адаптироваться к ситуации и наказывать виновных.
Это примерно, как схема запоминания паролей: когда у вас есть некое правило их формирования, вам не нужно держать в голове несколько десятков сложнозапоминаемых паролей, вы всегда можете их вычислить.
Вот так же и тут. Я некогда работал в средних размеров холдинге и знал, что если я приеду в офис где-нибудь в забытой коровами деревне, то там точно x.y.z.1 — это циска, x.y.z.2 — дистрибьюшн-свитч прокурва, а x.y.z.101 — компьютер главного бухгалтера, с которого надо дать доступ на какой-нибудь контур-экстерн. Другой вопрос, что надо это ещё проверить, потому что местные ИТшники такого порой наворотят, что слезами омываешься сквозь смех.
Было дело парнишка решил сам управлять всем доступом в интернет (обычно это делал я на маршрутизаторе). Поставил proxy-сервер, случайно поднял на нём NAT и зарулил туда трафик локальной сети, на всех машинах прописав его в качестве шлюза по умолчанию, а потом я минут 20 разбирался, как так: у них всё работает, а мы их не видим.
IP-план
Теперь нам было бы весьма кстати составить IP-план. Будем исходить из того, что на всех трёх точках мы будем использовать стандартную сеть с маской 24 бита (255.255.255.0) Это означает, что в них может быть 254 устройства.
Почему это так? И как вообще понять все эти маски подсетей? В рамках одной статьи мы не сможем этого рассказать, иначе она получится длинная, как палуба Титаника и запутанная, как одесские катакомбы. Крайне рекомендуем очень плотно познакомиться с такими понятиями, как IP-адрес, маска подсети, их представления в двоичном виде и CIDR (Classless InterDomain Routing) самостоятельно. Мы же далее будем только аргументировать выбор конкретного размера сети. Как бы то ни было, полное понимание придёт только с практикой.
Вообще, очень неплохо эта тема раскрыта в этой статье: http://habrahabr.ru/post/129664/
В данный момент (вспомним нулевой выпуск) у нас в Москве использованы адреса 172.16.0.0-172.16.6.255. Предположим, что сеть может ещё увеличиться здесь, допустим, появится офис на Воробьёвых горах и зарезервируем ещё подсети до 172.16.15.0/24 включительно.
Все эти адреса: 172.16.0.0-172.16.15.255 — можно описать так: 172.16.0.0/20. Эта сеть (с префиксом /20) будет так называемой суперсетью, а операция объединения подсетей в суперсети называется суммированием подсетей (суммированием маршрутов, если быть точным, route summarization)
Очень наглядный IP-калькулятор. Я и сейчас им периодически пользуюсь, хотя со временем приходит интуитивное и логическое понимание соответствия между длиной маски и границами сети.
Теперь обратимся к Питеру. В данный момент в этом прекрасном городе у нас 2 точки и на каждой из них подсети /24. Допустим это будут 172.16.16.0/24 и 172.16.17.0/24. Зарезервируем адреса 172.16.18.0-172.16.23.255 для возможного расширения сети.
172.16.16.0-172.16.23.255 можно объединить в 172.16.16.0/21 — в общем-то исходя именно из этого мы и оставляем в резерв именно такой диапазон.
В Кемерово нам нет смысла оставлять такие огромные запасы /21, как в Питере (2048 адресов или 8 подсетей /24), или тем более /20, как в Москве (4096 или 16 подсетей /24). А вот 1024 адреса и 4 подсети /24, которым соответствует маска /22 вполне рационально.
Таким образом сеть 172.16.24.0/22 (адреса 172.16.24.0-172.16.27.255) будет у нас для Кемерово.
Тут надо бы заметить: делать такой запас в общем-то необязательно и то, что мы зарезервировали вполне можно использовать в любом другом месте сети. Нет табу на этот счёт. Однако в крупных сетях именно так и рекомендуется делать и связано это с количеством информации в таблицах маршрутизации.
Понимаете ли дело вот в чём: если у вас несколько подряд идущих подсетей разбросаны по разным концам сети, то каждой из них соответствует одна запись в таблице маршрутизации каждого маршрутизатора. Если при этом вы вдруг используете только статическую маршрутизацию, то это ещё колоссальный труд по настройке и отслеживанию корректности настройки.
А если же они у вас все идут подряд, то несколько маленьких подсетей вы можете суммировать в одну большую.
Поясним на примере Санкт-Петербурга. При настройке статической маршрутизации мы могли бы делать так:
ip route 172.16.16.0 255.255.255.0 172.16.2.2
ip route 172.16.17.0 255.255.255.0 172.16.2.2
ip route 172.16.18.0 255.255.255.0 172.16.2.2
……
ip route 172.16.23.0 255.255.255.0 172.16.2.2
Это 8 команд и 8 записей в таблице. Но при этом пришедший на маршрутизатор пакет в любую из сетей 172.16.16.0/21 в любом случае будет отправлен на устройство с адресом 172.16.2.2.
Вместо этого мы поступим так:
ip route 172.16.16.0 255.255.248.0 172.16.2.2
И вместо восьми возможных сравнений будет только одно.
Для современных устройств ни в плане процессорного времени ни использования памяти это уже не является существенной нагрузкой, однако такое планирование считается правилами хорошего тона и в конечном итоге вам же самим проще разобраться.
Но, положа руку на сердце, такое планирование скорее исключение, нежели правило: так или иначе фрагментация маршрутов с ростом сети неизбежна.
Теперь ещё несколько слов о “линковых” сетях. В среде сетевых администраторов так называются сети точка-точка (Point-to-Point) между двумя маршрутизаторами.
Вот опять же в примере с Питером. Два маршрутизатора (в Москве и в Петербурге) соединены друг с другом прямым линком (неважно, что у провайдера это сотня коммутаторов и маршрутизаторов — для нас это просто влан). То есть кроме вот этих 2-х устройств здесь не будет никаких других. Мы знаем это наверняка. В любом случае на интерфейсах обоих устройств (смотрящих в сторону друг друга) нужно настраивать IP-адреса. И нам точно незачем назначать на этом участке сеть /24 с 254 доступными адресами, ведь 252 в таком случае пропадут почём зря. В этом случае есть прекрасный выход — бесклассовая IP-адресация.
Почему она бесклассовая? Если вы помните, то в нулевой части мы говорили о трёх классах подсетей: А, В и С. По идее только их вы и могли использовать при планировании сети. Бесклассовая междоменная маршрутизация (CIDR) позволяет очень гибко использовать пространство IP-адресов.
Мы просто берём сеть с самой маленькой возможной маской — 30 (255.255.255.252) — это сеть на 4 адреса. Почему мы не можем взять сеть с ещё более узкой маской? Ну 32 (255.255.255.255) по понятными причинам — это вообще один единственный адрес, сеть 31 (255.255.255.254) — это уже 2 адреса, но один из них (первый) — это адрес сети, а второй (последний) — широковещательный. В итоге на адреса хостов у нас и не осталось ничего. Поэтому и берём маску 30 с 4 адресами и тогда как раз 2 адреса остаются на наши два маршрутизатора.
Вообще говоря, самой узкой маской для подсетей в cisco таки является /31. При определённых условиях их можно использовать на P-t-P-линках.
Что же касается маски /32, то такие подсети, которые суть один единственный хост используются для назначения адресов Loopback-интерфейсам.
Именно так мы и поступим. Для этого, собственно, в нулевой части мы и оставили сеть 172.16.2.0/24 — её мы будем дробить на мелкие сетки /30. Всего их получится 64 штуки, соответственно можно назначить их на 64 линка.
Здесь мы поступили так же, как и в предыдущем случае: сделали небольшой резерв для Питера, и резерв для Кемерово. Вообще резерв — это всегда очень хорошо о чём бы мы ни говорили. 😉
Перед началом настройки стоит определиться с тем, для чего нужна маршрутизация вообще.
Рассмотрим такую сеть:
Вот к примеру с компьютера ПК1 — 172.16.3.2 я хочу подключиться по telnet к L3-коммутатору с адресом 172.16.17.1.
Как мой компьютер узнает что делать? Куда слать данные?
1) Как вы уже знаете, если адрес получателя из другой подсети, то данные нужно отправлять на шлюз по умолчанию.
2) По уже известной вам схеме компьютер с помощью ARP-запроса добывает MAC-адрес маршрутизатора.
3) Далее он формирует кадр с инкапсулированным в него пакетом и отсылает его в порт. После того, как кадр отправлен, компьютеру уже по барабану, что происходит с ним дальше.
4) А сам кадр при этом попадает сначала на коммутатор, где решается его судьба согласно таблице MAC-адресов. А потом достигает маршрутизатора RT1.
5) Поскольку маршрутизатор ограничивает широковещательный домен — здесь жизнь этого кадра и заканчивается. Циска просто откидывает заголовок канального уровня — он уже не пригодится — извлекает из него IP-пакет.
6) Теперь маршрутизатор должен принять решение, что с ним делать дальше. Разумеется, отправить его на какой-то свой интерфейс. Но на какой?
Для этого существует таблица маршрутизации, которая есть на любом рутере. Выяснить, что у нас в данный момент находится в таблице маршрутизации, можно с помощью команды show ip route:
172.16.0.0/16 is variably subnetted, 10 subnets, 3 masks
C 172.16.3.0/24 is directly connected, FastEthernet0/0.101
C 172.16.2.0/30 is directly connected, FastEthernet0/1.4
S 172.16.17.0/24 [1/0] via 172.16.2.2
Каждая строка в ней — это способ добраться до той или иной сети.
Вот к примеру, если пакет адресован в сеть 172.16.17.0/24, то данные нужно отправить на устройство с адресом 172.16.2.2.
Таблица маршрутизации формируется из:
— непосредственно подключенных сетей (directly connected) — это сети, которые начинаются непосредственно на нём. В примере 172.16.3.0/24 и 172.16.2.0/30. В таблице они обозначаются буквой C
— статический маршруты — это те, которые вы прописали вручную командой ip route. Обозначаются буквой S
— маршруты, полученные с помощью протоколов динамической маршрутизации (OSPF, EIGRP, RIP и других).
7) Итак, данные в сеть 172.16.17.0 (а мы хотим подключиться к устройству 172.16.17.1) должны быть отправлены на следующий хоп — следующий прыжок, которым является маршрутизатор 172.16.2.2. Причём из таблицы маршрутизации видно, что находится следующий хоп за интерфейсом FE0/1.4 (подсеть 172.16.2.0/30).
8)Если в ARP-кэше циски нет MAC-адреса, то надо снова выполнить ARP-запрос, чтобы узнать MAC-адрес устройства с IP-адресом 172.16.2.2. RT1 посылает широковещательный кадр с порта FE0/1.4. В этом широковещательном домене у нас два устройства, и соответственно только один получатель. RT2 получает ARP-запрос, отбрасывает заголовок Ethernet и, понимая из данных протокола ARP, что искомый адрес принадлежит ему отправляет ARP-ответ со своим MAC-адресом.
9) Изначальный IP-пакет, пришедший на RT1 не меняется, он инкапсулируется в совершенно новый кадр и отправляется в порт FE0/1.4, получая при этом метку 4-го влана.
10) Полностью аналогичные действия происходят на следующем маршрутизаторе. И на следующем и следующем (если бы они были), пока пакет не дойдёт до последнего, к которому и подключена нужная сеть.
11) Последний маршрутизатор видит, что искомый адрес принадлежит ему самому, а извлекая данные транспортного уровня, понимает, что это телнет и передаёт все данные верхним уровням.
Так вот и путешествуют данные с одного хопа на другой и ни один маршрутизатор представления не имеет о дальнейшей судьбе пакета. Более того, он даже не знает есть ли там действительно эта сеть — он просто доверяет своей таблице маршрутизации.
Каким образом мы организуем каналы связи? Как мы уже сказали выше, в нашем офисе на Арбате есть некий провайдер Балаган-Телеком. Он обещает нам предоставить всё, что мы только захотим почти задарма. И мы заказываем у него две услуги L2VPN, то есть он отдаст нам два влана на Арбате в Москве, и по одному в Питере и Кемерово.
Вообще говоря, номера вланов вам придётся согласовывать с вашим провайдером по той простой причине, что у него они могут быть просто заняты. Поэтому вполне возможно, что у вас будет влан, например, 2912 или 754. Но предположим, что нам повезло, и мы вольны сами выбирать номер.
Москва. Арбат
На циске в Москве у нас два интерфейса, к одному — FE0/0 — уже подключена наша локальная сеть, а второй (FE0/1)мы будем использовать для выхода в интернет и для подключения удалённых офисов.
Как и в самом начале создадим саб-интерфейсы. Выделим для Санкт-Петербурга и Кемерова 4 и 5-й вланы соответственно. IP-адреса берём из нового IP-плана.
msk-arbat-gw1(config)#interface FastEthernet 0/1.4
msk-arbat-gw1(config-subif)#description Saint-Petersburg
msk-arbat-gw1(config-subif)#encapsulation dot1Q 4
msk-arbat-gw1(config-subif)#ip address 172.16.2.1 255.255.255.252msk-arbat-gw1(config)#interface FastEthernet 0/1.5
msk-arbat-gw1(config-subif)#description Kemerovo
msk-arbat-gw1(config-subif)#encapsulation dot1Q 5
msk-arbat-gw1(config-subif)#ip address 172.16.2.17 255.255.255.252
Провайдер
Разумеется, мы не будем строить всю сеть провайдера. Вместо этого просто поставим коммутатор, ведь по сути сеть провайдера с нашей точки зрения будет одним огромным абстрактным коммутатором.
Тут всё просто: принимаем транком линк с Арбата в один порт и с двух других портов отдаём их на удалённые узлы. Ещё раз хотим подчеркнуть, что все эти 3 порта не принадлежат одному коммутатору — они разнесены на сотни километров, между ними сложная MPLS-сеть с кучей коммутаторов.
Настраиваем “эмулятор провайдера”:
Switch(config)#vlan 4
Switch(config-vlan)#vlan 5
Switch(config)#interface fa0/1
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk allowed vlan 4-5
Switch(config-if)#exit
Switch(config)#int fa0/2
Switch(config-if)#switchport trunk allowed vlan 4
Switch(config-if)#int fa0/3
Switch(config-if)#switchport trunk allowed vlan 5
Санкт-Петербург. Васильевский остров
Теперь обратимся к нашему spb-vsl-gw1. Тут у нас тоже 2 порта, но решим вопрос нехватки портов иначе: добавим сюда плату. Плата с двумя FastEthernet-портам и двумя слотами для WIC вполне подойдёт.
Пусть встроенные порты будут для локальной сети, а порты на дополнительной плате мы используем для аплинка и связи с Озерками.
Здесь вы можете увидеть отличие в нумерации портов и понять их смысл.
FastEthernet — это тип порта (Ethernet, Fastethernet, GigabitEthernet, POS, Serial или другие)
x/y/z.w=Slot/Sub-slot/Interface.Sub-interface.
Каким образом здесь вам провайдер будет отдавать канал — транком или аксесом, вы решаете сообща. Как правило, для него не составит проблем ни один из вариантов.
Но мы уже настроили транк, поэтому соответствующим образом настраиваем порт на циске:
spb-vsl-gw1(config)interface FastEthernet1/0.4
spb-vsl-gw1(config-if)description Moscow
spb-vsl-gw1(config-if)encapsulation dot1Q 4
spb-vsl-gw1(config-if)ip address 172.16.2.2 255.255.255.252
Добавим ещё локальную сеть:
spb-vsl-gw1(config)#int fa0/0
spb-vsl-gw1(config-if)#description LAN
spb-vsl-gw1(config-if)#ip address 172.16.16.1 255.255.255.0
Вернёмся в Москву. С msk-arbat-gw1 мы можем увидеть адрес 172.16.2.2:
msk-arbat-gw1#ping 172.16.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds:
!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/7/13 ms
Но так же не видим 172.16.16.1:
msk-arbat-gw1#ping 172.16.16.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.16.1, timeout is 2 seconds:
…
Success rate is 0 percent (0/5)
Опять же, потому что маршрутизатор не знает, куда слать пакет:
msk-arbat-gw1#sh ip route
Gateway of last resort is not set
172.16.0.0/16 is variably subnetted, 8 subnets, 2 masks
C 172.16.0.0/24 is directly connected, FastEthernet0/0.3
C 172.16.1.0/24 is directly connected, FastEthernet0/0.2
C 172.16.2.0/30 is directly connected, FastEthernet0/1.4
C 172.16.3.0/24 is directly connected, FastEthernet0/0.101
C 172.16.4.0/24 is directly connected, FastEthernet0/0.102
C 172.16.5.0/24 is directly connected, FastEthernet0/0.103
C 172.16.6.0/24 is directly connected, FastEthernet0/0.104
Исправим это недоразумение:
msk-arbat-gw1(config)#ip route 172.16.16.0 255.255.255.0 172.16.2.2
msk-arbat-gw1#sh ip route
Codes: C — connected, S — static, I — IGRP, R — RIP, M — mobile, B — BGP
D — EIGRP, EX — EIGRP external, O — OSPF, IA — OSPF inter area
N1 — OSPF NSSA external type 1, N2 — OSPF NSSA external type 2
E1 — OSPF external type 1, E2 — OSPF external type 2, E — EGP
i — IS-IS, L1 — IS-IS level-1, L2 — IS-IS level-2, ia — IS-IS inter area
* — candidate default, U — per-user static route, o — ODR
P — periodic downloaded static routeGateway of last resort is not set
172.16.0.0/16 is variably subnetted, 9 subnets, 2 masks
C 172.16.0.0/24 is directly connected, FastEthernet0/0.3
C 172.16.1.0/24 is directly connected, FastEthernet0/0.2
C 172.16.2.0/30 is directly connected, FastEthernet0/1.4
C 172.16.2.16/30 is directly connected, FastEthernet0/1.5
C 172.16.3.0/24 is directly connected, FastEthernet0/0.101
C 172.16.4.0/24 is directly connected, FastEthernet0/0.102
C 172.16.5.0/24 is directly connected, FastEthernet0/0.103
C 172.16.6.0/24 is directly connected, FastEthernet0/0.104
S 172.16.16.0/24 [1/0] via 172.16.2.2
Теперь пинг появляется:
msk-arbat-gw1#ping 172.16.16.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.16.1, timeout is 2 seconds:
!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/10/24 ms
Вот, казалось бы оно — счастье, но проверим связь с компьютера:
В чём дело?!
Компьютер знает, куда отправлять пакет — на свой шлюз 172.16.3.1, маршрутизатор тоже знает — на хост 172.16.2.2. Пакет уходит туда, принимается spb-vsl-gw1, который знает, что пингуемый адрес 172.16.16.1 принадлежит ему. А обратно нужно отправить пакет на адрес 172.16.3.3, но в сеть 172.16.3.0 у него нет маршрута. А пакеты, сеть назначения которых неизвестна, просто дропятся — отбрасываются.
spb-vsl-gw1#sh ip route
Gateway of last resort is not set
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 172.16.2.0/30 is directly connected, FastEthernet1/0.4
C 172.16.16.0/24 is directly connected, FastEthernet0/0
Но, почему же, спросите вы, с msk-arbat-gw1 до 172.16.16.1 пинг был? Какая разница 172.16.3.1 или 172.16.3.2? Всё просто.
Из таблицы маршрутизации всем видно, что следующий хоп — 172.16.2.2, при этом адрес из 172.16.2.1 принадлежит интерфейсу этого маршрутизатора, поэтому он и ставится в заголовок в качестве IP-адреса отправителя, а не 172.16.3.1. Пакет отправляется на spb-vsl-gw1, тот его принимает, передаёт данные приложению пинг, которое формирует echo-reply. Ответ инкапсулируется в IP-пакет, где в качестве адреса получателя фигурирует 172.16.2.1, а 172.16.2.0/30 — непосредственно подключенная к spb-vsl-gw1 сеть, поэтому без проблем пакет доставляется по назначению. То етсь в сеть 172.16.2.0/30 маршрут известен, а в 172.16.3.0/24 нет.
Для решения этой проблемы мы можем прописать на spb-vsl-gw1 маршрут в сеть 172.16.3.0, но тогда придётся прописывать и для всех других сетей. Для всех сетей в Москве, потом в Кемерово, потом в других городах — очень большой объём настройки.
И тут стоить заметить, что по сути у нас только один выход в мир — через Москву. Узел в Озерках — тупиковый, а других нет. То есть в основном все данные будут уходить в Москву, где большая часть подсетей и будет выход в интернет.
Чем нам это может помочь? Есть такое понятие — маршрут по умолчанию, ещё он носит романтическое название шлюз — последней надежды. И второму есть объяснение. Когда маршрутизатор решает, куда отправить пакет, он просматривает всё таблицу маршрутизации и, если не находит нужного маршрута, пакет отбрасывается — это если у вас не настроен шлюз последней надежды, если же настроен, то сиротливые пакеты отправляются именно туда — просто не глядя, предоставляя право уже следующему хопу решать их дальнейшую судьбу. То есть если некуда отправить, то последняя надежда — маршрут по умолчанию.
Настраивается он так:
spb-vsl-gw1(config)#ip route 0.0.0.0 0.0.0.0 172.16.2.1
И теперь тадааам:
В случае таких тупиковых областей довольно часто применяется именно шлюз последней надежды, чтобы уменьшить количество маршрутов в таблице и сложность настройки.
Санкт-Петербург. Озерки
Теперь озаботимся Озерками. Здесь мы поставим L3-коммутатор. Допустим, связаны они у нас будут арендованным у провайдера волокном (конечно, это идеализированная ситуация для маленькой компании, но можно же помечтать).
Использование коммутаторов третьего уровня весьма удобно в некоторых случаях. Во-первых, интервлан роутинг в этом случае делается аппаратно и не нагружает процессор, в отличие от маршрутизатора. Кроме того, один L3-коммутатор обойдётся вам значительно дешевле, чем L2-коммутатор и маршрутизатор по отдельности. Правда, при этом вы лишаетесь ряда функций, естественно. Поэтому при выборе решения будьте аккуратны.
Настроим маршрутизатор на Васильевском острове, согласно плану:
spb-vsl-gw1(config)interface fa1/1
spb-vsl-gw1(config-if)#description Ozerki
spb-vsl-gw1(config-if)#ip address 172.16.2.5 255.255.255.252
Поскольку мы уже запланировали сеть для Озерков 172.16.17.0/24, то можем сразу прописать туда маршрут:
spb-vsl-gw1(config)#ip route 172.16.17.0 255.255.255.0 172.16.2.6
В качестве некст хопа ставим адрес, который мы выделили для линковой сети на Озерках — 172.16.2.6
Теперь перенесёмся в сами Озерки:
Подключим кабель в уже настроенный порт fa1/1 на стороне Васильевского острова и в 24-й порт 3560 в Озерках.
По умолчанию все порты L3-коммутатора работают в режиме L2, то есть это обычные “свитчёвые” порты, на которых мы можем настроить вланы. Но любой из них мы можем перевести в L3-режим, сделав портом маршрутизатора. Тогда на нём мы сможем настроить IP-адрес:
Switch(config)#hostname spb-ozerki-gw1
spb-ozerki-gw1(config)#interface fa0/24
spb-ozerki-gw1(config-if)#no switchport
spb-ozerki-gw1(config-if)#ip address 172.16.2.6 255.255.255.252
Проверяем связь:
spb-ozerki-gw1#ping 172.16.2.5
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.5, timeout is 2 seconds:
.!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/18/61 ms
Настроим ещё локальную сеть. Напомним, что Cisco и другие производители и не только производители не рекомендуют использовать 1-й влан, поэтому, мы воспользуемся 2-м:
spb-ozerki-gw1(config)#vlan 2
spb-ozerki-gw1(config-vlan)#name LAN
spb-ozerki-gw1(config-vlan)#exit
spb-ozerki-gw1(config)#interface vlan 2
spb-ozerki-gw1(config-if)#description LAN
spb-ozerki-gw1(config-if)#ip address 172.16.17.1 255.255.255.0
spb-ozerki-gw1(config)#interface fastEthernet 0/1
spb-ozerki-gw1(config-if)#description Pupkin
spb-ozerki-gw1(config-if)#switchport mode access
spb-ozerki-gw1(config-if)#switchport access vlan 2
После этого все устройства во втором влане будут иметь шлюзом 172.16.17.1
Чтобы коммутатор превратился в почти полноценный маршрутизатор, надо дать ещё одну команду:
spb-ozerki-gw1(config)#ip routing
Таким образом мы включим возможность маршрутизации.
Никаких других маршрутов, кроме как по умолчанию нам тут не надо:
spb-ozerki-gw1(config)#ip route 0.0.0.0 0.0.0.0 172.16.2.5
Связь до spb-vsl-gw1 есть:
spb-ozerki-gw1#ping 172.16.16.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.16.1, timeout is 2 seconds:
!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 3/50/234 ms
А до Москвы нет:
spb-ozerki-gw1#ping 172.16.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
…
Success rate is 0 percent (0/5)
Опять же дело в отсутствии маршрута. Вообще удобный инструмент для нахождения примерного места расположения проблемы traceroute:
spb-ozerki-gw1#traceroute 172.16.3.1
Type escape sequence to abort.
Tracing the route to 172.16.3.11 172.16.2.5 4 msec 2 msec 5 msec
2 * * *
3 * * *
4 *
Как видите, что от spb-vsl-gw1 ответ приходит, а дальше глухо. Это означает, как правило, что или на хопе с адресом 172.16.2.5 не прописан маршрут в нужную сеть (вспоминаем, что у нас настроен там маршрут по умолчанию, которого достаточно) или на следующем нету маршрута обратно:
msk-arbat-gw1#sh ip rou
Gateway of last resort is not set
172.16.0.0/16 is variably subnetted, 9 subnets, 2 masks
C 172.16.0.0/24 is directly connected, FastEthernet0/0.3
C 172.16.1.0/24 is directly connected, FastEthernet0/0.2
C 172.16.2.0/30 is directly connected, FastEthernet0/1.4
C 172.16.2.16/30 is directly connected, FastEthernet0/1.5
C 172.16.3.0/24 is directly connected, FastEthernet0/0.101
C 172.16.4.0/24 is directly connected, FastEthernet0/0.102
C 172.16.5.0/24 is directly connected, FastEthernet0/0.103
C 172.16.6.0/24 is directly connected, FastEthernet0/0.104
S 172.16.16.0/24 [1/0] via 172.16.2.2
Действительно маршрута в подсеть 172.16.17.0/24 нет. Мы можем прописать его, вы это уже умеете, а можем вспомнить, что целую подсеть 172.16.16.0/21 мы выделили под Питер, поэтому вместо того, чтобы по отдельности добавлять маршрут в каждую новую сеть, мы пропишем агрегированный маршрут:
msk-arbat-gw1(config)#no ip route 172.16.16.0 255.255.255.0 172.16.2.2
msk-arbat-gw1(config)#ip route 172.16.16.0 255.255.248.0 172.16.2.2
Проверяем:
msk-arbat-gw1#ping 172.16.17.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.17.1, timeout is 2 seconds:
!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/10/18 ms
Но странной неожиданностью для вас может стать то, что с spb-ozerki-gw1 вы не увидите Москву по-прежнему:
spb-ozerki-gw1#ping 172.16.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
…
Success rate is 0 percent (0/5)
Но при этом, если в качестве адреса-источника мы укажем 172.16.17.1:
spb-ozerki-gw1#ping
Protocol [ip]:
Target IP address: 172.16.3.1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: ping172.16.17.1
% Invalid source
Source address or interface: 172.16.17.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
Packet sent with a source address of 172.16.17.1
!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/9/14 ms
И даже с компьютера 172.16.17.26 связь есть:
Как же так? Ответ, вы не поверите, так же прост — проблемы с маршрутизацией.
Дело в том, что msk-arbat-gw1 о подсети 172.16.17.0/24 знает, а о 172.16.2.4/30 нет. А именно адрес 172.16.2.6 — адрес ближайшего к адресату интерфейса (или интерфейса, с которого отправляется IP-пакет) подставляет по умолчанию в качестве источника. Об этом забывать не нужно.
msk-arbat-gw1(config)#ip route 172.16.2.4 255.255.255.252 172.16.2.2
spb-ozerki-gw1#ping 172.16.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 7/62/269 ms
Ещё интересный опыт: а что если адрес на маршрутизаторе на Васильевском острове маршрут в подсеть 172.16.3.0/24 пропишем на Озерки, а не в Москву? Ну чисто для интереса. Что произойдёт в этом случае?
spb-vsl-gw1(config)#ip route 172.16.3.0 255.255.255.0 172.16.2.6
В РТ вы этого не увидите, почему-то, но в реальной жизни получится кольцо маршрутизации. Сети 172.16.3.0/24 и 172.16.16.0/21 не будут видеть друг друга:
пакет идущий с spb-ozerki-gw1 в сеть 172.16.3.0 попадает в первую очередь на spb-vsl-gw1, где сказано: “172.16.3.0/24 ищите за 172.16.2.6”, а это снова spb-ozerki-gw1, где сказано: “172.16.3.0/24 ищите за 172.16.2.5” и так далее. Пакет будет шастать туда-обратно, пока не истечёт значение в поле TTL.
Дело в том, что при прохождении каждого маршрутизатора поле TTL в IP-заголовке, изначально имеющее значение 255, уменьшается на 1. И если вдруг окажется, что это значение равно 0, то пакет погибает, точнее маршрутизатор, увидевший это, задропит его.
Таким образом обеспечивается стабильность сети — в случае возникновения петли пакеты не будут жить бесконечно, нагружая канал до его полной утилизации.
Кстати, в Ethernet такого механизма нет и если получается петля, то коммутатор только и будет делать, что плодить широковещательные запросы, полностью забивая канал — это называется широковещательный шторм (эта проблема решается с помощью специальной технологии\протокола STP- об этом в следующем выпуске).
В общем, если вы пускаете пинг из сети 172.16.17.0 на адрес 172.16.3.1, то ваш IP-пакет будет путешествовать между двумя маршрутизаторами, пока не истечёт срок его жизни, пройдя при этом по линку между Озерками и Васильевским островом 254 раза.
Кстати, следствием из работы этого механизма является то, что не может существовать связная сеть, где между узлами больше 255 маршрутизаторов. Впрочем это и не очень актуальная потребность. Сейчас даже самый долгий трейс занимает пару-тройку десятков хопов.
Кемерово. Красная горка
Рассмотрим последний небольшой пример — маршрутизатор на палочке (router on a stick).
Название навеяно схемой подключения:
Маршрутизатор связан с коммутатором лишь одним кабелем и по разным вланам внутри него передаётся трафик и локальной сети, и внешний. Делается это, как правило, для экономии средств (на маршрутизаторе только один порт и не хочется покупать дополнительную плату).
Подключим следующим образом:
Настройка коммутатора уже не должна для вас представлять проблем. На UpLink-интерфейсе настраиваем оговоренный с провайдером 5-й влан транком:
Switch(config)#hostname kmr-gorka-sw1
kmr-gorka-sw1(config)#vlan 5
kmr-gorka-sw1(config-vlan)#name Moscowkmr-gorka-sw1(config)#int fa0/24
kmr-gorka-sw1(config-if)#description Moscow
kmr-gorka-sw1(config-if)#switchport mode trunk
kmr-gorka-sw1(config-if)#switchport trunk allowed vlan 5
В качестве влана для локальной сети выберем vlan 2 и это ничего, что он уже используется и в Москве и в Питере — если они не пересекаются и вы это можете контролировать, то номера могут совпадать. Тут каждый решает сам: вы можете везде использовать, например, 2-й влан, в качестве влана локальной сети или напротив разработать план, где номера вланов уникальны во всей сети.
kmr-gorka-sw1(config)#vlan 2
kmr-gorka-sw1(config-vlan)#name LAN
kmr-gorka-sw1(config)#int fa0/1
kmr-gorka-sw1(config-if)#description syn_generalnogo
kmr-gorka-sw1(config-if)#switchport mode access
kmr-gorka-sw1(config-if)#switchport access vlan 2
Транк в сторону маршрутизатора, где 5-ым вланом будут тегироваться кадры внешнего трафика, а 2-м — локального.
kmr-gorka-sw1(config)#int fa0/23
kmr-gorka-sw1(config-if)#description kmr-gorka-gw1
kmr-gorka-sw1(config-if)#switchport mode trunk
kmr-gorka-sw1(config-if)#switchport trunk allowed vlan 2,5
Настройка маршрутизатора:
Router(config)#hostname kmr-gorka-gw1
kmr-gorka-gw1(config)#int fa0/0.5
kmr-gorka-gw1(config-subif)#description Moscow
kmr-gorka-gw1(config-subif)#encapsulation dot1Q 5
kmr-gorka-gw1(config-subif)#ip address 172.16.2.18 255.255.255.252kmr-gorka-gw1(config)#int fa0/0
kmr-gorka-gw1(config-if)#no shkmr-gorka-gw1(config)#int fa0/0.2
kmr-gorka-gw1(config-subif)#description LAN
kmr-gorka-gw1(config-subif)#encapsulation dot1Q 2
kmr-gorka-gw1(config-subif)#ip address 172.16.24.1 255.255.255.0
Полагаем, что маршрутизацию здесь между Москвой и Кемерово вы теперь сможете настроить самостоятельно.
В случае, если с маршрутизацией не всё в порядке для траблшутинга вам понадобятся две команды:
traceroute
и
show ip route
У первой бывает полезным, как вы видели, задать адрес источника. А последнюю можно применять с параметрами, например:
msk-arbat-gw1#sh ip route 172.16.17.0
Routing entry for 172.16.16.0/21
Known via «static», distance 1, metric 0
Routing Descriptor Blocks:
* 172.16.2.2
Route metric is 0, traffic share count is 1
Несмотря на то, что в таблице маршрутизации нет отдельной записи для подсети 172.16.17.0, маршрутизатор покажет вам, какой следующий хоп.
И ещё хотелось бы повторить самые важные вещи:
— Когда блок данных попадает на маршрутизатор, заголовок Ethernet полностью отбрасывается и при отправке формируется совершенно новый кадр. Но IP-пакет остаётся неизменным.
— Каждый маршрутизатор в случае статической маршрутизации принимает решение о судьбе пакета исключительно самостоятельно и не знает ничего о чужих таблицах.
— Поиск в таблице идёт НЕ до первой попавшейся подходящей записи, а до тех пор, пока не будет найдено самое точное соответствие (самая узкая маска). Например, если у вас таблица маршрутизации выглядит так:
172.16.0.0/16 is variably subnetted, 6 subnets, 3 masks
S 172.16.0.0/16 [1/0] via 172.16.2.22
C 172.16.2.20/30 is directly connected, FastEthernet0/0
C 172.16.2.24/30 is directly connected, FastEthernet0/0.2
C 172.16.2.28/30 is directly connected, FastEthernet0/0.3
S 172.16.10.0/24 [1/0] via 172.16.2.26
S 172.16.10.4/30 [1/0] via 172.16.2.30
И вы передаёте данные на 172.16.10.5, то он не пойдёт ни по маршруту через 172.16.2.22 ни через 172.16.2.26, а выберет самую узкую маску (самую длинную) /30 через 172.16.2.30.
— Если IP-адресу получателя не будет соответствовать ни одна запись в таблице маршрутизации и не настроен маршрут по умолчанию (шлюз последней надежды), пакет будет просто отброшен.
На этом первое знакомство с маршрутизацией можно закончить. Нам кажется, что читатель сам видит, сколько сложностей поджидает его здесь, может предположить, какой объём работы предстоит ему, если сеть разрастётся до нескольких десятков маршрутизаторов. Но надо сказать, что в современном мире статическая маршрутизация, не то чтобы не используется, конечно, ей есть место, но в подавляющем большинстве сетей, крупнее районного пионер-нета внедрены протоколы динамической маршрутизации. Среди них OSPF, EIGRP, IS-IS, RIP, которым мы посвятим отдельный выпуск и, скорее всего, не один. Но настройка статической маршрутизации в значительной степени поможет вашему общему пониманию маршрутизации.
В качестве самостоятельного задания попробуйте настроить маршрутизацию между Москвой и Кемерово и ответить на вопрос, почему не пингуются устройства из сети управления.
Новый IP-план, планы коммутации по каждой точке и регламент
Файл РТ с лабораторной
Конфигурация устройств
Приносим извинения за гигантские простыни, видео тоже с каждым разом становится всё длиннее и невыносимее. Постараемся в следующий раз быть более компактными.
Все заинтересованные, но незарегистрированные приглашаются на беседу в ЖЖ.
За подготовку статьи большое спасибо моему соавтору thegluck и моей жене за львиное терпение.
Для очень недовольных: эта статья не абсолют, она не раскрывает теоретические аспекты в полной мере и, потому не претендует на роль полноценной документации. С точки зрения авторов это вспомогательной средство для новичков, волшебный стимул, если желаете. На хабре у вас есть возможность поставить минус, а не доказывать нашу неправоту. Прошу вас, поступите именно так, потому что ваши недовольства встретят лишь вышеприведённые аргументы.
Для очень недовольных: эта статья не абсолют, она не раскрывает теоретические аспекты в полной мере и, потому не претендует на роль полноценной документации. С точки зрения авторов это вспомогательной средство для новичков, волшебный стимул, если желаете. На хабре у вас есть возможность поставить минус, а не доказывать нашу неправоту. Прошу вас, поступите именно так, потому что ваши недовольства встретят лишь вышеприведённые аргументы.
route
route
Манипулирование
таблицами
маршрутизации вручную
Синтаксис:
route [-f]
[-n] [-q] [-v] команда { [[модификаторы] аргументы]
}
Поддерживаемые платформы:
Neutrino
Опции:
-f
Удалить все маршруты (в соответствии с flush). При использовании вместе с
командами add, change, delete или get утилита route удаляет все маршруты перед
выполнением соответствующей команды.
-n
Не выводить символические имена хостов и сетей при
сообщении о действиях. (Процесс преобразования между
символическими именами и их численными эквивалентами может
занимать много времени и требовать корректной работы сети;
таким образом, рекомендуется воздержаться от использования
этой опции, особенно в случае попытки настройки работы сети.)
-q
Не выводить
информацию: подавить весь поток вывода.
-v
Вывести
расширенную информацию: отображать дополнительные данные.
команда
[[модификаторы] аргументы]
Действительными являются следующие команды: add, change, delete, flush и show. Синтаксис и описание каждой
команды приведены в разделе «Описание».
Описание:
Утилита route используется для манипулирования
таблицами сетевой маршрутизации вручную. Поскольку обычно
таблицы маршрутизации обрабатываются сервисом routed, эта утилита используется редко.
Опции для аргумента команда
Утилита route принимает следующие команды: add, change, delete, flush, get, monitor и show.
Ниже
приведены синтаксис и описание каждой команды:
[-n] add [-net|-host] место_назначения шлюз
Добавить
маршрут.
[-n] change [-net|-host] адрес_назначения шлюз
Изменить
параметры маршрута (например, шлюз).
[-n] delete [-net|-host] адрес_назначения шлюз
Удалить
определенный маршрут.
[-n] flush [семейство]
(Только для INET и INET6) Очистить таблицы
маршрутизации всех записей шлюза. Если требуется удалить
только те маршруты, для которых адреса назначения относятся к
определенному семейству, укажите в качестве значения
переменной семейство INET или INET6.
[-n] get [-net|-host] адрес_назначения шлюз
Выполнить
поиск и отобразить маршрут до адреса назначения.
[-n] monitor
Регулярно
сообщать об изменениях в данных маршрутизации.
[-n] show
Показать
таблицу маршрутизации (команда, аналогичная netstat -r).
адрес_назначения
Хост-получатель
или сеть-получатель.
gateway
Шлюз в
следующем сегменте сети (переходе), на который направляются
пакеты. Примечание.
Если указано
ключевое слово default или сетевой адрес
0.0.0.0,
то все пакеты, которые отправляются в удаленную
сеть, не определенную в таблицах маршрутизации, направляются
на заданный шлюз.
Если выбран
поставщик услуг Интернета (Internet Service Provider, ISP), то
пакеты, отправляемые хостам в Интернете, направляются на шлюз,
предоставляемый этим поставщиком. См. описание опции defaultroute
для утилиты pppd.
Маршруты к
определенному хосту отличаются от маршрутов к сети способом
интерпретации IP-адреса, соответствующего адресу_назначения. При выборе
необязательных ключевых слов -net и -host адрес назначения
интерпретируется как сеть или хост соответственно.
Если для
аргумента адрес_назначения указан «локальный адрес»
INADDR_ANY или адресом_назначения является
символическое имя сети, то адресом назначения маршрута
считается сеть; в противном случае адресом назначения маршрута
считается хост. Пример:
Адрес_назначения | Интерпретация |
128.32 | -host 128.0.0.32 |
128.32.130 | -host 128.32.0.130 |
-net 128.32 | 128.32.0.0 |
-net 128.32.130 | 128.32.130.0. |
Если маршрут проходит не через шлюз, а через
интерфейс, следует выбрать модификатор -interface; заданный шлюз
является адресом хоста в общей сети, т.е. предполагается, что
для передачи используется интерфейс.
Для
определения дополнительного параметра адреса, который
интерпретируется как маска сети, можно использовать
необязательный модификатор -netmask. Этот
модификатор используется аналогично переадресации OSI ESIS с
использованием маски сети или для добавления вручную маршрутов
по подсети с масками сети, отличающимися от масок сети
предполагаемого сетевого интерфейса (что в противном случае
выполняется с использованием протоколов маршрутизации OSPF или
ISIS). После дополнительного модификатора -netmask укажите адрес
параметра, который следует интерпретировать как маску сети.
Чтобы
переопределить неявную маску сети, созданную в случае INET,
укажите данную опцию после параметра адрес_назначения.
Аналогичным
образом можно использовать модификатор -prefixlen для IPv6.
При отправке
на адреса назначения, соответствующие маршрутам, для этих
маршрутов устанавливаются флаги, влияющие на работу
протоколов. Для установки (или в некоторых случаях снятия)
этих флагов укажите следующие соответствующие модификаторы:
-cloning
RTF_CLONING
создание нового маршрута на основе используемого.
-xresolve
RTF_XRESOLVE
распространение сообщения (mesg) (для внешнего поиска).
-iface
~RTF_GATEWAY
адреса назначения можно достичь напрямую.
-static
RTF_STATIC
маршрут, добавленный вручную.
-nostatic
~RTF_STATIC
симуляция добавления маршрута ядром или сервисом
-reject
RTF_REJECT
распространение сообщения о недостижимости ICMP в случае
соответствия.
-blackhole
RTF_BLACKHOLE
отбрасывание пакетов (pkts) без оповещения (во время
обновления).
-proto1
RTF_PROTO1
установка флага маршрутизации для протокола #1.
-proto2
RTF_PROTO2
установка флага маршрутизации для протокола #2.
-llinfo
RTF_LLINFO
действительное преобразование IP-адресов в физические.
Дополнительные
модификаторы:
-expire
-hopcount
-mtu
-recvpipe
-rtt
-rttvar
-sendpipe
-ssthresh
Эти модификаторы предоставляют начальные значения
показателей, которые ведутся в записи маршрутизации. Для
блокирования любых этих модификаторов установите перед
соответствующим модификатором метамодификатор -lock; также можно указать
метамодификатор -lockrest для
блокирования всех последующих показателей.
Поиск всех
символических имен, указанных для адреса назначения или шлюза,
сначала выполняется как поиск имени хоста с использованием
функции gethostname(). Если поиск не дал результатов,
используется функция getnetbyname(), интерпретирующая
имя как имя сети.
Утилита route использует сокет маршрутизации и
новые типы сообщений: RTM_ADD, RTM_DELETE и RTM_CHANGE.
Соответственно, изменять таблицы маршрутизации может только
суперпользователь.
Диагностика
add [host | network ] %s: gateway %s flags %x
Указанный маршрут добавляется в таблицы. Выводятся
значения записи таблицы маршрутизации, определенные при вызове
ioctl(). Если используемый адрес шлюза не является его
первичным адресом (первым адресом, возвращаемым командой gethostname()),
то адрес шлюза выводится в числовом и символьном виде.
delete [ host &| network ] %s: gateway %s flags
%x
Как и в
предыдущем случае, но при удалении записи.
%s %s done
Таблица
маршрутизации удаляется с помощью команды flush.
Network is unreachable
Неудачная попытка добавления маршрута, поскольку
указанный шлюз находится в сети, не подключенной напрямую.
Необходимо указать шлюз следующем сегменте сети (переходе).
not in table
Попытка
выполнения операции delete для записи,
отсутствующей в таблицах.
routing table overflow
Попытка
выполнения операции add в случае
недостаточности ресурсов системы и невозможности выделения
памяти для создания новой записи.
Permission denied
Для выполнения данной операции необходимы
соответствующие полномочия. Изменять таблицы маршрутизации
может только пользователь root. Его полномочия
определяются ядром.
Лицензия:
Эта утилита
разработана на основе программного обеспечения, авторское
право на которое принадлежит членам правления Калифорнийского
университета (The Regents of the University of California) и
Кристосу Зуласу (Christos Zoulas). Уведомление об авторских
правах см. в разделе route в приложении
«Third-Party Copyright Notices» («Уведомление об авторских
правах третьих сторон»).
Удалить все постоянные маршруты windows. Описание команды ROUTE
Команда Route
выводит на экран все содержимое таблицы IP-маршрутизации и изменяет записи. Запущенная без параметров, команда route выводит справку.
Синтаксис параметры утилиты ROUTE
route [-f] [-p] [команда [конечная_точка] [шлюз] ] ]
- -f
— Очищает таблицу маршрутизации от всех записей, которые не являются узловыми маршрутами (маршруты с маской подсети 255.255.255.255), сетевым маршрутом замыкания на себя (маршруты с конечной точкой 127.0.0.0 и маской подсети 255.0.0.0) или маршрутом многоадресной рассылки (маршруты с конечной точкой 224.0.0.0 и маской подсети 240.0.0.0). При использовании данного параметра совместно с одной из команд (таких, как add, change или delete) таблица очищается перед выполнением команды.
- -p
— При использовании данного параметра с командой add указанный маршрут добавляется в реестр и используется для инициализации таблицы IP-маршрутизации каждый раз при запуске протокола TCP/IP.
- команда
— Указывает команду, которая будет запущена на удаленной системе. Возжожна одна из следующих команд: PRINT
— Печать маршрута, ADD
— Добавление маршрута, DELETE
— Удаление маршрута, CHANGE
— Изменение существующего маршрута.
- конечная_точка
— Определяет конечную точку маршрута. Конечной точкой может быть сетевой IP-адрес (где разряды узла в сетевом адресе имеют значение 0), IP-адрес маршрута к узлу, или значение 0.0.0.0 для маршрута по умолчанию.
- mask маска_сети
— Указывает маску сети (также известной как маска подсети) в соответствии с точкой назначения. Маска сети может быть маской подсети соответствующей сетевому IP-адресу, например 255.255.255.255 для маршрута к узлу или 0.0.0.0. для маршрута по умолчанию. Если данный параметр пропущен, используется маска подсети 255.255.255.255. Конечная точка не может быть более точной, чем соответствующая маска подсети. Другими словами, значение разряда 1 в адресе конечной точки невозможно, если значение соответствующего разряда в маске подсети равно 0.
- шлюз
— Указывает IP-адрес пересылки или следующего перехода, по которому доступен набор адресов, определенный конечной точкой и маской подсети. Для локально подключенных маршрутов подсети, адрес шлюза — это IP-адрес, назначенный интерфейсу, который подключен к подсети. Для удаленных маршрутов, которые доступны через один или несколько маршрутизаторов, адрес шлюза — непосредственно доступный IP-адрес ближайшего маршрутизатора.
- metric метрика
— Задает целочисленную метрику стоимости маршрута (в пределах от 1 до 9999) для маршрута, которая используется при выборе в таблице маршрутизации одного из нескольких маршрутов, наиболее близко соответствующего адресу назначения пересылаемого пакета. Выбирается маршрут с наименьшей метрикой. Метрика отражает количество переходов, скорость прохождения пути, надежность пути, пропускную способность пути и средства администрирования.
- if интерфейс
— Указывает индекс интерфейса, через который доступна точка назначения. Для вывода списка интерфейсов и их соответствующих индексов используйте команду route print. Значения индексов интерфейсов могут быть как десятичные, так и шестнадцатеричные. Перед шестнадцатеричными номерами вводится 0х. В случае, когда параметр if пропущен, интерфейс определяется из адреса шлюза.
Примеры команды Route
- route print
; - Чтобы вывести на экран маршруты из таблицы IP-маршрутизации, которые начинаются с 10., введите команду: route print 10.*;
- route add 0.0.0.0 mask 0.0.0.0 192.168.12.1;
- route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
; - route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1.
Видео — Работа с утилитой ROUTE
· Комментариев нет
Поразительно, как быстро бежит время. Люди думаю, что настоящие компьютеры очень высокотехнологичны, но протокол TCP/IP существует в той или иной форме уже более трех десятилетий. У него было достаточно времени, чтобы созреть и стать стабильным и надежным. Но если дело касается компьютеров, то ничего не может быть надежным. При указании маршрутов для пакетов в сети иногда случаются неприятности. В таких ситуациях следует быть знакомым с таблицами маршрутизации Windows. Они определяют поток пакетов из необходимой машины. В статье я расскажу о том, как просматривать таблицы и как их понять.
Просмотр таблиц маршрутизации
Таблицы маршрутизации – важная часть протокола TCP/IP в Windows, но операционная система не показывает их обычному пользователю . Если хочется их увидеть, то необходимо открыть командную строку и ввести команду ROUTE PRINT. После этого можно будет увидеть окно, похожее на представленное на рисунке А.
Рисунок
A:
Так выглядят таблицы маршрутизации.
Прежде чем я подробнее остановлюсь на таблицах, я советую ввести в командную строку другую команду:
Это показывает установку протокола TCP/IP на компьютере. Вы также можете посмотреть раздел TCP/IP в свойствах сетевого адаптера, но первый способ предпочтительнее. Я часто сталкивался с ситуацией, когда команда IPCONFIG выводила совершенно иные данные, нежели данные, введенные в свойства TCP/IP. Это случается нечасто, но ошибки происходят из-за этого разногласия. Другими словами, данные, введенные в свойства TCP/IP, определяют установку протокола для выбранной сети. А команда IPCONFIG показывает, как Windows в действительности настроил протокол.
Даже при отсутствии ошибок, будет полезно проверить настройку через команду IPCONFIG. Если на компьютере стоят несколько сетевых адаптеров, то сложно запомнить, какие настройки относятся к какому адаптеру. Команда IPCONFIG показывает список разных настроек в легко читаемом формате на основ
Команда traceroute Linux | Losst
Не всегда сеть работает так, как от нее требуется, иногда определенный компьютер в вашей локальной сети компании, или удаленный может не отвечать. Казалось бы, все работает, все подключено, но похоже на каком-то из узлов, на пути от вашего компьютера, до нужного случается ошибка.
Утилита ping позволяет только определить наличие проблемы, что узел не отвечает, но как узнать где обрывается соединение? Для этого применяется утилита traceroure. В этой небольшой инструкции мы рассмотрим как пользоваться traceroute linux, как понимать ее вывод и определить где же все-таки проблема. Но сначала рассмотрим, как работает traceroute.
Содержание статьи:
Как работает traceroute?
Вы, наверное, уже знаете, что вся информация в сети передается в виде пакетов. Поток данных разбивается специальным программным обеспечением на небольшие пакеты и передается через сеть интернет на целевой узел, а там собирается обратно.
Каждый пакет проходит на своем пути определенное количество узлов, пока достигнет своей цели. Причем, каждый пакет имеет свое время жизни. Это количество узлов, которые может пройти пакет перед тем, как он будет уничтожен. Этот параметр записывается в заголовке TTL, каждый маршрутизатор, через который будет проходить пакет уменьшает его на единицу. При TTL=0 пакет уничтожается, а отправителю отсылается сообщение Time Exceeded.
Команда traceroute linux использует UDP пакеты. Она отправляет пакет с TTL=1 и смотрит адрес ответившего узла, дальше TTL=2, TTL=3 и так пока не достигнет цели. Каждый раз отправляется по три пакета и для каждого из них измеряется время прохождения. Пакет отправляется на случайный порт, который, скорее всего, не занят. Когда утилита traceroute получает сообщение от целевого узла о том, что порт недоступен трассировка считается завершенной.
Утилита Traceroute
Перед тем как перейти к примерам работы с утилитой давайте рассмотрим ее синтаксис и основные опции. Синтаксис вызова очень прост:
$ traceroute опции адрес_узла
В качестве адреса может использоваться ip адрес или доменное имя. Рассмотрим основные опции:
- -4 или -6 — использовать ipv4 или ipv6 протокол;
- -I — использовать ICMP пакеты вместо UDP;
- -T — использовать TCP пакеты вместо UDP;
- -F — не фрагментировать пакеты;
- -f — указать TTL с которого нужно начать;
- -g — передавать пакет через указанный шлюз;
- -i — передавать пакет через указанный интерфейс;
- -m — максимальное количество узлов, через которые пройдет пакет;
- -q — количество пакетов, отправляемых за раз, по умолчанию три;
- -n — не узнавать доменные имена;
- -p — указать порт вместо порта по умолчанию;
- -w — установить время ожидания ответа от узла, по умолчанию полсекунды;
- -r — использовать другой роутер вместо того, что указанный в таблице маршрутизации;
- -z — минимальный интервал между пакетами;
- -U — использовать UDP с увеличением номера порта;
- -UL — использовать протокол UDPLITE;
- -D — использовать протокол DCCP;
- —mtu — указать размер пакета;
- -P — протокол, доступны такие значения: raw, dccp, udplite, udp, tcpconn, tcp, icmp.
Это не все опции утилиты, но все основные, которыми вы будете пользоваться. Дальше перейдем практике того, как выполняется трассировка сети Linux.
Примеры трассировки сети в Linux
Например, выполним трассировку до сервера losst.ru:
sudo traceroute losst.ru
Как видите, пакет прошел через 6 узлов перед тем, как дойти до цели. На каждый узел отправлялось по три пакета и для каждого из них было засечено время прохождения. И если на одном из узлов возникнет проблема, теперь вы будете знать на каком.
У вас, наверное, возник вопрос, почему время прохождения для некоторых узлов такое долгое? Ведь если выполнить ping, то общее время будет намного меньше. Дело в том, что время засекается для пути пакета туда и обратно. От запроса до ответа. Это раз, но еще нужно учитывать что маршрутизаторы дают высший приоритет для приходящих пакетов, когда для сервисных задержки могут быть более длинными.
Еще, вместо одного узла вы можете видеть звездочки traceroute. Это еще не значит, что он не работает. Это означает что всего лишь он не захотел нам отвечать. Давайте проверим еще что-нибудь, например, публичный DNS google:
sudo traceroute 8.8.8.8
Здесь уже больше узлов, и такая же ситуация со звездочками. Если бы на пути к серверу возникла ошибка, мы бы это увидели. Например, узел 195.153.14.1 нам не ответил и мы смогли отследить запрос только до 212.162.26.169.
sudo traceroute 195.153.14.1
Иногда трассировка с помощью UDP не работает, это может произойти потому, что фаервол блокирует все лишние пакеты. Мы можем воспользоваться ICMP с помощью опции -I.
sudo traceroute history.pl
sudo traceroute -I history.pl
Но трассировка может использоваться не только для обнаружения обрыва в цепочке маршрутизаторов. У нее еще есть достаточно интересное применение по исследованию сети. Например, вы можете попытаться определить использование подсетей провайдером. Отправим три запроса на разные адреса:
sudo traceroute losst.ru
$ sudo traceroute history.pl
$ sudo traceroute habrahabr.ru
Затем сравните выводы этих команд. Вы увидите, что начальные IP адреса одинаковые. Мы можем сделать вывод, что наш роутер 192.168.1.1 подключен к локальной сети провайдера 195.5.8.0/24, которая, в свою очередь, подключена к сети 10.50.50.0/24 откуда уже получает доступ к внешней сети.
Выводы
В этой статье мы рассмотрели как работает команда traceroute linux, а также как выполняется трассировка сети linux. Эти функции больше нужны системным администраторам, но и обычным пользователям тоже иногда могут пригодиться.
Оцените статью:
Загрузка…
Использование утилиты Trace Route
Утилита трассировки маршрута ( tracert ) позволяет просматривать сетевой пакет, который находится в пути, и определять количество переходов, необходимых для того, чтобы этот пакет достиг своего места назначения. В этом документе объясняется, как запустить служебную программу трассировки маршрута в среде Cisco Intelligent Contact Management (ICM).
Требования
Cisco рекомендует знать следующие темы:
Используемые компоненты
Информация в этом документе основана на всех версиях ICM.
Информация в этом документе была создана на устройствах в определенной лабораторной среде. Все устройства, используемые в этом документе, были запущены с очищенной (по умолчанию) конфигурацией. Если ваша сеть активна, убедитесь, что вы понимаете потенциальное влияние любой команды.
Условные обозначения
См. Раздел Условные обозначения технических советов Cisco для получения дополнительной информации об условных обозначениях в документе.
Вы можете использовать служебную программу трассировки маршрута для проверки своевременных и надежных соединений между узлами ICM.Вы также можете использовать эту утилиту, если команда ping указывает тайм-ауты запроса. Для получения дополнительной информации о команде ping см. Использование утилиты Ping.
Утилита трассировки маршрута определяет маршрут, по которому пакет идет к месту назначения с удаленного компьютера или компьютеров. Утилита показывает количество переходов, а также IP-адреса устройств, в которых в сетевом пути маршрут нарушен или неверен.
После успешного запуска утилиты трассировки маршрута вы увидите сообщение Трассировка завершена.Если трассировка маршрута не завершается, происходит сбой сети между локальным и удаленным узлами. В большинстве случаев проблема связана с сетевым устройством, например IP-маршрутизатором или концентратором на сетевом пути. В этом случае обратитесь к администратору локальной сети и укажите каждый переход маршрута трассировки.
Пример выходных данных в этом разделе показывает успешное соединение. Выполните команду tracert , чтобы запустить служебную программу трассировки маршрута в среде ОС Microsoft.
C: \> tracert 172.30.8.28 Трассировка маршрута до 172.30.8.28 за максимум 30 переходов: 1 <10 мс <10 мс <10 мс 161.44.240.2 2 <10 мс <10 мс <10 мс 172.24.72.2 3 20 мс 10 мс <10 мс 171.71.0.25 4 10 мс <10 мс 10 мс 171.69.209.4 5 71 мс 80 мс 70 мс 171.68.27.253 6 80 мс 70 мс 81 мс 198.92.1.140 7 80 мс 90 мс 70 мс 171.68.0.193 8 80 мс 90 мс 70 мс 172.30.7.39 9 141 мс 150 мс 130 мс 172.30.15.30 10 141 мс 140 мс 160 мс 172.30.8.28 Трассировка завершена
Чтобы найти допустимые параметры для команды tracert , проверьте файлы справки Microsoft Windows.
Маршрутизация IP
: Руководство по настройке BGP - Карта маршрутов BGP Продолжить [Маршрутизаторы служб агрегации Cisco ASR серии 1000]
В следующем примере показана конфигурация пункта продолжения в последовательности карты маршрутов.
Примечание | Пункты продолжения в картах исходящих маршрутов поддерживаются только в Cisco IOS Release 12.0 (31) S, 12,2 (33) SB, 12,2 (33) SRB, 12,2 (33) SXI, |
Первое предложение продолжения в записи 10 карты маршрутов указывает, что карта маршрутов перейдет к записи 30 карты маршрутов в случае успешного выполнения.
совпадений происходит. Если совпадения не происходит, карта маршрутов «проваливается» до записи 20 карты маршрутов.В случае удачного совпадения
происходит в записи 20 карты маршрутов, будет выполнено заданное действие, и карта маршрута не будет оценивать какую-либо дополнительную карту маршрута
записи. Только первый удачный
Поддерживается предложение сопоставления IP-адреса.
Если успешное совпадение не происходит в записи 20 карты маршрутов, карта маршрутов переходит к записи 30 карты маршрутов.Эта последовательность
не содержит предложения соответствия, поэтому предложение set будет выполнено автоматически, а
Предложение continue перейдет к следующей записи карты маршрутов, поскольку порядковый номер не указан.
Если нет успешных совпадений, карта маршрутов перейдет к записи 30 карты маршрутов и выполнит предложение set. Последовательность
номер не указан для
continue, поэтому будет оценена запись 40 карты маршрутов.
Есть два поведения, которые могут возникнуть, когда
команда set повторяется в последующих
записи предложения continue. За
установить команды, которые настраивают добавочное или накопительное значение (например,
задавать
сообщество
добавка
задавать
расширенный
сообщество
добавка, и
задавать
как путь
prepend), последующие значения добавляются последующими записями.Следующий пример иллюстрирует это поведение. После каждого сета матча
статьи, а
задавать
как путь
Команда prepend настроена на добавление номера автономной системы к as-path. После совпадения карта маршрута перестает оценивать
match clauses и начинает выполнение set clauses в том порядке, в котором они были настроены. В зависимости от того, сколько успешных
встречаются предложения match, перед as-path ставится один, два или три номера автономной системы.
route-map ROUTE-MAP-NAME разрешение 10
сопоставить IP-адрес 1
показатель соответствия 10
установить как путь в начале 10
продолжить 30
!
route-map ROUTE-MAP-NAME разрешение 20
сопоставить IP-адрес 2
показатель соответствия 20
установить как начало пути 10 10
!
route-map ROUTE-MAP-NAME разрешение 30
установить как начало пути 10 10 10
Продолжать
!
route-map ROUTE-MAP-NAME разрешение 40
матч сообщества 10: 1
установить локальные предпочтения 104
В этом примере то же
команда set повторяется в последующих
continue, но поведение отличается от первого примера.За
set команды, которые настраивают абсолютное значение, значение из последнего экземпляра перезапишет предыдущее значение (я). Продолжение
пример иллюстрирует это поведение. Значение предложения set в последовательности 20 перезаписывает значение предложения set из последовательности 10.
следующий переход для префиксов из сети 172.16 / 16 установлен на 10.2.2.2, а не на 10.1.1.1.
список IP-адресов 1 разрешение 172.16.0.0 / 16
ip prefix-list 2 разрешить 192.168.1.0/24
маршрут-карта КРАСНОЕ разрешение 10
сопоставить список префиксов IP-адресов 1
установить ip next hop 10.1.1.1
продолжить 20
Выход
Маршрут-карта КРАСНОЕ разрешение 20
сопоставить список префиксов IP-адресов 2
установить ip next hop 10.2.2.2
конец
Примечание | Карты маршрутов имеют линейное поведение, а не вложенное поведение. Как только маршрут совпадает с записью разрешения карты маршрутов с продолжением |
В следующем примере, когда маршруты соответствуют as-path равным 10, 20 или 30, маршруты разрешены и предложение continue
перескакивает через явное предложение deny для обработки списка префиксов совпадающих IP-адресов.Если совпадение происходит здесь, метрика маршрута
установлено значение 100. Отклоняются только маршруты, которые не соответствуют as-path 10, 20 или 30 и соответствуют номеру сообщества 30.
Чтобы запретить другие маршруты, вы должны настроить явную инструкцию deny.
разрешение на проверку карты маршрута 10
совпадать как путь 10 20 30
продолжить 30
Выход
карта маршрута тест отрицать 20
сообщество матча 30
Выход
разрешение на проверку карты маршрута 30
сопоставить список префиксов IP-адресов 1
установить метрику 100
exit
route (8) - страницы руководства OpenBSD
маршрут
- вручную
манипулировать таблицами маршрутизации
route
- это утилита, используемая для просмотра вручную
и управлять таблицами сетевой маршрутизации. маршрут
банка
использоваться для изменения практически любого аспекта политики маршрутизации, кроме пакетов
пересылка, которой можно управлять через
sysctl (8) команда.
Утилита route
поддерживает ограниченный
ряд общих опций, но богатый командный язык позволяет пользователю
указать любой произвольный запрос, который может быть доставлен через программную
интерфейс, обсуждаемый в маршруте (4).
Возможны следующие варианты:
-
-d
- Запустить только в режиме отладки, т.е.д., фактически не изменяйте маршрутизацию
Таблица. -
-н
- Обход пытается печатать имена хостов и сетей символически, когда
отчеты о действиях. (Процесс перевода между символическими именами и
числовые эквиваленты могут занять довольно много времени и могут потребовать правильного
работа сети; таким образом, может быть целесообразно отказаться от этого,
особенно при попытке восстановить сетевые операции.) -
-q
- Подавить весь вывод.
-
-Т
r таблица - Выберите альтернативную таблицу маршрутизации для изменения или запроса. По умолчанию
использовать текущую таблицу маршрутизации. -
-т
- Запись сообщений маршрутизации на поддельное устройство
(/ dev / null) вместо реального сокета маршрутизации к
манипулирование тестовым маршрутом. -
-v
- (подробный) Распечатать дополнительную информацию.
Утилита route
предоставляет
следующие простые команды:
-
маршрут
[-T
rtable ]
исполнительный
[ команда... ] - Выполнить команду, заставляющую процесс и его дочерние элементы использовать маршрутизацию.
таблицу и соответствующий домен маршрутизации, как указано в
-T
rtable опция. -
маршрут
[-nqv
]
[-T
r таблица ]
промывка
[ модификаторы ] - Удалить все записи шлюза из таблицы маршрутизации. Когда адресная семья
задается любым из модификаторов семейства
(перечислены ниже), только маршруты, имеющие пункты назначения с адресами в
выделенная семья будет удалена.Кроме того, только маршруты, соответствующие определенному
интерфейс или приоритет можно сбросить с помощью
-iface
или-приоритет
модификаторы. -
маршрут
[-nv
]
[-T
r таблица ]
получить
[ модификаторы ] адрес - Извлеките запись маршрутизации из ядра. Если
-шлюз
указан, только маршруты, шлюз которых
находятся в том же семействе адресов, что и пункт назначения. -
маршрут
[-n
]
[-T
r таблица ]
монитор
[ модификаторы ] - Непрерывно сообщать обо всех изменениях в базе маршрутной информации, маршрутизации
промахи при поиске или подозрение на разделение сети.Когда семейство адресов указано одним из
семейство модификаторов (перечисленных ниже), только маршруты
наличие пунктов назначения с адресами в обозначенной семье будет
показано.Если используется только модификатор-iface
отображаются специфические сообщения интерфейса (изменения состояния ссылки). Если маршрутизация
стол поставляется с-T
, изменения только в том
таблица маршрутизации будет отображаться. -
маршрут
[-nv
]
[-T
r таблица ]
показать
[ семейство ] [- шлюз
]
[-этикетка
этикетка ]
[- приоритет
приоритет ] - Распечатайте таблицу маршрутизации аналогично netstat
-р".Результат документируется более подробно в конце
netstat (1) руководство.Если указан
-gateway
, только маршруты
чей шлюз находится в том же семействе адресов, что и пункт назначения
показано.Если указан
-label
, только маршруты
с указанной меткой.Если указан
-priority
, только маршруты
с указанным приоритетом. Его можно указать по номеру или
один изместных
,подключенных
,
статический
,ospf
,
rip
илиbgp
.Если
приоритет отрицательный, тогда маршруты, не соответствующие числовому приоритету
показаны.
-
маршрут
[-T
r таблица ]
исходный адрес
[-inet
|-inet6
]
[ адрес ] -
маршрут
[-T
r таблица ]
исходный адрес
[-inet
|-inet6
]
-ifp
интерфейс Установите предпочтительный исходный адрес.Если
адрес - это слово «по умолчанию», 0.0.0.0
или ::, исходный адрес будет выбран ядром для сопоставления
адрес семьи. Когда адрес опущен, предпочтительнее
адрес источника печатается, если установлен. Если-ifp
используется, источник будет использовать IP, назначенный интерфейсу .
Предпочтительный источник не будет использоваться, если:- пункт назначения по ссылке
- выходной интерфейс точка-точка
- адрес источника назначен отключенному интерфейсу
Другие команды
относящиеся к добавлению, изменению или удалению маршрутов, имеют синтаксис:
-
маршрут
[-dnqtv
]
[-T
r таблица ]
добавить
[ модификаторы ] назначения
шлюз -
маршрут
[-dnqtv
]
[-T
r таблица ]
изменение
[ модификаторы ] назначения
шлюз -
маршрут
[-dnqtv
]
[-T
r таблица ]
del
[ete
]
[ модификаторы ] назначения
шлюз
назначение - хост назначения
или сеть; шлюз является промежуточным звеном следующего перехода через
какие пакеты следует маршрутизировать.Маршруты к конкретному хосту могут быть
отличить от тех, что в сети, путем интерпретации интернет-адреса
указан как аргумент назначения . Необязательный
модификаторы -нет
а также
- хост
вызвать интерпретацию пункта назначения как сеть или хост,
соответственно. В противном случае тип выбирается на основании следующих правил:
Предполагается, что маршрут ведет к сети, если любой из
следующее относится к пункт назначения :
- это слово "по умолчанию", эквивалентное 0/0
- это IPv4-адрес с менее чем 3 точками
- это IPv4-адрес с суффиксом «/ XX ».
(где XX - количество бит в сетевой части
адреса и меньше 32) - это IPv6-адрес с суффиксом «/ XX ».
(где XX - количество бит в сетевой части
адреса и меньше 128) - - это символическое имя сети.
Если пункт назначения - допустимый IP-адрес или хост
name, предполагается, что это маршрут к хосту.
Например, 192.168.1.1
интерпретируется как
- хост
192.168.1.1
и
192.168.1
интерпретируется как
- нетто
192.168.1
. Заметка,
однако это 192.168.2.0
будет интерпретировано как
-host
192.168.2.0
, так как это
представляет собой полный IP-адрес с 3 точками.В этом случае количество бит в
сетевая часть адреса должна быть явно указана, например
192.168.2.0/24
,
192.168.2 / 24
или поочередно
192.168.2
.
Если пункт назначения доступен напрямую через
интерфейс, не требующий промежуточной системы для работы в качестве шлюза,
-iface
модификатор должен быть указан; указанный шлюз - это адрес этого хоста
в общей сети, указывая интерфейс, который будет использоваться для
передача инфекции.
Разрешить интерпретацию адресов как принадлежащих
конкретное семейство адресов (а также для использования в
семейство аргументов для некоторых команд), следующие
могут использоваться модификаторы:
-
-инет
- Интернет-протокола версии 4 (IPv4) адресов (см.
ip (4)) -
-inet6
- Интернет-протокола версии 6 (IPv6) адресов (см.
ip6 (4)) -
- ссылка
- Аппаратные адреса (на уровне каналов)
-
-мплс
- MPLS адресов
-
-sa
- Фактические данные sockaddr в шестнадцатеричном формате
При отсутствии модификаторов адрес считается IPv4,
если он не содержит символа «:», когда он рассматривается как
IPv6.
Необязательный модификатор -ссылка
указывает, что
все последующие адреса указываются как адреса на уровне ссылок, а
имена должны быть числовыми спецификациями, а не символическими именами.
Дополнительный
-маска сети
квалификатор предназначен для ручного добавления маршрутов подсети с разными масками.
от предполагаемого сетевого интерфейса (в противном случае
передается с использованием протокола маршрутизации). Один указывает на следующие дополнительные
параметр адреса (интерпретируется как маска сети).Неявный
сетевая маска, сгенерированная в случае AF_INET
, может быть
переопределить, убедившись, что этот параметр следует за
пункт назначения параметр.
-prefixlen
также доступен для аналогичной цели для IPv6 / v4.
Определенный приоритет маршрутизации можно указать с помощью
необязательный
-приоритет
квалификатор. Если приоритет не указан, ядро установит приоритет
в зависимости от флага RTF_STATIC либо RTP_STATIC, либо RTP_DEFAULT.Заметка
этот приоритет 1 зарезервирован для использования ядром.
Дополнительный
-mpath
модификатор необходимо указать с помощью команды add
чтобы иметь возможность вводить несколько шлюзов для одного и того же адреса назначения
(многолучевость). Когда для пункта назначения существует несколько маршрутов, один маршрут
выбирается на основе адреса источника пакета. В
sysctl (8) переменные
net.inet.ip.multipath и
net.inet6.ip6.multipath используются для управления многопутевостью
маршрутизация.Если установлено значение 1, используются несколько маршрутов с одинаковым приоритетом.
в равной степени; если установлено значение 0, первый выбранный маршрут будет использоваться для последующих
пакеты в это место назначения независимо от источника.
При вставке маршрутов MPLS, определенные модификаторы
должны быть использованы. В
-mplslabel
модификатор должен быть указан во входящем LSR, чтобы связать конкретный
метку для маршрута IPv4 / IPv6. Трафик MPLS -в
и модификаторы -out
предназначены для идентификации
метка входа и, по желанию, исходящая.Кроме того, один из
необходимо использовать следующие операции: -push
,
-pop
и -swap
. Маршрут
nexthop можно указать с помощью модификатора
-инет
.
Маршруты имеют ассоциированные флаги, которые влияют на работу
протоколы при отправке в пункты назначения, соответствующие маршрутам. Эти флаги
может быть установлен (или иногда очищен) путем указания следующих соответствующих
модификаторы:
Необязательные модификаторы -expire
и
-mtu
предоставляет начальные значения для поддерживаемых количеств
в записи маршрутизации протоколами транспортного уровня, такими как TCP (см.
tcp (4)).У них есть следующие
значения:
-
- срок годности
п - Время жизни для маршрута (например, если сгенерировано перенаправлением).
-
-MTU
п - Максимальный размер блока передачи (MTU) для этого пути.
Они могут быть заблокированы индивидуально, предшествуя каждому такому
модификатор, который должен быть заблокирован
- замок
мета-модификатор, или можно указать, что все последующие метрики могут быть заблокированы
мета-модификатор -lockrest
.
В смене
или
добавить команду
, где указаны пункт назначения и шлюз
недостаточно для указания маршрута,
-ifp
или
-ifa
модификаторы могут использоваться для определения имени интерфейса или интерфейса
адрес.
Дополнительный
- этикетка
модификатор указывает при добавлении или изменении маршрута, что маршрут должен
с ним связан данный ярлык . Метки маршрута могут
использоваться для добавления произвольной информации к маршруту.
Все символические имена, указанные для
назначение или шлюз являются
посмотрел, используя
gethostbyname (3).
маршрут
использует сокет маршрутизации (см.
route (4)) и типы сообщений
RTM_ADD
, RTM_DELETE
,
RTM_GET
и RTM_CHANGE
. В качестве
таким образом, только суперпользователь может изменять таблицы маршрутизации.
Добавить статический маршрут inet (4) к
192.168.5.0/24 через сеть 192.168.0.1 шлюз:
# добавление маршрута -inet 192.168.5.0/24
192.168.0.1
Изменить маршрут inet (4) на
Сеть 192.168.5.0/24 для использования шлюза 192.168.0.2:
# изменение маршрута -inet 192.168.5.0/24
192.168.0.2
Удалить маршрут inet (4) к
192.168.5.0/24 сеть:
# удаление маршрута -inet
192.168.5.0/24
netstat (1),
gethostbyname (3),
netintro (4),
маршрут (4),
TCP (4),
хосты (5),
mygate (5),
bgpd (8),
ospfd (8),
рипд (8),
sysctl (8)
Команда route
появилась в
4.2BSD. Поддержка IPv6 была добавлена WIDE / KAME
проект.
Распределительная труба
,
- магазин
, - патрубок
,
-ssthres
, -rtt
и
-rttvar
модификаторы, которые использовались для инициализации
различные количества в записях таблицы маршрутизации. Система маршрутизации больше не
использует эти значения, а модификаторы существуют только для совместимости с
другие операционные системы.
Некоторое использование -ifa
или
-ifp
модификаторы с добавлением
команда будет неправильно работать с сообщением «Сеть недоступна»
сообщение, если нет маршрута по умолчанию.Посмотреть дело
RTM_ADD
в route_output
()
из sys / net / rtsock.c для получения подробной информации.
IPROUTE2 Utility Suite Documentation
Main PolicyRouting.Org Политика веб-сайтаRouting Book
9.0 Получение и компиляция IPROUTE2
9.1 Набор IP-команд
- 9.1.1 ip link - конфигурация сетевого устройства
- 9.1.2 ip link set --- изменение атрибутов устройства.
9.2 ip-адрес - протокол управления адресами
- 9.2.1 ip address add --- добавить новый адрес протокола.
- 9.2.2 удаление IP-адреса --- удаление адреса протокола.
- 9.2.3 ip address show --- посмотрите адреса протоколов.
9.3 Первичная и вторичная адресация IP-интерфейса:
- 9.3.1 очистка IP-адресов --- очистка адресов протокола.
9.4 соседний IP --- управление таблицей соседей / arp.
- 9.4.1 ip neighbour add --- добавить новую запись соседа
- 9.4.2 изменение IP соседа --- изменение существующей записи
- 9.4.3 замена IP-соседа --- добавить новую или изменить существующую запись
- 9.4.4 ip neighbour delete --- удалить запись о соседе.
- 9.4.5 ip neighbour show --- список соседних записей.
- 9.4.6 ip neighbour flush --- очистка соседних записей.
9.5 ip route - управление таблицей маршрутизации.
- 9.5.1 ip route add --- добавить новый маршрут
- 9.5.2 ip route change --- изменить маршрут
- 9.5.3 ip route replace --- изменить маршрут или добавить новый.
- 9.5.4 удаление IP маршрута
- 9.5.5 ip route показать
- 9.5.6 ip route flush - разрешает групповое удаление маршрутов
- 9.5.7 ip route get - получить маршрутизацию
9.6 правило ip --- управление базой данных политик маршрутизации.
- 9.6.1 ip rule add --- вставить новое правило
- 9.6.2 ip rule show - список правил политики
9.7 IP-туннель - конфигурация IP-туннеля
- 9.7.1 ip tunnel add - создание туннелей
- 9.7.2 ip tunnel show - список атрибутов туннеля
9.8 ip monitor и rtmon --- мониторинг состояния маршрута
9.9 rtacct - области маршрутов и распространение политик
9.10 Обзор служебной программы IP
9.11 Использование IP в сценариях
9.12 IPUP и IPDOWN
9.13 Сценарий инициализации IPNetwork
9.14 сценарий ifcfg
9.15 утилита arping
9.16 Стратегия маршрутизации - пример нескольких таблиц маршрутов
Документация пакета служебных программ IPROUTE2
Эта документация
охватывает утилиту ip из IPROUTE2.Эта утилита написана
Алексей Кузнецов, который также написал код маршрутизации IPv6 и IPv4 для
Linux 2.2. Это утилита, которую он использует для управления Linux 2.2-2.6.
код сетевого интерфейса.
Мы начнем с
объяснение, где получить коллекцию утилит и как скомпилировать
Это. После его компиляции мы рассмотрим созданные утилиты и в
в каком месте в системе они должны находиться. Это включает в себя все
утилиты из пакета IPROUTE2.
Тогда мы начнем
обширный охват команды ip с документацией по использованию и
Примеры.Этот раздел во многом основан на документации Алексея.
команды с дополнительным обсуждением и примерами. Несколько из
использование команды, например многоадресная рассылка и специфическое использование IPv6, будет
будет отложено на этом этапе, но мы будем расширять этот документ с помощью
это освещение с течением времени. Хотя это часто бывает
найдены на страницах руководства, в настоящее время не существует страниц руководства для команды ip
и собственная текущая документация Алексея доступна только в латексе.
формат. С разрешения Алексея мы отредактировали и расширили
Латексную документацию в разделы, найденные здесь.Если есть ошибки
в этих разделах они, вероятно, принадлежат переводу Матфея и
следует сначала адресовать ему.
Кому
свяжем воедино то, что мы узнали об утилите ip, мы перечислим
несколько рабочих примеров утилиты ip. К ним относятся несколько более длинных
примеры скриптов от Алексея, а также некоторые особенности повседневного использования
утилита. Затем в Оглавлении перечисляем набор примеров.
из реальной жизни, которые собраны здесь.
Получение
& Компиляция IPROUTE2
ip - это лишь одна из утилит в утилите IPROUTE2.
посылка от Алексея.Основной FTP-сайт находился в России по адресу
ftp://ftp.inr.ac.ru/ip-routing/
но больше не работает. Наиболее полное зеркало находится по адресу
http://www.linuxgrill.com/anonymous/iproute2/
с новейшим исходным кодом OSDL, расположенным в
http://www.linuxgrill.com/anonymous/iproute2/NEW-OSDL/
каталог. Предположим, что у вас есть
получил последний пакет, обычно называемый iproute2-current
символическая ссылка на последнюю датированную версию. Версия, которую мы в первую очередь рассматриваем
вот версия IPROUTE2 1999-06-30.
Как только утилита
был получен, вам нужно распаковать его в любой каталог, который вы используете
для компиляции исходного кода. По умолчанию используется / usr / src. Когда ты
если пакет распакован, вы можете войти в каталог и просто ввести
сделать. У вас должен быть исходный код ядра, который использовался для компиляции
ваше текущее работающее ядро находится в / usr / src / linux. Ты действительно хочешь
скомпилируйте собственную версию, если вы не используете дистрибутив
который включает утилиту, и вы не переделывали свое ядро.поскольку
одна из лучших функций настройки и безопасности, которые вы можете выполнить на своем
система должна получить и скомпилировать собственное ядро, которое вы
хотите скомпилировать эту утилиту, так как это маршрут
(8) - страница руководства Linux
маршрут (8) - страница руководства Linux
ROUTE (8) Руководство системного администратора Linux ROUTE (8)
НАЗВАНИЕ верх
route - показать / управлять таблицей IP-маршрутизации
ОБЗОР вверху
маршрут [ -CFvnNee ] [ -A семья | -4 | -6 ] маршрут [ -v ] [ -A семья | -4 | -6 ] доб. [ -net | -host ] цель [ маска сети Нм ] [ gw Gw ] [ метрическая N ] [ mss M ] [ окно W ] [ irtt I ] [0003 отклонить ] [ отклонить ] [ dyn ] [ восстановить ] [[ dev ] Если ] маршрут [ -v ] [ -A семья | -4 | -6 ] del [ -net | -host ] цель [ gw Gw ] [ netmask Nm ] [ metric M ] [[ dev ] If ] маршрут [ -V ] [ --version ] [ -h ] [ --help ]
ОПИСАНИЕ вверху
Маршрут управляет таблицами IP-маршрутизации ядра.Его основное использование: для настройки статических маршрутов к определенным хостам или сетям через интерфейс после его настройки с помощью программы ifconfig (8). Когда используются опции add или del , route изменяет маршрутизацию. таблицы. Без этих опций маршрут отображает текущее содержимое. таблиц маршрутизации.
ОПЦИИ вверху
-А семья используйте указанное семейство адресов (например, ʻinet ').Использовать маршрут - help для полного списка. Вы можете использовать -6 как псевдоним для --inet6 и -4 как псевдоним для -A inet -F работают с FIB ядра (база информации пересылки) таблица маршрутизации. Это значение по умолчанию. -C работают с кешем маршрутизации ядра. -v выбрать подробную операцию. -n показывать числовые адреса вместо попытки определить символические имена хостов.Это полезно, если вы пытаетесь определить, почему пропал маршрут к вашему серверу имен. -e использовать netstat (8) -format для отображения таблицы маршрутизации. -ee сгенерирует очень длинную строку со всеми параметрами из таблица маршрутизации. del удалить маршрут. добавить добавить новый маршрут. цель - сеть или хост назначения. Вы можете указать адреса или символическое имя сети или хоста.При желании вы можете использовать / prefixlen notation вместо использования опции netmask . -net цель - это сеть. -host цель - хост. маска сети NM при добавлении сетевого маршрута используется сетевая маска. gw GW маршрутизирует пакеты через шлюз. ПРИМЕЧАНИЕ. Сначала должен быть доступен указанный шлюз.Этот обычно означает, что вам нужно настроить статический маршрут к шлюз заранее. Если вы укажете адрес одного из ваших локальные интерфейсы, он будет использоваться для принятия решения о интерфейс, на который должны направляться пакеты. Это Взлом совместимости с BSDism. метрическая M установить поле метрики в таблице маршрутизации (используется маршрутизацией демоны) на M .Если этот параметр не указан, метрика для Семейство адресов inet6 (IPv6) по умолчанию равно 1, для inet (IPv4) по умолчанию это «0». Вы всегда должны указывать явное значение метрики, чтобы не полагаться на эти значения по умолчанию - они также различаются из iproute2. mss M устанавливает MTU (Maximum Transmission Unit) маршрута равным M байта. Обратите внимание, что текущая реализация команды маршрута делает не разрешать возможность установки максимального размера сегмента (MSS). окно W установите размер окна TCP для соединений по этому маршруту на Вт байтов. Обычно это используется только в сетях AX.25 и с драйверы не могут обрабатывать кадры, расположенные последовательно. irtt I устанавливает начальное время приема-передачи (irtt) для TCP-соединений по этому маршруту до I миллисекунды (1-12000). Обычно это используется только в сетях AX.25.Если опущено, RFC 1122 по умолчанию 300 мс. отклонить установить маршрут блокировки, который заставит поиск маршрута потерпеть поражение. Это, например, используется для маскировки сетей перед используя маршрут по умолчанию. Это НЕ для брандмауэра. мод, дин, восстановить установить динамический или измененный маршрут. Эти флаги предназначены для диагностические цели и обычно устанавливаются только маршрутизацией демоны. dev Если принудительно связывает маршрут с указанным устройством, как в противном случае ядро попытается определить устройство по его собственные (путем проверки уже существующих маршрутов и устройства спецификации и куда добавлен маршрут). В большинстве в обычных сетях вам это не понадобится. Если dev Если - последняя опция в командной строке, слово dev может быть опущен, поскольку это значение по умолчанию.В противном случае порядок модификаторы маршрута ( метрическая маска сети gw dev ) не имеют значения.
ПРИМЕРЫ вверху
route add -net 127.0.0.0 netmask 255.0.0.0 metric 1024 dev lo добавляет обычную запись loopback, используя маску сети 255.0.0.0 и связано с устройством "lo" (при условии, что это устройство было ранее правильно настроили с помощью ifconfig (8)). route add -net 192.56.76.0 маска сети 255.255.255.0 метрика 1024 dev eth0 добавляет маршрут в локальную сеть 192.56.76.x через "eth0". В слово "dev" здесь можно опустить. маршрут по умолчанию удаляет текущий маршрут по умолчанию, помеченный как "default" или 0.0.0.0 в поле назначения текущей маршрутизации Таблица. маршрут добавить по умолчанию gw mango добавляет маршрут по умолчанию (который будет использоваться, если нет другого маршрута совпадения).Все пакеты, использующие этот маршрут, будут шлюзом через адрес узла с именем "манго". Устройство, которое будет фактически использоваться для этого маршрута, зависит от того, как мы можем добраться до "манго" - "манго" должно быть по прямому доступному маршруту. маршрут добавить манго sl0 Добавляет маршрут к хосту с именем "mango" через SLIP. интерфейс (при условии, что "mango" является хостом SLIP). route add -net 192.57.66.0 маска сети 255.255,255,0 г манго Эта команда добавляет сеть "192.57.66.x" для шлюза. через первый маршрут к интерфейсу SLIP. route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 Это малоизвестный документ, поэтому люди знают, как это делать. Это устанавливает все IP-маршруты класса D (многоадресная рассылка) для прохождения через "eth0". Это правильная строка нормальной конфигурации с многоадресное ядро. route add -net 10.0.0.0 маска сети 255.0.0.0 метрика 1024 отклонить Это устанавливает отклоняющий маршрут для частной сети. "10.x.x.x." маршрут -6 добавить 2001: 0002 :: / 48 метрика 1 dev eth0 Это добавляет маршрут IPv6 с указанной метрикой, чтобы быть напрямую доступен через eth0.
ВЫХОД верхний
Вывод таблицы маршрутизации ядра организован следующим образом столбцы Пункт назначения Сеть назначения или хост назначения. Шлюз Адрес шлюза или "*", если не задан. Генмаск Сетевая маска для сети назначения; "255.255.255.255" для пункт назначения хоста и '0.0.0.0' для маршрута по умолчанию . Флаги Возможные флаги включают U (маршрут до ) H (цель - хост ) G (используйте шлюз ) R ( восстановить маршрут для динамической маршрутизации) D ( динамически устанавливается демоном или перенаправлением) M ( изменено из демона маршрутизации или перенаправления) A (устанавливается с помощью addrconf ) C ( кэш записи) ! ( отклонить маршрут ) Метрическая система «Расстояние» до цели (обычно рассчитывается в шагах). Ref Количество ссылок на этот маршрут. (Не используется в Linux ядро.) Используйте Количество поисков для маршрута. В зависимости от использования -F и -C это будут либо промахи кэша маршрута (-F), либо попадания (-С). Iface Интерфейс, на который будут отправляться пакеты для этого маршрута. MSS Максимальный размер сегмента по умолчанию для TCP-соединений через этот маршрут. Окно Размер окна по умолчанию для TCP-соединений по этому маршруту. irtt Initial RTT (время прохождения туда и обратно). Ядро использует это, чтобы угадать о лучших параметрах протокола TCP без ожидания (возможно медленные) ответы. HH (только кэширование) Количество записей ARP и кэшированных маршрутов, относящихся к аппаратный кеш заголовков для кэшированного маршрута. Это будет -1, если аппаратный адрес не требуется для интерфейса кешированный маршрут (например, lo). Arp (только кэширование) Установлен ли аппаратный адрес для кэшированного маршрута встретиться.
ФАЙЛОВ вверху
/ proc / net / ipv6_route / proc / net / route / proc / net / rt_cache
СМОТРИТЕ ТАКЖЕ top
ifconfig (8), netstat (8), arp (8), rarp (8), ip (8)
ИСТОРИЯ вверху
Route для Linux изначально был написан Фредом Н.ван Кемпен,, а затем изменен Йоханнесом Стиллом и Линус Торвальдс для pl15. Алан Кокс добавил опции mss и window для Linux 1.1.22. Поддержка irtt и объединение с netstat от Bernd Эккенфельс.
АВТОР верх
В настоящее время поддерживается Филом Бланделломи Бернд Эккенфельс .
COLOPHON верх
Эта страница является частью проекта net-tools (сетевые утилиты).Информацию о проекте можно найти на сайте ⟨Http: //net-tools.sourceforge.net/⟩. Если у вас есть отчет об ошибке для эту страницу руководства см. ⟨http: //net-tools.sourceforge.net/⟩. Эта страница был получен из исходного репозитория Git проекта ⟨Git: //git.code.sf.net/p/net-tools/code⟩ от 01.11.2020. (При этом time, дата последней фиксации, найденной в репозиториях. история была 3 ноября 2018 г.) Если вы обнаружите какие-либо проблемы с рендерингом в эту HTML-версию страницы, или вы считаете, что есть лучшая или более свежий источник для страницы, или у вас есть исправления или Доказательства информации в этом КОЛОФОНЕ (который является , а не частью исходную страницу руководства), отправьте письмо по адресу man-pages @ man7.org
Страницы, которые относятся к этой странице:
сети (5),
proc (5),
procfs (5),
arp (8),
ifconfig (8),
netstat (8),
рапс (8)
VisualRoute Full (все версии)
VisualRoute Lite (бесплатно для некоммерческих целей) Скачать FAQ
Требования
| * VisualRoute имеет 4 версии, но СКАЧАТЬ ТОЛЬКО ОДНУ .Лицензионный ключ разблокирует купленную версию. Пробная версия полностью функциональна и длится 15 дней. |
.