Содержание
Содержание:
Что такое маршрутизация
Вся цифровая информация передаётся по сети в виде пакетов данных. По пути от отправителя к адресату они проходят через цепочку промежуточных устройств – маршрутизаторов (роутеров) и/или соответственно настроенных компьютеров.
Маршрутизация – это процесс определения пути (сетевого маршрута) для установки соединения между хост-устройствами. Этот путь настраивается как внутри локального устройства, так и на маршрутизаторе.
Построение сетевого маршрута происходит на основе информации из таблиц маршрутизации. Для их формирования применяются протоколы маршрутизации или инструкции сетевого администратора.
Каждая таблица содержит ряд параметров, позволяющих правильно идентифицировать и читать сетевой маршрут. Таблица содержит минимум 5 разделов:
- Destination (Target). IP-адрес сети назначения – конечной цели для передаваемых данных.
- Netmask (Genmask). Маска сети.
- Gateway. IP-адрес шлюза, через который можно добраться до цели.
- Interface. Адрес сетевого интерфейса, по которому доступен шлюз.
- Metric. Числовой показатель, задающий предпочтительность маршрута.
Опционально в таблице также может содержаться следующая информация:
- адрес отправителя (source);
- размер TCP-окна (window);
- максимальная величина пакета (MSS) и типы записей.
Как посмотреть таблицу маршрутизации
Таблицу маршрутизации в Linux (например, в популярных серверных ОС типа Ubuntu или CentOS) можно посмотреть с помощью нескольких команд.
Команда route
Программа используется для настройки параметров статической маршрутизации. Просмотр таблицы можно осуществить с помощью команды:
route -n
Команда netstat
Утилита используется для сбора информации о состоянии сетевых соединений. Вывести таблицу можно с помощью команды:
netstat -r
Построение таблицы маршрутизации
Существует несколько основных утилит для настройки таблицы маршрутизации (добавления, обновления, удаления старых и новых маршрутов):
- Route. Устаревшая утилита, входящая в состав пакета net-tools. Служит для отображения таблицы маршрутизации и построения статических маршрутов.
- IP Route. Обновленный инструмент, призванный заменить Route. Имеет большую функциональность, по сравнению со своим предшественником.
Оба инструмента могут использоваться для выполнения аналогичных задач. Далее будет рассмотрен синтаксис каждого в пределе основных возможностей.
Route
Команда имеет следующий вид:
route [-f] [-p] command -net [destination] netmask [MASK netmask] gw [gateway] metric [METRIC metric] dev [IF interface]
Ключи
- -f – очистка таблиц от записей всех шлюзов.
- -p – сохранение маршрута в качестве постоянного при использовании ADD. По умолчанию все маршруты временные и после перезагрузки системы сбрасываются.
Основные опции (command)
- add – добавление маршрута.
- del – удаление маршрута.
- replace – замена маршрута.
- change – изменение или настройка параметров маршрута.
Обозначения
- [destination] – адрес сети назначения.
- [MASK netmask] – маска подсети.
- [gateway] – адрес шлюза.
- [METRIC metric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
- [IF interface] – сетевой интерфейс.
Опции для указания вводных данных
- -net – целевая сеть.
- -host – целевой хост.
- gw – шлюз (Gateway).
- dev – сетевой интерфейс.
- netmask – маска подсети.
- metric – метрика.
IP Route
Команда имеет следующий вид:
ip route command [destination] netmask [MASK netmask] via [gateway] metric [METRIC metric] dev [IF interface]
Основные опции (command)
- add – добавление маршрута.
- del – удаление маршрута.
- replace – замена маршрута.
- change – изменение или настройка параметров маршрута.
Обозначения
- [destination] – адрес сети назначения.
- [MASK netmask] – маска подсети.
- [gateway] – адрес шлюза.
- [METRIC metric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
- [IF interface] – сетевой интерфейс.
Опции для указания вводных данных
- via – используется в значении «через» для указания шлюза.
- dev – сетевой интерфейс.
- netmask – маска подсети.
- metric – метрика.
Примеры статической маршрутизации
Составление нового маршрута
Можно представить два офиса: A и B. В каждом стоят маршрутизаторы на Linux, которые соединены между собой IP-IP туннелем.
Маршрутизатор A имеет IP-адрес — 192.168.1.1, а маршрутизатор B — 192.168.1.2.
Чтобы подключение к локальной сеть маршрутизатора A стало возможным из локальной сети маршрутизатора B и наоборот, нужно прописать на маршрутизаторе B:
route add -net 172.16.10.0/24 gw 192.168.1.1
Будет произведена установка шлюза «192.168.1.1» для сети «172.16.10.0/24».
Также необходимо прописать на маршрутизаторе A обратный маршрут в локальную сеть маршрутизатора B:
route add -net 172.20.0.0/24 gw 192.168.1.2
Изменение локальной сети
В случае изменения локальной сети маршрутизатора B, необходимо удалить старую запись:
route del -net 172.20.0.0/24 gw 192.168.1.2
А после добавить новый маршрут на маршрутизаторе А:
route add -net 172.20.0.0/24 gw 192.168.1.2
Изменение адреса тоннеля
Если на маршрутизаторе B изменится IP-адрес туннеля, то следует также актуализировать адрес шлюза на маршрутизаторе А:
ip route replace 172.16.10.0/24 via 192.168.1.3
После выполнения команды адрес шлюза для подсети «172.16.10.0/24» будет изменён.
Изменение провайдера
Чтобы перенаправить трафик через другого провайдера («ISP2»), следует изменить маршрут «по умолчанию» («default»):
ip route replace default via 5.215.98.7
Статья про таблицу маршрутизации – тема, обещанная около четырех лет тому назад. На самом деле, давно нужно было про нее написать, но никак не мог решиться и только сейчас делаю попытку.
Манипуляции с таблицей маршрутизации позволяют тонко настраивать работу ваших сетей. Чаще всего это не нужно, но иногда требуется сделать что-то необычное, особенно, когда на комрьютере несколько адаптеров, и тогда приходится браться за таблицы маршрутизации.
Просмотр таблицы маршрутизации
Приведу вывод команды route print на моем стаионарном компьютере:
Сетевой адрес | Маска сети | Адрес шлюза | Интерфейс | Метрика |
---|---|---|---|---|
0.0.0.0 | 0.0.0.0 | 192.168.1.1 | 192.168.1.100 | 20 |
127.0.0.0 | 255.0.0.0 | On-link | 127.0.0.1 | 306 |
127.0.0.1 | 255.255.255.255 | On-link | 127.0.0.1 | 306 |
127.255.255.255 | 255.255.255.255 | On-link | 127.0.0.1 | 306 |
192.168.1.0 | 255.255.255.0 | On-link | 192.168.1.100 | 276 |
192.168.1.100 | 255.255.255.255 | On-link | 192.168.1.100 | 276 |
192.168.1.255 | 255.255.255.255 | On-link | 192.168.1.100 | 276 |
244.0.0.0 | 240.0.0.0 | On-link | 127.0.0.1 | 306 |
244.0.0.0 | 240.0.0.0 | On-link | 192.168.1.100 | 276 |
255.255.255.255 | 255.255.255.255 | On-link | 127.0.0.1 | 306 |
255.255.255.255 | 255.255.255.255 | On-link | 192.168.1.100 | 276 |
Вот так мы можем просмотреть таблицы маршрутизации. Попробуем описать, что все это означает. Каждая строчка опреедляет, куда отправлять какие пакеты. То есть для диапазона, задаваемого значениями в колонках “сетевой адрес” и “маска сети” создается сетевой маршрут. Например, адрес 192.168.0.1 и маска 255.255.255.0 означают, что имеется в виду диапазон 192.168.0.*. Маска всегда имеет вид, когда вначале стоят 255, в конце – нули, а последним ненулевым числом может быть степень двойки минус один. Например, для маски 255.255.127.0 и того же адреса 192.168.0.1 диапазон будет чуть шире, в него войдут и адреса вида 192.168.1.*. Чтобы описать это точнее, надо представить все числа в двоичном виде, но это не является целью статьи.
Итак, если мы определились с диапазоном, мы должны понять, куда же компьютер будет направлять пакеты, если они предназначены адресам из этого диапазона. Начнем с четвертой колонки. Она определяет тот адаптор, на который нужно отправлять пакеты. Например, в данном случае, в ней встречаются 192.168.1.100 – это адрес моей сетевой карты и 127.0.0.1 – так называемая обратная петля. Пакеты “на этот адаптор” компьютер даже не будет пытаться отправлять куда-либо. Если бы у меня была активна другая карта, например, WiFi, то в четвертой колонке встречался бы и е адрес.
Третья колонка определяет “шлюз” – тот маршрутизатор, которому нужно послать эти пакеты. В случае, когда там написано “On-link”, имеется в виду, что никаких маршрутизаторов не нужно – адрес и так находится в прямой досягаемости. Последняя колонка – метрика. Она определяет предпочтение для маршрута, когда есть варианты. Строчки с наименьшей метрикой предпочтительны при совпадении диапазонов.
Итак, давайте разберем описанные маршруты. На самом деле, самой важной является в данном случае первая строчка. Она говорит, что для любого адреса (адрес 0.0.0.0 с маской 0.0.0.0 задает полный диапазон) есть маршрут с использованием моей сетевой карты, и направить можно эти пакеты по адресу 192.168.1.1. Последний адрес является моим роутером, что все и объясняет. Любой адрес, который компьютер не сможет найти где-то рядом, он направит на роутер и предоставит тому с ним разбираться.
Поговорим про остальное. Три строчки про 127 – системные, связаны с тем, что эти адреса всегда должны возвращаться на сам компьютер. Адреса диапазона 192.168.1.* являются локальной сетью, 192.168.1.100 – вообще наш адрес, 192.168.1.255 – специальный адрес для широковещательных пакетов в локальной сети. Адреса 244.0.0.0 – тоже специальные зафиксированные адреса для широкого вещания, а две последние строчки определяют сами адаптеры.
Но этот случай достаточно неинтересный. Посмотрим на таблица на моем роутере. Внешний вид будет немного другой, поскольку на нем Линукс, и я вывожу соответствующие таблицы командой route -n.
Destination | Gateway | Genmask | Flags | Metric | Ref | Use | Iface |
---|---|---|---|---|---|---|---|
10.0.20.43 | 0.0.0.0 | 255.255.255.255 | UH | ppp0 | |||
192.168.1.0 | 0.0.0.0 | 255.255.255.0 | U | br0 | |||
10.22.220.0 | 0.0.0.0 | 255.255.255.0 | U | vlan1 | |||
10.0.0.0 | 10.22.220.1 | 255.224.0.0 | UG | vlan1 | |||
127.0.0.0 | 0.0.0.0 | 255.0.0.0 | U | lo | |||
0.0.0.0 | 10.0.20.43 | 0.0.0.0 | UG | ppp0 |
Заметим сразу, что колонки немного изменились. На всех мы останавливаться не будем, существенной измененной колонкой является последняя – вместо IP-адреса адаптора мы указываем его имя. Здесь lo – это “петля” (никуда не отправлять), br0 – внутренняя сеть, ppp0 – внешняя, vlan0 – установленное vpn-содениение. Итак, разберем строчки. Также в колонке с флагами буква G означает Gateway – шлюз, а H – Host, наш компьютер.
Последняя строчка – шлюз по умолчанию. Любой пакет мы может отправить на адрес 10.0.20.43. Что интересно, это – наш собственный адрес, полученный при установке VPN – соединения! Так всегда получается, когда установлено VPN-соединения, пакет, в первую очередь отправляем своему виртуальному интерфейсу, где он инкапсулируется в другой пакет, который пойдет до реального шлюза. Естественно, в таблицах маршрутизации этого не видно. Также к описанию этого соединения относится и первая строчка.
Настоящий шлюз мы видим в третей строчке – адресы диапазона 10.22.220.* отправляются на vlan1, шлюз, предоставленный провайдером, коммуникатор, с которым мы соединены сетевым кабелем напрямую. Вторая строчка говорит о том, что адреса диапазона 192.168.1.* – это локальная сеть, и пакеты к ним нужно отправлять внутрь, а не вовне. Пятая – обычная информация про “локальные адреса”.
Команды таблицы маршрутизации
Я ничего не сказал про предпоследнюю строчку. А она самая интересная, ведь я ее добавил руками. В чем ее смысл? Адреса диапазона 10.1-32.*.* я отправляю на шлюз 10.22.220.1. Пакеты на эти адреса не пойдут в интернет, а останутся в локалке провайдера. Да, пакеты на диапазон 10.22.220. и так идут туда, но этого мало. Так я не получаю полноценного доступа к локальным ресурсам.
В случае Windows такой маршрут в таблицы маршрутизации был бы добавлен командой route -p add 10.0.0.0 mask 255.224.0.0 10.22.220.1. -p означает, что маршрут постоянный, он не должен удаляться после перезагрузки компьютера.
Статья и так уже получилась намного длинней обычных статей этого блога, так что я заканчиваю. Пишите свои вопросы здесь, а если же вы хотите разобрать какие-то спицифические случаи настройки, лучше обращайтесь на нашем форуме.
← Что такое компакт-диски? | Как разбить жесткий диск? → |
comments powered by Disqus
Вопрос знатокам: Скажите, где находится ветка реестра, в которой находятся таблицы маршрутизации. Спасибо!
С уважением, Людмила Каминская
Лучшие ответы
all ksa:
Статические маршруты задают путь для достижения конкретного узла и сохраняются в разделе реестра
HKLMSYSTEMCurrentControlSetServicesTcpipParametersPersistentRoutes
Возможно Вам нужено другое
Файл Hosts участвует в процессе определения IP адреса сервера по его имени, и модификация этого файла может привести к нарушению данного процесса и подмене адреса любого хоста. Поэтому обнаружение в нем посторонних записей, особенно связанных с популярными поисковыми системами или антивирусными продуктами, однозначно свидетельствует о деятельности вредоносной программы.
По умолчанию в нем должна быть только одна строчка: 127.0.0.1 localhost (плюс комментарии, начинающиеся со знака #). Все остальное можно стирать.
Открыть и отредактировать файл Hosts можно любым текстовым редактором (например, Блокнот/Notepad), и по умолчанию он находится здесь:
Для Windows 95/98/ME: C:WINDOWSHosts
Для Windows 2000/NT: C:WINNTsystem32driversetcHosts
Для Windows 2003/XP/Vista/7: C:WINDOWSsystem32driversetcHosts
Видео-ответ
Это видео поможет разобраться
Ответы знатоков
d:
ps: а че у стрима за оборудование ви-фи что там нельзя нет dhcp?
Тоник:
Во ты загнул))
maxx_xak@list :
если у тебя есть инет через wifi зачем тогда юзать еще GPRS/EDGE/3G. ?
Саня Семенов:
поставь Pocket DOS
Козлов Вячеслав:
Внешне практически все «мобильные» редакторы реестра похожи и напоминают знаменитый Regedit из настольной версии Windows. А различия состоят в функциональной «начинке» приложения. Например, если вы планируете вносить в реестр серьезные изменения, естественно вам понадобится мощный, но в то же время удобный и быстрый редактор. В этом случае стоит обратить внимание на программу IBE Registry Editor.
Makee @mAggI@:
ps: а че у стрима за оборудование ви-фи что там нельзя нет dhcp?jjjjjhshfgjfgkghujfh
Александр:Виталий Догин:
сматря какой провайдер
для примера :
Дмитpий Pyблeв:
Пуск — Настройка — Панель управления — Администрирование — Службы — Маршрутизация и удаленный доступ — дважды щелкнуть — установить тип запуска Авто и ниже нажать кнопку Пуск. Теперь она будет постоянно работать
В начале года я писал статью о том, как разделить рабочий и интернет трафик при VPN подключении.
Недавно система обновилась до Windows 1903 и рабочий трафик перестал ходить. Точнее эхо-запросы (ping) проходят успешно, но с одной стороны, подключение RDP перестало работать, да и tracert не отрабатывает должным образом.
В итоге найдено простое решение: пересоздать маршрут, т.е. удалить существующий и создать новый точно такой же.
Для маршрута озвученного примера необходимо выполнить:
route delete 192.168.1.0
А затем вновь прописать маршрут:
route add 192.168.1.0 mask 255.255.255.0 192.168.112.45 if 36 -p
После этих действий работоспособность маршрута полностью восстановилась.
В чем именно причина того, что маршрут перестал работать мне сложно сказать, но подобная ситуация повторилась и на ноутбуке, опять же, после обновления. Решение помогло.
(Visited 285 times, 1 visits today)
Для определения и задания маршрутов в сетях существуют динамическая и статическая маршрутизации. В первом случае маршруты задаются специальным демоном маршрутизации, который модифицирует соответствующим образом таблицу маршрутизации ядра. Во втором случае маршруты задаются администратором/пользователем при помощи команды route. Маршруты, заданные командой route не изменяются, даже если включена динамическая маршрутизация.
Содержание
Как работает маршрутизация?
Прежде всего нужно понимать, что процессы маршрутизации осуществляются на сетевом уровне. Для каждого пакета проводится сравнение его целевого IP-адреса с записями в таблице маршрутизации. Когда обнаруживается хотя бы частичное соответствие с одним из шлюзов в таблице, пакет направляется к следующему узлу (шлюзу), соответствующему найденному маршруту. И здесь может возникать несколько ситуаций:
Первая — когда, например, пакет адресуется компьютеру, находящемуся в той же сети, что и источник пакета, а точнее сказать — его отправитель. В данной ситуации для такого пакета следующим шлюзом является один из локальных интерфейсов и он (пакет) отправляется сразу к адресату. Такие «явные» и «короткие» шлюзы обычно задаются во время конфигурирования сетевых интерфейсов — командой ifconfig.
Вторая — когда адрес назначения пакта не соответствует ни одному шлюзу в таблице маршрутизации. В таком случае, во избежание коллизий в сети и её чрезмерной нагрузки должен быть задействован шлюз по-умолчанию. Другими словами, это такой маршрут, который указывает системному ядру: все остальные пакеты (без соответствий в таблице маршрутов) направляй сюда. Если шлюз по-умолчанию не будет предусмотрен, то отправляющей стороне посылается сообщение о недостижимости сети или узла.
Как правило, локальные сети имеют единственный шлюз во внешнюю среду, например в Интернет. В свою очередь, в сети Интернет таких «стандартных маршрутов» не существует.
Синтаксис и основные опции
Основное назначение команды route – добавление и удаление сетевых маршрутов для системного ядра, а также просмотр содержимого таблицы маршрутизации. Эта команда, хотя и работает в разных UNIX-подобных системах одинаково, однако имеет резко отличающийся синтаксис в зависимости от используемой системы.
В общем случае прототипом команды route является следующая запись:
route add [-net|-host] netmask gw dev X
Например:
$ route add -net 127.0.0.0 netmask 255.0.0.0 metric 1024 dev lo
Эта команда добавит шлюз с обратной связью через виртуальное устройство lo, которое используется для этой цели в Linux-системах. Опции -net и -host используются для указания адреса, характеризующего либо сеть, либо узел соответственно как пункты назначения. Для определения подсети служит опция netmask, для задания приоритета шлюза — опция metric. Сетевой интерфейс обозначается опцией dev. Кроме описанных выше для команды route также существуют и другие используемые ей опции, которые приведены в следующей таблице:
Опция |
Назначение |
del |
Удаление маршрута |
gw |
Шлюз, через который должны достигаться сеть или узел. Задаётся в виде имени узла или точечной записи адреса. |
mss |
Устанавливает значение MTU (максимальную величину пакета) в байтах. |
window |
Устанавливает размер TCP-окна для задаваемого шлюза в байтах. Обычно используется в сетях AX.25. |
irtt |
Устанавливает начальное время отклика для TCP-соединений по данному маршруту в миллисекундах. |
reject |
Задаёт блокирующий маршрут, который должен приводить к остановке процедуры поиска маршрутов. Полезно при скрытии сетей для использования в них шлюз по-умолчанию. |
-F |
Заставляет работать с таблицей маршрутизации ядра. Эта опция в большинстве систем используется по-умолчанию, поэтому часто опускается. |
-C |
Заставляет работать с кэшем маршрутизации ядра. |
-v |
Включает подробный режим работы команды route. |
-n |
Использование числового формата адресов вместо попыток определения символьных наименований узлов. Можно использовать в случае определения проблем с соединениями к DNS. |
-e |
Использовать формат вывода команды netstat для отображения содержимого таблицы маршрутов. Опция -ee сгенерирует самый подробный отчёт с полными наименованиями параметров таблицы маршрутов. |
Примеры использования
Определить маршрут к сети, которая должна быть достигнута через сетевой интерфейс eth0:
Здесь для команды route не указывается сам интерфейс, поскольку предполагается, что узлу nodeone соответствует адрес 192.168.1.2. Далее, route «узнаёт», что маршрут нужно проложить именно через eth0 благодаря тому, что системное ядро анализирует все доступные интерфейсы на предмет их конфигурации и сравнивает адрес пункта назначения с сетевой частью сетевых (сконфигурированных) интерфейсов. В данном случае ядро обнаруживает, что eth0 – тот интерфейс (с адресом 192.168.1.2), которому соответствует конечный адрес, т. е. 192.168.1.0.
Задание шлюза по-умолчанию:
$ route add default gw 192.168.1.1 eth0
Доступ в локальную сеть Ethernet через сетевой интерфейс eth0:
$ route add -net 192.168.10.0 netmask 255.255.255.0 eth0
Здесь 192.168.10.0 – сеть, к которой нужно установить доступ (маршрут).
Вывод содержимого таблицы маршрутов ядра осуществляется командой route без параметров, для подробных результатов используется опция -ee.
Также можно использовать сокращённую запись для задания маски подсети:
$ route add -net 192.168.10.0/24 eth0
Следует отметить, что шлюзы, установленные командой route будут существовать до перезагрузки системы. Для их использования на постоянной основе необходимо нужные команды прописать в файле. В Ubuntu это /etc/network/interfaces.
Например для настройки маршрутизации сети 192.168.10.0/24 через шлюз 192.168.10.1 интерфейс eth0, это команда
$ route add -net 192.168.10.0/24 gw 192.168.10.1 eth0
файл /etc/network/interfaces будет выглядеть следующим образом
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.10.8 hwaddress ether 00:E0:4C:A2:C4:48 netmask 255.255.255.0 broadcast 192.168.10.255 up route add -net 192.168.10.0/24 gw 192.168.10.1 eth0 auto eth1 iface eth1 inet static address 172.16.0.34 netmask 255.255.255.0 gateway 172.16.0.1 broadcast 172.16.0.255
В Centos/Redhat это файл /etc/sysconfig/network-scripts/route-eth0 для интерфейса eth0 если же название интерфейса другое, то название файла будет route-<название интерфейса>. Если этого файла нет, то его нужно создать. Для настройки выше указанного примера, добавьте в файл следующие строки
192.168.10.0/24 via 192.168.10.1
Также можно прописать и несколько дополнительных маршрутов, для этого просто указываем их в новой строке. После чего сохраняем файл и рестартуем сетевую службу
systemctl restart network
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
ли со статьей или есть что добавить?