Маршрутизация между подсетями linux

Использование и примеры маршрутизации Linux

Одной из главнейших задач сетевого уровня модели OSI является маршрутизация. Устройства, которые связывают подсети между собой в единую составную сеть, называются маршрутизаторами. Внутри сети сегменты не разделяются маршрутизаторами, иначе это была бы не одна сеть, а несколько сетей. Маршрутизатор соединят несколько сетей в интерсеть (internetwork или internet).

Данные, которые поступают на сетевой уровень и которые необходимо передать через составную сеть, снабжаются заголовком сетевого уровня. Данные вместе с заголовком образуют пакет. Заголовок пакета сетевого уровня имеет унифицированный формат, не зависящий от форматов кадров канального уровня тех сетей, которые могут входить в объединенную сеть, и несет наряду с другой служебной информацией данные о номере сети, которой предназначается этот пакет. Явная нумерация сетей позволяет протоколам сетевого уровня составлять точную карту межсетевых связей и выбирать рациональные маршруты при любой их топологии, в том числе альтернативные маршруты, если они имеются, что никак не умеют делать мосты и коммутаторы.

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

сетевой уровень использует собственную адресацию, которая обеспечивает каждому узлу подсети составной сети свой универсальный сетевой адрес, который состоит из номера сети и номера узла. Благодаря такой системе адресации сетевой уровень может пересылать информации к узлу получателю «не обращая внимания» на внутреннюю структуру подсетей, с другой стороны для непосредственного продвижения пакетов к адресату, он использует технологию передачи данных конкретной подсети, через которую следуют эти пакеты.

поиск наилучшего пути следования пакетов в сети — маршрутизация — это основная задача сетевого уровня.

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

Основная функция маршрутизатора — чтение заголовков пакетов сетевых протоколов, которые принимаются и буферизуются по каждому его порту, и принятие решения о дальнейшем маршруте следования того пакета в соответствии с указанным в нем сетевым адресом. Сетевой адрес пакета сетевого протокола включает, как правило, номер сети номер узла.

Маршрутизация статическая

Статическая маршрутизация является одним из способов задания маршрута следования пакетов в сетях. При этом протоколы маршрутизации не используются, а необходимая информация заносится системным администратором вручную в соответствующие таблицы маршрутизации. К статическим маршрутам также относится маршрут по умолчанию (default route).

Читайте также:  Alpine linux install xfce

Создание собственных таблиц и правил маршрутизации это и есть Policy-Routing, он же PBR (Policy-based Routing). SBR (Source-based Routing) или Source-Routing в FAQ Linux является частным случаем Policy-Routing, в случае использования условия from в правиле маршрутизации.

iproute

iproute также известна как iproute2.

Пакет iproute состоит из нескольких утилит управления трафиком:

ss — утилита для просмотра текущих соединений и открытых портов, аналог утилиты Как пользоваться командой netstat.

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

ip route get 192.168.35.55 192.168.35.55 via 192.168.35.254 dev tun1 src 10.26.95.254 cache ipid 0xf0ea

Для все MAC задает состояние failed, в дальнейшем ядро Ос удалит помеченные так MAC записи из arp таблицы.

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

# ip route add blackhole 10.56.50.0/27

C помощью команды ip addr add можно установить на сетевом интерфейсе как основной IP адрес, так и несколько дополнительных адресов. Удалить IP адрес

ip addr del 10.90.91.254 dev eth4 или удалить все с интерфейса wlan1 ip addr flush wlan1

Таблицы маршрутизации

Вывести таблицы маршрутизации. Ядро принимает решение о применении той или иной таблицы на основании адреса источника пакета. Эти таблицы применимы для всех пакетов.

# ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default

Вывести содержимое таблицы local.

# ip route show table local

Таблица local. Пакет при выборе пути к месту назначения проверяется правилом с наименьшим приоритетом. Правило 0 отправит поиск маршрута в таблицу «local».

Таблица local проверяет не адресован ли пакет локальной машине (широковещательный или сетевой адреса интерфейсов). Таблицу local автоматически заполняют команды конфигурации сетевых интерфейсов.

Таблица main — является основной и именно она используется, если в команде, связанной с маршрутизацией, не указано какую таблицу использовать. При поднятии интерфейсов в неё прописываются маршруты к подсетям интерфейсов, стартовые скрипты также заносят в эту таблицу значение шлюза по-умолчанию. Использование команды route add администратором также может дополнить таблицу маршрутами. В общем случае, таблица main всегда содержит подходящий для пакета маршрут (например шлюз по-умолчанию).

Добавление маршрута через шлюз: ip route add 172.16.10.0/24 via 192.168.1.1 Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0 Маршрут с метрикой: ip route add 172.16.10.0/24 dev eth0 metric 100

Кроме add также поддерживаются и другие действия: del — удалить маршрут; replace — заменить маршрут другим; change — изменить параметры маршрута.

Читайте также:  Линукс минт xfce установка

Policy-Routing. Маршрутизация для двух ISP

Пример 1. Создание таблицы для маршрутизации пакетов с определенного IP- адреса. Локальная сеть 10.26.95.0/24 имеет выход в Интернет с двух разных провайдеров – основной ISP1 (статика) и резервный ISP2 (Настройка DHCP сервера Linux, FreeBSD).

В файле /etc/iproute2/rt_tables для удобства задаются символьные имена таблиц, это не обязательно так как все таблицы имеют цифровые идентификаторы. Например

echo '82 velton' >> /etc/iproute2/rt_tables
ip route add default via 82.117.232.1 table 82

Внесем правила маршрутизация для пользователя с IP 10.26.95.5, после чего эта таблица станет доступна в выводе команды ip rule list. Теперь все пользователи шлют пакеты через ISP1, кроме пользователя с IP 10.26.95.251

ip rule add from 10.26.95.251/32 table 82

Пример 2. Создание таблицы для маршрутизации, когда часть сетей (AS) нужно маршрутизировать через резервного провайдер ISP2. Например, это может быть дешевая точка обменом трафика или ресурсы провайдера. whois — найти все IPs вашего провайдера

ip route add default via 82.117.232.1 table 82
ip route add 82.117.224.0/19 via 82.117.234.15 ip route add 85.90.192.0/19 via 82.117.234.15
ip rule add to 82.117.224.0/19 table 82 ip rule add to 85.90.192.0/19 table 82

Источник

Настройка сетевых маршрутов в Linux (CentOS)

date

13.04.2020

user

VyacheslavK

directory

CentOS, Linux

comments

Один комментарий

В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).

Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту ip , а не route . Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.

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

Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:

вывести таблицу маршрутизации в linux centos ip router

  • default via 192.168.1.1 dev enp0s3 – шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию)
  • 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 — статический маршрут для сети 192.168.1.0/24 через адрес 192.168.1.201, который прописан на интерфейсе
  • proto kernel – маршрут создан ядром ( proto static – маршрут добавлен администратором)
  • metric – приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.

Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:

192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201

Вы можете использовать ваш Linux сервер с двумя и более интерфейсами как маршрутизатор или интернет-шлюз. Чтобы разрешить маршрутизацию пакетов между несколькими интерфейсами, нужно включить параметр ядра net.ipv4.ip_forward = 1.

Читайте также:  Linux check bios or uefi

Как добавить или удалить статический маршрут?

Чтобы добавить новый маршрут к определенной IP подсети в таблицу маршрутизации Linux, нужно выполнить следующую команду:

# ip route add 192.168.0.0/24 via 192.168.1.1

Таким образом, мы добавим маршрут для IP сети 192.168.0.0/24 через шлюз 192.168.1.1.

Формат команды ip route очень похоже на синтаксис в Cisco IOS. Здесь также можно исопльзовать сокращений, например вместо ip route add можно написать ip pro ad .

добавление маршрута в centos

Также можно добавить отдельный маршрут для одного IP адреса (хоста):

# ip route add 192.168.1.0 via 192.168.1.1

Можно сделать аналог null route маршрута в Cisco (ip route null0), пакеты в такую сеть удаляются по причине No route to host:

# ip route add blackhole 10.1.20.0/24

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

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

удалить маршрут из таблицы маршрутизации в linux centos

Как видите, маршрут удален из таблицы маршрутизации.

Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).

Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:

В моем случае, интерфейс enp0s3.

сетевые интерфейсы в centos

Далее открываем следующий файл:

И добавляем туда строку с маршрутом:

После добавления маршрута в файл нужно перезапустить сервис network:

добавить постоянный (persistent) маршрут в centos linux

После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.

Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:

И укажите команду добавления маршрута:

# ip route add 192.168.0.0/24 via 192.168.1.1

добавление persistent маршрута через rc.local

Теперь, если ваш сервер будет перезагружен, маршрут пропишется автоматически при загрузке системы.

Изменить маршрут в Linux

Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:

# ip route replace 192.168.0.0/24 via 192.168.1.1

изменитть маршрут ip route replace

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

Restarting network (via systemctl): [ OK ]
default via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100

Изменить маршрут по умолчанию

Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:

# ip route del default via 192.168.1.1 dev enp0s3

Чтобы указать новый маршрут по-умолчанию в CentOS используется команда:

# ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза)

# ip route add default via enp0s3 (маршрут через имя устройства)

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

# ip route replace default via 192.168.1.2

ip route replace default

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Источник

Оцените статью
Adblock
detector