Metric routing in linux

Содержание
  1. Маршрутизация в Linux
  2. Материал из Xgu.ru
  3. Содержание
  4. [править] Команды
  5. [править] Использование route
  6. [править] Использование ip
  7. [править] Действия с маршрутами
  8. [править] Equal Cost Multi Path
  9. [править] IPv6
  10. [править] Просмотр маршрутов до определенной сети
  11. [править] Пересылка пакетов между интерфейсами
  12. [править] Конфигурационные файлы
  13. [править] Policy routing
  14. Просмотр и построение таблиц маршрутизации в Linux
  15. Что такое маршрутизация
  16. Как посмотреть таблицу маршрутизации
  17. Команда route
  18. Команда netstat
  19. Построение таблицы маршрутизации
  20. Route
  21. Ключи
  22. Основные опции (command)
  23. Обозначения
  24. Опции для указания вводных данных
  25. IP Route
  26. Основные опции (command)
  27. Обозначения
  28. Опции для указания вводных данных
  29. Примеры статической маршрутизации
  30. Составление нового маршрута
  31. Изменение локальной сети
  32. Изменение адреса тоннеля
  33. Изменение провайдера
  34. RootUsers
  35. Guides, tutorials, reviews and news for System Administrators.
  36. How To Display Routing Table In Linux
  37. Using ip command
  38. Using netstat command
  39. Using route command
  40. Summary
  41. Маршрутизация с помощью метрик
  42. а можно поподробнее?

Маршрутизация в Linux

Материал из Xgu.ru

Linux предоставляет большой набор функций для маршрутизации и инструменты для ее настройки. Ядро 2.6.x поддерживает:

  • Простую статическую маршрутизацию.
  • Equal Cost Multi Path маршруты (маршруты до одной сети с одинаковым весом, которые выбираются с равной вероятностью).
  • Blackhole-маршруты.
  • Множественные таблицы маршрутизации.
  • Policy Based Routing

Содержание

[править] Команды

Для управления маршрутизацией применяются следующие команды: route, netstat, ip (последняя из пакета iproute2, возможно его придется установить).

Просмотреть таблицу можно следующими способами:

При этом следует учитывать, что доступ ко всем возможностям дает только ip. Используя route вы не только не сможете настроить «продвинутые» функции вроде политик маршрутизации, но и не увидите их существование в выводе команды просмотра, если они уже настроены в системе. Поэтому следует по возможности использовать ip.

Модификация таблицы маршрутизации:

[править] Использование route

[править] Использование ip

Синтаксис ip по структуре напоминает синтаксис Cisco IOS. Любые опции могут быть сокращены до потери двусмысленности, например «ip ro ad» вместо «ip route add».

Командой вида ip route add blackhole 10.56.50.0/27 можно добавить «зануленный» маршрут (аналог «ip route . null0» в Cisco). Пакеты в сеть с таким маршрутом будут удалены с причиной «No route to host». Может быть полезно для подавление DoS-атаки с хоста или иных подобных случаев.

[править] Действия с маршрутами

Кроме add также поддерживаются и другие действия:

  • del — удалить маршрут.
  • replace — заменить маршрут другим.
  • change — изменить параметры маршрута.

[править] Equal Cost Multi Path

Если добавить два маршрута до одной и той же сети с одинаковой метрикой, ядро начнет распределять нагрузку между ними путем выбора того или другого с равной вероятностью. Работает и для более чем двух маршрутов. Предупреждение: это может вызвать проблемы со входящими соединениями, потому что иногда ответ может пойти по другому маршруту, чем пришел запрос. Будьте осторожны.

[править] IPv6

Настройка маршрутизации IPv6 почти идентична настройке для IPv4.

В некоторых дистрибутивах еще есть нерешенная проблема с маршрутом по умолчанию (например, старые версии RHEL), используйте

[править] Просмотр маршрутов до определенной сети

На маршрутизаторах с длинной таблицей может быть неудобно просматривать вывод «ip route show» в поисках нужного маршрута. В этом случае можно использовать команду вида:

которая выведет маршруты только до указанной сети.

[править] Пересылка пакетов между интерфейсами

Linux позволяет разрешить или запретить пересылку пакетов между интерфейсами (forwarding). На рабочих станциях и серверах приложений ее можно запретить, на маршрутизаторах или межсетевых экранах она, очевидно, должна быть разрешена.

За этот параметр для IPv4 отвечает переменная net.ipv4.ip_forward (1 = «разрешить», 0 = «запретить»).

Для IPv6 используйте net.ipv6.conf.all.forwarding

Чтобы настройки сохранились после перезагрузки, пропишите значения net.ipv4.ip_forward и net.ipv6.conf.all.forwarding в /etc/sysctl.conf.

[править] Конфигурационные файлы

Настройки статической маршрутизации находятся в различных файлах, в зависимости от дистрибутива.

  • Debian GNU/Linux: /etc/network/interfaces
  • RHEL/CentOS/Scientifix: etc/sysconfig/network-scripts/route-
  • Gentoo: /etc/conf.d/net

(добавьте свои дистрибутивы, пожалуйста)

[править] Policy routing

Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3), не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.

Все будут ходить через шлюз 10.0.1.2, а 192.168.1.1 — через 10.0.3.4.

Источник

Просмотр и построение таблиц маршрутизации в Linux

Содержание:

Что такое маршрутизация

Вся цифровая информация передаётся по сети в виде пакетов данных. По пути от отправителя к адресату они проходят через цепочку промежуточных устройств – маршрутизаторов (роутеров) и/или соответственно настроенных компьютеров.

Маршрутизация – это процесс определения пути (сетевого маршрута) для установки соединения между хост-устройствами. Этот путь настраивается как внутри локального устройства, так и на маршрутизаторе.

Построение сетевого маршрута происходит на основе информации из таблиц маршрутизации. Для их формирования применяются протоколы маршрутизации или инструкции сетевого администратора.

Каждая таблица содержит ряд параметров, позволяющих правильно идентифицировать и читать сетевой маршрут. Таблица содержит минимум 5 разделов:

  • Destination (Target). IP-адрес сети назначения – конечной цели для передаваемых данных.
  • Netmask (Genmask). Маска сети.
  • Gateway. IP-адрес шлюза, через который можно добраться до цели.
  • Interface. Адрес сетевого интерфейса, по которому доступен шлюз.
  • Metric. Числовой показатель, задающий предпочтительность маршрута.

Опционально в таблице также может содержаться следующая информация:

  • адрес отправителя (source);
  • размер TCP-окна (window);
  • максимальная величина пакета (MSS) и типы записей.

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

Таблицу маршрутизации в Linux (например, в популярных серверных ОС типа Ubuntu или CentOS) можно посмотреть с помощью нескольких команд.

Команда route

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

Команда netstat

Утилита используется для сбора информации о состоянии сетевых соединений. Вывести таблицу можно с помощью команды:

Построение таблицы маршрутизации

Существует несколько основных утилит для настройки таблицы маршрутизации (добавления, обновления, удаления старых и новых маршрутов):

  • Route. Устаревшая утилита, входящая в состав пакета net-tools. Служит для отображения таблицы маршрутизации и построения статических маршрутов.
  • IP Route. Обновленный инструмент, призванный заменить Route. Имеет большую функциональность, по сравнению со своим предшественником.

Оба инструмента могут использоваться для выполнения аналогичных задач. Далее будет рассмотрен синтаксис каждого в пределе основных возможностей.

Route

Команда имеет следующий вид:

Ключи

  • -f – очистка таблиц от записей всех шлюзов.
  • -p – сохранение маршрута в качестве постоянного при использовании ADD. По умолчанию все маршруты временные и после перезагрузки системы сбрасываются.

Основные опции (command)

  • add – добавление маршрута.
  • del – удаление маршрута.
  • replace – замена маршрута.
  • change – изменение или настройка параметров маршрута.

Обозначения

  • [destination] – адрес сети назначения.
  • [MASKnetmask] – маска подсети.
  • [gateway] – адрес шлюза.
  • [METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
  • [IFinterface] – сетевой интерфейс.

Опции для указания вводных данных

  • -net – целевая сеть.
  • -host – целевой хост.
  • gw – шлюз (Gateway).
  • dev – сетевой интерфейс.
  • netmask – маска подсети.
  • metric – метрика.

IP Route

Команда имеет следующий вид:

Основные опции (command)

  • add – добавление маршрута.
  • del – удаление маршрута.
  • replace – замена маршрута.
  • change – изменение или настройка параметров маршрута.

Обозначения

  • [destination] – адрес сети назначения.
  • [MASKnetmask] – маска подсети.
  • [gateway] – адрес шлюза.
  • [METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
  • [IFinterface] – сетевой интерфейс.

Опции для указания вводных данных

  • via – используется в значении «через» для указания шлюза.
  • dev – сетевой интерфейс.
  • netmask – маска подсети.
  • metric – метрика.

Примеры статической маршрутизации

Составление нового маршрута

Можно представить два офиса: A и B. В каждом стоят маршрутизаторы на Linux, которые соединены между собой IP-IP туннелем.

Маршрутизатор A имеет IP-адрес — 192.168.1.1, а маршрутизатор B — 192.168.1.2.

Чтобы подключение к локальной сеть маршрутизатора A стало возможным из локальной сети маршрутизатора B и наоборот, нужно прописать на маршрутизаторе B:

Будет произведена установка шлюза «192.168.1.1» для сети «172.16.10.0/24».

Также необходимо прописать на маршрутизаторе A обратный маршрут в локальную сеть маршрутизатора B:

Изменение локальной сети

В случае изменения локальной сети маршрутизатора B, необходимо удалить старую запись:

А после добавить новый маршрут на маршрутизаторе А:

Изменение адреса тоннеля

Если на маршрутизаторе B изменится IP-адрес туннеля, то следует также актуализировать адрес шлюза на маршрутизаторе А:

После выполнения команды адрес шлюза для подсети «172.16.10.0/24» будет изменён.

Изменение провайдера

Чтобы перенаправить трафик через другого провайдера («ISP2»), следует изменить маршрут «по умолчанию» («default»):

Начни экономить на хостинге сейчас — 14 дней бесплатно!

Источник

RootUsers

Guides, tutorials, reviews and news for System Administrators.

How To Display Routing Table In Linux

The routing table is used to show you where various different network subnets will be routed to. Here are three different commands that you can use to print out the routing table in Linux.

Using ip command

The current recommended way of printing the routing table in Linux is with the ip command followed by route, as demonstrated below.

If you’re in a hurry you can also shorten this to ‘ip r’ which will print the same output. While this is the current recommended method of printing out the routing table in Linux, you will see that the output doesn’t look as nice as older options.

Check out our IP command examples for further information on how you can use this to display networking information.

Using netstat command

While this is a popular way of printing out routing information in Linux, netstat is actually deprecated and replaced instead with ip route – it even says so in the manual page. Nevertheless as it is still widely used, we have included it here.

Netstat combined with the -r option will display the kernel routing tables. This is commonly used with the -n option, which will only show numerical addresses rather than performing any sort of name resolution.

Using route command

The manual page for route also states that it is obsolete and has been replaced by the ip route command previously mentioned, again as this is still used, here’s an example of it. Like netstat, the -n option is used to display numeric information only.

Summary

As we have seen there are a few ways to display the routing information in Linux, however most are now considered obsolete with ‘ip route’ being the current recommended method, despite the output in my opinion not looking as neat as the others.

Источник

Маршрутизация с помощью метрик

Подскажите. Допустим, установлены различные метрики на маршруты (к одной цели). Ес-но будет выбираться маршрут с меньшей метрикой. Но, если этот маршрут «откажет», пойдут ли соединения через другой маршрут (автоматически)?
И вернется ли все в «нормальное русло», когда первый маршрут восстановится?

хотя если все настроено правильно, то: 1) пойдут 2) вернется в не зависимости от того, статическая или динамическая маршрутизация используется.

«откажет» — это исчезнет из роут таблицы?

Некорректная постановка задачи. В общем случае «нет, ничего автоматически не переключится». В частных случаях — когда например рассматриваемые каналы это VPN-линки, то переключится. А если оба канала ethernet — то не переключится. Но если задействованы протоколы динамической маршрутизации — может и переключится. Слишком много неизвестных 🙂

Уточню: обычная статическая маршрутизация (eth)

«Откажет» — перестанет пропускать, но не исчезнет из записей.

Пока маршрут с меньшей метрикой есть в таблице маршрутизации, он и будет использован. Маршрут удаляется из таблицы маршрутизации при падении интерфейса.

Если у вас несколько маршрутов через eth7 через разных провайдеров, то пишите скрипт, который определит факт «отказа» и поправит маршруты.

>Если у вас несколько маршрутов через eth7 через разных провайдеров, то пишите скрипт, который определит факт «отказа» и поправит маршруты.

Динамическая маршрутизация по ЛОРовски.

Метрики в линуксе не используются вообще, man route

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

Интересует ситуация без падения интерфейса. Т.е. проблема на маршруе где то дальше . Все сохраняется — и таблица и интерфейсы.

И как называется routing daemon в твоей системе? Каких демонов ты уже настраивал?

ospfd настраивал. Статической маршрутизацией не увлекался, но как-то странно слышать, что линукс метрики статических маршрутов игнорирует.

а ты ман дочитал? Сделай поиск дальше.

Может я не правильно понял вашу мысль, но метрики позволяют задать несколько машрутов.

Допустим маршруты в локальную сеть удаленного офиса (сети 10.2.3.x) — один через ppp, а другой маршрут особого типа «unreachable», с большей метрикой. При падении ppp маршрутизатор на все пакеты в сеть 10.2.3.x будет отвечать «Destination Host Unreachable», а не отправлять их по default-маршруту.

Топикстартер не уточнил задачу, но бывают провайдеры, у которых иногда просто большие потери пакетов, и в этой ситуации, ИМХО, лучше всего скрипт-велосипед, который переключит на запасного провайдера по результатам пинга «ya.ru, google.com» и/или в определённые часы суток.

Там в мане(man route) написано что метрики ядро метрики не использует вообще. Я не спец по вопросам маршрутизации и могу ошибаться, но везде где я видел про маршрутизацию пишут что по барабану на всякие метрики.

на метрики по барабану, только если маршруты к разным по размеру сетям. Например если сети /27 и /28, то пакет пойдет по маршруту в сторону сети /28, невзирая на метрики. Если сети одинаковые, то разные метрики отработают, как миленькие. Однако ТС своего все равно таким способом не добъется.

> Метрики в линуксе не используются вообще, man route

man route прочел намного раньше вас, выводы такие — метрики используются, вы либо тролль, либо дурак

Metric The ‘distance’ to the target (usually counted in hops). It is not used by recent kernels, but may be needed by routing dae‐ mons.

Можешь читать дальше, можешь спорить дальше, а у нас тут метрика замечательно используется. Хотя конечно, модет быть что ядро 2.6.33 недостаточно «recent»?

P.S.: я знаю как можно написатьь код, который не будет использовать использовать метрику явно при выборе маршрута, но метрика тогда окажет влияние на таблицу маршрутов в другой момент времени.

а можно поподробнее?

Вы не могли бы объяснить, что доказал этот эксперимент? Было 2 маршрута до корня ru, один дохлый через лупбэк, другой дублирует дефолтный маршрут. После удаления маршрута с лупбэком, трафик пошёл через дефолт gw. И это говорит нам о чём.

значит я ошибся

Ну вот тебе без дефолта

Метрика маршрута это последний аргумент в выборе маршрутов. Из двух маршрутов, приоритет имеет тот, что с наиболее точной маской. Если маски совпадают, приоритет имеет тот, что с меньшей метрикой. И даже если метрика будет просто определять позицию в которую вставляется запись маршрута, это все равно значит, что ядро _использует_ метрику для упорядочивания табицы маршрутов в правильном порядке.

В моих RedHat’ах «man route» датирован 2 January 2000, похоже, его с этого момента не правили, ибо есть команда ip (ip route).

А кто-нибудь помнит, в 2.0.x ядрах метрики маршрутов использовались?

Протоколы динамической маршрутизации всегда исходят из собственных метрик. Нагуглил мейл-лист, где обсуждался RIPv2 на линухе, сообщения датированы ’99м годом, то есть метрики использовались и в 2.0.х.

> Протоколы динамической маршрутизации всегда исходят из собственных метрик

Метрика это интегральная характеристика маршрута, учитывающая множество характеристик — например, полосу пропускания канала связи, стоимость, дистанцию и т.д.. А демоны динамической маршрутизации считают метрики в зависимости от протокола, и в конечном итоге, на выходе получается список маршрутов (с метриками), который скармливается в ядро, и ядро используя его проводит маршрутизацию по стандартным правилам.

> Статической маршрутизацией не увлекался, но как-то странно слышать, что линукс метрики статических маршрутов игнорирует.

Источник

Читайте также:  Linux find exec bash
Оцените статью