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.
[править] Конфигурационные файлы
Настройки статической маршрутизации находятся в различных файлах, в зависимости от дистрибутива.
Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3), не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.
Все будут ходить через шлюз 10.0.1.2, а 192.168.1.1 — через 10.0.3.4.
Источник
Таблица маршрутизации в Linux
Статическая маршрутизация — это процесс, в котором администратор сети вручную настраивает сетевые интерфейсы, таким образом, чтобы пакеты пересылались из одной сети в другую.
Администратор создает так называемую таблицу маршрутизации, в ней описаны различные маршруты пакетов.
Любому из маршрутизаторов необходимо понимать на какой хост отправлять следующий пакет. Вот про это и будет идти речь в данной статье. Сегодня мы раскроем вопрос про маршрутизацию в Линукс, функциональность, настройку правил и правильное функционирование.
Когда хосту необходимо послать пакет другому хосту он просматривает таблицу маршрутизации. В данной таблице указаны IP-address конечного пункта назначения, метрика, название интерфейсов, адреса маршрутизаторов по которые могут отправить пакет конечному получателю.
В случае отсутствия маршрута для узла, применяется так называемый default шлюз, default маршрут. Подобное можно наблюдать на маршрутизаторе. Он сравнивает необходимый IP-address с таблицей маршрутизации, затем посылает дальше.
Ниже будем рассматривать проверку проходящих маршрутов в системе, процесс настройки новых.
Способы просмотра таблицы маршрутизации в Линукс
Для просмотра таблицы в ОС Линукс можно использовать команду:
Как видно из скриншота выше, команда показала всего две записи. В первой записи указан шлюз (gateway) 192.168.168.254, вторая запись говорит о наличии доступа в подсеть 192.168.168.0 на интерфейсе eth0.
Другой способ вывести информацию о статических маршрутов — использовать команду «route», однако, как правило утилита просит права супер пользователя, поэтому предварительно введем «su-«.
Бывает, выводимых данных route и netstat недостаточно, так как в них выводится легкая информация, ее не хватает для понимания всей картины. Чтобы получить более подробную таблицу, можно воспользоваться утилитой «routel».
В этой информации содержится:
target (цель) — IP-адрес.
gateway — адрес шлюза.
source — адрес отправителя.
dev — интерфейс.
Наиболее подходящий метод для просмотра таблицы маршрутизации в ОС Линукс – использовать утилиту «ip».
$ ip route Подробней про «ip» можно посмотреть в другой статье: https://www.vseprolinux.ru/komanda-ip
default – IP-адрес по умолчанию.
via 192.168.168.254 — адрес шлюза, куда будут отправлять пакеты по умолчанию.
dev eth0 — интерфейс сети, за счёт него открывается доступ к шлюзу.
proto kernel — обозначает, что маршрут устанавливался ядром, если static, то установка выполняется администратором.
Настройка
Для настройки таблицы маршрутизации будем использовать команду ip route. Добавим временный статический маршрут 192.168.22.0/24 через шлюз 192.168.168.254.
ip route add 192.168.22.0/24 via 192.168.168.254
ВАЖНО! При выполнении такой команды добавиться временный статический маршрут, после перезагрузки системы он сотрется.
Для проверки необходимо проверить, проходит ли пакет из сети 192.168.22.0. Для этого будем использовать ip route get. ip route get 192.168.22.30
Как говорилось выше, после перезагрузки Linux все эти добавленные адреса сотрутся. Для того, чтобы данные не стирались, необходимо записать их в файле.
post-up — запустить команду после включения интерфейса.
pre-down — запустить команду перед отключением интерфейса.
net — задает целевую сеть
netmask — сетевая маска.
gw — шлюз.
Не так сложно, как могло показаться. После всей выполненной работы присоединенные маршруты будут работать даже после перезагрузки операционной системы Линукс.
Рассмотрим еще несколько примеров.
Изменяем статический маршрут:
ip route change 192.168.22.0/24 via 192.168.168.254
ip route del 192.168.22.0/24
ЗАКЛЮЧЕНИЕ
Подобная работа написана для краткого рассмотрения функционирования маршрутизации в Линукс, как происходит настройка маршрутизации, а также для чего она необходима.
Источник
Просмотр и построение таблиц маршрутизации в Linux
Содержание:
Что такое маршрутизация
Вся цифровая информация передаётся по сети в виде пакетов данных. По пути от отправителя к адресату они проходят через цепочку промежуточных устройств – маршрутизаторов (роутеров) и/или соответственно настроенных компьютеров.
Маршрутизация – это процесс определения пути (сетевого маршрута) для установки соединения между хост-устройствами. Этот путь настраивается как внутри локального устройства, так и на маршрутизаторе.
Построение сетевого маршрута происходит на основе информации из таблиц маршрутизации. Для их формирования применяются протоколы маршрутизации или инструкции сетевого администратора.
Каждая таблица содержит ряд параметров, позволяющих правильно идентифицировать и читать сетевой маршрут. Таблица содержит минимум 5 разделов:
Destination (Target). IP-адрес сети назначения – конечной цели для передаваемых данных.
Netmask (Genmask). Маска сети.
Gateway. IP-адрес шлюза, через который можно добраться до цели.
Interface. Адрес сетевого интерфейса, по которому доступен шлюз.
Опционально в таблице также может содержаться следующая информация:
адрес отправителя (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 дней бесплатно!