Как прописать статический маршрут? и зачем он нужен?

Оглавление

Динамическая маршрутизация, протокол RIP

Протокол RIP (Routing Information Protocol или Протокол передачи маршрутной информации) является одним из самых распространенных протоколов динамической маршрутизации.

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

Есть две версии протокола RIP. Версия 1 не поддерживает маски, поэтому между сетями распространяется только информация о сетях и расстояниях до них. При этом для корректной работы RIP на всех интерфейсах всех маршрутизаторов составной сети должна быть задана одна и та же маска.

Протокол RIP полностью поддерживается только серверной операционной системой, тогда как клиентская операционная система (например, Windows XP) поддерживает только прием маршрутной информации от других маршрутизаторов сети, а сама передавать маршрутную информацию не может.

Настраивать RIP можно двумя способами:

  • В графическом режиме с помощью оснастки “Маршрутизация и удаленный доступ”.
  • В режиме командной строки с помощью утилиты netsh.

Рассмотрим настройку в режиме командной строки с помощью утилиты netsh.

Netsh – это утилита командной строки и средство выполнения сценариев для сетевых компонентов операционных систем семейства Windows (начиная с Windows 2000).

Введите в командной строке команду netsh, после появления netsh> введите знак вопроса и нажмите Enter, появиться справка по команде.

Введите последовательно команды:

  1. routing
  2. Ip
  3. rip
  4. ?

Вы увидите, что среди доступных команд этого контекста есть команда add interface, позволяющая настроить RIP на заданном интерфейсе. Простейший вариант этой команды – add interface «Имя интерфейса».

Если ввести в Windows XP в контексте команду , то получим сообщение «RIP должен быть установлен первым». Дело в том, что Установить RIP можно только в серверной операционной системе. В Windows Server 2003 в RIP включается в оснастке «Маршрутизация и удаленный доступ» (Пуск –> Программы –> Администрирование –> Маршрутизация и удаленный доступ). Таким образом, включить RIP в нашем случае можно только на маршрутизаторах Server1 и Server2.

Настроим RIP на Server1. Но сначала нужно выключит брандмауэр.

Теперь в оснастке «Маршрутизация и удаленный доступ» в контекстном меню пункта SERVER1 (локально) выберите пункт «Настроить и включить Маршрутизация ЛВСмаршрутизацию и удаленный доступ».

В появившемся окне мастера нажмите «Далее».

На следующем этапе выберите «Особая конфигурация» и нажмите «Далее».

После чего нужно выбрать «Маршрутизация ЛВС» и завершить работу мастера.

То же самое нужно выполнить на Server2.

Москва. арбат

На циске в Москве у нас два интерфейса, к одному — FE0/0 — уже подключена наша локальная сеть, а второй (FE0/1)мы будем использовать для выхода в интернет и для подключения удалённых офисов.

Как и в самом начале создадим саб-интерфейсы. Выделим для Санкт-Петербурга и Кемерова 4 и 5-й вланы соответственно. IP-адреса берём из нового IP-плана.

msk-arbat-gw1(config)#interface FastEthernet 0/1.4msk-arbat-gw1(config-subif)#description Saint-Petersburgmsk-arbat-gw1(config-subif)#encapsulation dot1Q 4msk-arbat-gw1(config-subif)#ip address 172.16.2.1 255.255.255.252

msk-arbat-gw1(config)#interface FastEthernet 0/1.5msk-arbat-gw1(config-subif)#description Kemerovomsk-arbat-gw1(config-subif)#encapsulation dot1Q 5msk-arbat-gw1(config-subif)#ip address 172.16.2.17 255.255.255.252

Статический маршрут в Windows — как прописать? Примеры использования утилиты route

Статическая маршрутизация — это когда маршруты указываются в явном виде, при конфигурации маршрутизатора (сетевой карты). Вся маршрутизация при этом происходит без участия каких-либо протоколов маршрутизации.

Предлагаю ознакомиться с предложениями моих партнёров

Статический маршрут — это заданный администратором маршрут, который заставляет пакеты, перемещающиеся между источником и адресатом, отправляться по указанному пути — явно указанный путь, по которому должен пройти пакет из пункта A в пункт B.

Синтаксис и основные ключи утилиты route

Поподробней о команде route.

Общий синтаксис route:

route

Основные ключи route:

  • -f — удаляет из таблицы маршрутизации все маршруты;
  • -p – сохраняет маршрут на постоянную основу;
  • add – добавляет новый маршрут;
  • change — меняет текущий маршрут в таблице маршрутизации;
  • delete — удаляет маршрут из таблицы маршрутизации;
  • print — отображает содержимое таблицы маршрутизации;
  • destination — при добавлении или изменении маршрута этот параметр используется для указания идентификатора сети назначения;
  • mask — при добавлении или изменении маршрута этот параметр используется для указания маски подсети для сети назначения;
  • gateway — при добавлении или изменении нового маршрута этот параметр используется для указания шлюза (маршрутизатора или модема);
  • metric — используется для указания целого числа в диапазоне от 1 до 9999, являющегося метрикой стоимости для маршрута. Если для определенной сети назначения существует несколько возможных маршрутов, будет использован маршрут с наименьшим значением метрики;
  • if — используется для указания номера индекса интерфейса, который подключен к сети назначения.

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

Думаю Вам интересней, о статическом маршруте на обыкновенном компьютере с операционной системой Windows.

Если у Вас дома два компьютера, один из которых имеет доступ в Интернет по средствам VPN, также он соединен со вторым компьютером локальной сетью, и каждый раз, когда он подключается к Интернету, то связь между двумя компьютерами теряется, так как первый компьютер (который подключился к VPN) уже находится в другой сети, и поэтому недоступен со второго компа.

Примеры использования утилиты route

Давайте с Вами пропишем маршрут, который разрешит нам получить доступ к локальной сети при включенном VPN соединении, пригодится обычным пользователям, у которых дома более одного компьютера, а в Интернет выходят по средствам VPN.

Имеем локальную сеть: 192.168.1.0/24

Локальный IP первого компьютера (пусть он будет компьютер — A) – 192.168.1.2 (на котором присутствует VPN соединение)

Локальный IP второго компьютера (а этот компьютер — B) – 192.168.1.3

IP адрес шлюза т.е. модема – 192.168.1.1

Вам нужно прописать маршрут на компьютере A, чтобы он смог видеть компьютер B при включенном VPN соединении. Делается это следующем образом: запускаем командную строку Пуск->Выполнить->cmd и набираем следующую команду:

route –p add 192.168.1.0 mask 255.255.255.0 192.168.1.1

route – сама программа, которая работает с таблицей маршрутизации;
-p – ключ, который говорит, что маршрут будет постоянный, так как (Важное замечание!) без этого ключа все маршруты, которые Вы добавите удалятся после перезагрузке, поэтому если Вы хотите использовать маршрут всегда, то пропишите этот ключ, если только один раз, то его можно не писать;
add – команда, добавляющая запись в таблицу маршрутизации;
192.168.1.0 – сеть, с которой Вы хотите иметь связь;
mask 255.255.255.0 – маска подсети;
192.168.1.1 – адрес шлюза, обычно это адрес модема.

Добавив всего один маршрут, Вы получите доступ к своей сети при подключенном Интернете, т.е. VPN соединении.

Или у Вас дома подключение к Интернету через модем ADSL но Вам требуется подключение к VPN сети, и соответственно выхода в Интернет через свой канал у Вас уже не будет. Но с помощью статического маршрута можно получить доступ к определенным сайтам (узнав предварительно их ip адреса), к которым Вам бы хотелось иметь постоянный доступ (и при подключенном VPN соединении и не подключенном). Если сайт имеет ip адрес 172.18.24.13, а шлюз имеет IP адрес 192.168.0.1, надо прописать так:

route –p add 172.18.24.13 mask 255.255.255.255 192.168.0.1

2) Add a new route

As we say above, to manipulate the routing table, we use the command ( add is the option) to manually indicate a static path that the packets will use through the network. It is used to assign a  temporary static route which will change only if the administrator manually modifies the values of the new route.

There are many possibilities for using the route add command.

We should indicate the destination network, subnet mask of the network, and the gateway to use.

Alternatively, you can now use command, syntax as follows:

For example, let’s add a new route network 10.0.0.0/8 and via gateway IP address 192.168.1.1:

Now we can display the routing table using :

You can add option if you want to add netmask value. If not provided then route command finds automatically the value of netmask.

To add a route to a specific host use option. We must only indicate the gateway to use.

For example, let’s add a specific host ‘10.0.0.10’ and then display the routing table

In the above examples, the flag column has differents values and that can be incomprehensible.

The possible flags and its definition:

 — route is up — target is a host — use gateway — reinstate route for dynamic routing — dynamically installed by daemon or redirect — modified from routing daemon or redirect — installed by addrconf — cache entry  — reject route

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

Вход на частную виртуальную машину

  1. Перейдите на портал Azure для управления частной виртуальной машиной. Найдите и щелкните Виртуальные машины.

  2. Выберите имя частной виртуальной машины myVmPrivate.

  3. В строке меню виртуальной машины выберите Подключить и щелкните Бастион.

  4. На странице Подключение нажмите синюю кнопку Использовать Бастион.

  5. На странице Бастион введите имя пользователя и пароль, созданные ранее для виртуальной машины.

  6. Выберите Подключиться.

Настройка брандмауэра

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

Разрешите трафик ICMP в брандмауэре Windows.

  1. Перейдите к подключению бастиона myVMPrivate и откройте PowerShell с правами администратора.

  2. Введите эту команду:

    Для проверки маршрутизации в этом учебнике используется трассировка маршрута. Мы не рекомендуем разрешать протокол ICMP в брандмауэре Windows в рабочей среде.

Включение IP-пересылки в myVMNVA

Вы для сетевого интерфейса виртуальной машины с помощью Azure. Операционная система виртуальной машины также должна переадресовывать сетевой трафик.

Включите IP-пересылку для myVMNVA с помощью следующих команд.

  1. Из PowerShell виртуальной машины myVMPrivate откройте удаленный рабочий стол виртуальной машины myVMNVA.

  2. В PowerShell на виртуальной машине myVMNVA введите следующую команду, чтобы включить IP-пересылку:

  3. Перезапустите myVMNVA.

  4. После перезапуска myVMNVA создайте сеанс удаленного рабочего стола для myVMPublic.

    Откройте PowerShell, не отключаясь от myVMPrivate, и воспользуйтесь следующей командой:

  5. На удаленном рабочем столе myVMPublic откройте PowerShell.

  6. Разрешите протокол ICMP в брандмауэре Windows, введя следующую команду:

Провайдер

Разумеется, мы не будем строить всю сеть провайдера. Вместо этого просто поставим коммутатор, ведь по сути сеть провайдера с нашей точки зрения будет одним огромным абстрактным коммутатором.

Тут всё просто: принимаем транком линк с Арбата в один порт и с двух других портов отдаём их на удалённые узлы. Ещё раз хотим подчеркнуть, что все эти 3 порта не принадлежат одному коммутатору — они разнесены на сотни километров, между ними сложная MPLS-сеть с кучей коммутаторов.

Настраиваем “эмулятор провайдера”:

Switch(config)#vlan 4Switch(config-vlan)#vlan 5Switch(config)#interface fa0/1Switch(config-if)#switchport mode trunk Switch(config-if)#switchport trunk allowed vlan 4-5Switch(config-if)#exitSwitch(config)#int fa0/2Switch(config-if)#switchport trunk allowed vlan 4Switch(config-if)#int fa0/3Switch(config-if)#switchport trunk allowed vlan 5

Показатели алгоритмов (метрики)

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

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

  • Длина маршрута.
  • Надежность.
  • Задержка.
  • Ширина полосы пропускания.

Длина маршрута

Длина маршрута является наиболее общим показателем маршрутизации. Некоторые протоколы маршрутизации позволяют администраторам сети назначать произвольные цены на каждый канал сети. В этом случае длиной тракта является сумма расходов, связанных с каждым каналом, который был траверсирован. Другие протоколы маршрутизации определяют «количество пересылок» (количество хопов), т. е. показатель, характеризующий число проходов, которые пакет должен совершить на пути от источника до пункта назначения через элементы объединения сетей (такие как маршрутизаторы).

Надежность

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

Задержка

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

Полоса пропускания

Полоса пропускания относится к имеющейся мощности трафика какого-либо канала. При прочих равных показателях, канал Ethernet 10 Mbps предпочтителен любой арендованной линии с полосой пропускания 64 Кбайт/с. Хотя полоса пропускания является оценкой максимально достижимой пропускной способности канала, маршруты, проходящие через каналы с большей полосой пропускания, не обязательно будут лучше маршрутов, проходящих через менее быстродействующие каналы.

Примеры использования

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

$ ifconfig eth0 nodeone netmask 255.255.255.0$ route add -net 192.168.1.0

Здесь для команды 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 loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.10.8hwaddress ether 00:E0:4C:A2:C4:48netmask 255.255.255.0broadcast 192.168.10.255up route add -net 192.168.10.0/24 gw 192.168.10.1 eth0auto eth1iface eth1 inet staticaddress 172.16.0.34netmask 255.255.255.0gateway 172.16.0.1broadcast 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

Как установить метрику для сетевых подключений в Windows

Чтобы было понятно, покажу на конкретном примере. У меня два сетевых интерфейса с IP адресами:

  • 192.168.0.49 (имеет шлюз 192.168.0.1) – используется по умолчанию
  • 192.168.1.43 (имеет шлюз 192.168.1.1) – хочу чтобы он использовался по умолчанию

Для этого удаляю все маршруты по умолчанию:

route DELETE 0.0.0.0

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

route ADD 0.0.0.0 MASK 0.0.0.0 ШЛЮЗ

В ней ШЛЮЗ нужно заменить на IP адрес шлюза (роутера) того интерфейса, через который вы хотите выходить в Интернет. Для меня это:

route ADD 0.0.0.0 MASK 0.0.0.0 192.168.1.1

На данном этапе уже вернулось Интернет-подключение и если вам достаточного одного подключения, то можно не продолжать.

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

Для его добавления используется команда следующего вида:

route ADD 0.0.0.0 MASK 0.0.0.0 ШЛЮЗ METRIC 100

Обратите внимание, что вместо ШЛЮЗ нужно вписать IP адрес шлюза «резервного» интерфейса. Также значение является не абсолютным, а относительным!!! Помните об этом, что указанная величина ДОБАВЛЯЕТСЯ к тому значению метрики, которое рассчитывает операционная система

Значение 100 можно поменять на другое (например, 50). Но выбирайте его так, чтобы значение в сумме с рассчитанной метрикой было больше, чем метрика подключения, которое мы хотим использовать по умолчанию.

Моя команда:

route ADD 0.0.0.0 MASK 0.0.0.0 192.168.0.1 METRIC 100

Проверяем:

route print

Как видим, в маршрутах по умолчанию по-прежнему доступно два сетевых интерфейса. Но теперь интерфейс 192.168.0.49 имеет очень большое значение метрики, поэтому по умолчанию будет применяться сетевой интерфейс 192.168.1.43.

Проверим IP в браузере https://suip.biz/ru/?act=myip:

Как видим, поменялся и внешний IP (был 109.126.249.183, а стал 213.167.219.207) и локальный (был 192.168.0.49, а стал 192.168.1.43).

В командной строке Windows делаю трассировку:

.\TRACERT.EXE suip.biz

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

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

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

# ip route del default via 192.168.1.1 dev enp0s3

1 # ip route del default via 192.168.1.1 dev enp0s3

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

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

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

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

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

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

# ip route replace default via 192.168.1.2

1 # ip route replace default via 192.168.1.2

Настройка сети

На компьютере установлена ОС Ubuntu Server, настройка сети выполнена с использованием Netplan:

# nano /etc/netplan/01-netcfg.yaml
network
  version 2
  renderer networkd
  ethernets
    enp0s3
      addresses 192.168.50.2/24
      routes
        # маршрут по умолчанию для таблицы main, метрика 100 (основной)
        - to 0.0.0.0/0
          from 192.168.50.2
          via 192.168.50.1
          metric 100
        # маршрут по умолчанию для таблицы primary (идентификатор 10)
        - to 0.0.0.0/0
          via 192.168.50.1
          table 10
      routing-policy
        # если отправитель 192.168.50.2, просматривать таблицу primary
        - from 192.168.50.2
          table 10
          priority 31000
      nameservers
        addresses 8.8.8.8, 8.8.4.4
    enp0s8
      addresses 192.168.150.2/24
      routes
        # маршрут по умолчанию для таблицы main, метрика 200 (резервный)
        - to 0.0.0.0/0
          from 192.168.150.2
          via 192.168.150.1
          metric 200
        # маршрут по умолчанию для таблицы secondary (идентификатор 20)
        - to 0.0.0.0/0
          via 192.168.150.1
          table 20
      routing-policy
        # если отправитель 192.168.150.2, просматривать таблицу secondary
        - from 192.168.150.2
          table 20
          priority 32000
      nameservers
        addresses 8.8.8.8, 8.8.4.4
    enp0s9
      addresses 192.168.250.1/24
      nameservers
        addresses 8.8.8.8, 8.8.4.4

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

$ ip route show
default via 192.168.50.1 dev enp0s3 proto static src 192.168.50.2 metric 100
default via 192.168.150.1 dev enp0s8 proto static src 192.168.150.2 metric 200
192.168.50.0/24 dev enp0s3 proto kernel scope link src 192.168.50.2
192.168.150.0/24 dev enp0s8 proto kernel scope link src 192.168.150.2
192.168.250.0/24 dev enp0s9 proto kernel scope link src 192.168.250.1

Здесь два маршрута по умолчанию, но с разными значениями метрики — один маршрут основной (метрика 100), другой резервный (метрика 200).

Добавление альтернативного маршрута для «избранных» хостов

Рассмотрим классический пример, когда в локальной сети необходимо направить избранные хосты по альтернативному маршруту. Предположим, что в локальной сети 10.0.0.0/24 имеется некоторый шлюз с двумя интерфейсами, имеющими IP-адреса 10.0.0.1/24 — смотрит в локальную сеть, 12.13.14.15/24 — смотрит в глобальную сеть. Маршрут по умолчанию проходит через IP 12.13.14.1. При этом необходимо, чтобы хост 10.0.0.100 был направлен по маршруту 12.13.14.100. Для решения этой задачи, необходимо:

Добавить описание  дополнительной  в файл /etc/iproute2/rt_tables (это действие необязательно, можно использовать просто номер таблицы)

# echo 100 newtable >> /etc/iproute2/rt_tables

Добавить , которое будет направлять пакеты с адресом отправителя 10.0.0.100 в описанную на прошлом шаге

# ip rule add from 10.0.0.100 lookup newtable
# # или
# ip rule add from 10.0.0.100 lookup 100
# # после выполнения данной команды список правил примет следующий вид
# ip rule show
0: from all lookup local
32765: from 10.0.0.100 lookup newtable
32766: from all lookup main
32767: from all lookup default

Добавить по умолчанию, отправляющий пакеты на хост 12.13.14.100 в новую

# ip route add default via 12.13.14.100 dev eth1 table newtable
# # после внесенных изменений необходимо очистить кэш маршрутов, чтобы ядро обновило информацию о новых маршрутах
# ip route flush cache
# # после данных изменений таблица newtable (id 100) будет иметь следующий вид
# ip route show table 100
default via 12.13.14.100 dev eth1

Давайте рассмотрим путь пакета, согласно наших правил. Хост 10.0.0.100 отправляет пакет некоторому узлу 7.8.9.10, соответственно, в заголовках пакета источник — 10.0.0.100, назначение — 7.8.9.10. На хосте 10.0.0.100 шлюз по умолчанию — 10.0.0.1, согласно данного правила пакет попадает на шлюз 10.0.0.1. Ядро, получив пакет последовательно с нулевого правила просматривает соответствие пакета заданным в правилах фильтрам/критериям. Пакет подходит под действие правила 0 (0: from all lookup local) и направляется в таблицу маршрутизации local. Но т.к. пакет не принадлежит локальной системе и он не широковещательный, то маршрут в данной таблице не найден и пакет возвращается в RPDB для просмотра следующего правила. Следующее правило на пути пакета —  32765: from 10.0.0.100 lookup newtable. Пакет под критерии данного правила подходит, поэтому направляется в таблицу newtable (id 100). Согласно данной таблицы все пакеты направляются на единственный маршрут по умолчанию — 12.13.14.100. Пакет уходит согласно этого правила на указанный хост. Следующие правила не обрабатываются

Обращаю внимание, что в данном разборе я не учитывал прохождение пакета через

Краткие итоги

В статье я рассмотрел работу механизма Routing Policy DataBase (RPDB) — маршрутизации на основе политик. Я долго вникал в работу этого механизма и постарался изложить свое понимание всего происходящего в ядре. Доходчивой документации на русском языке по данному вопросу в сети я не нашел. Даже всеми хваленый LARTC не дает прозрачного понимания RPDB. Надеюсь, что мои мысли помогут вам понять основные принципы. Подводя итог всему вышесказанному можно свести основной смысл к тому, что пакет в порядке приоритета правил (от 0 до 32767) сверяется с каждым правилом и в случае, если подходит под заданные условия, над пакетом совершается какое-либо действие (обычно отправляется в указанную таблицу). Если пакет в заданной таблице находит свой маршрут, то он отправляется по заданному маршруту. Если не находит — возвращается к списку правил для обработки в следующем правиле. Управление всем этим делом осуществляется командой ip с различными параметрами. В дальнейших статьях я постараюсь рассмотреть более интересные примеры реализации маршрутизации на основе политик. Кроме того, я бы обязательно посоветовал вам почитать приведенные ниже ссылки для более глубокого ознакомления.

Что еще почитать

Хорошая статья о том,ч то такое маршрут по умолчанию — http://xgu.ru/wiki/Маршрут_по_умолчанию
RFC 1394 (что такое TOS и с чем его едят) — http://www.ietf.org/rfc/rfc1349.txt
Обязательно к прочтению (Policy Routing With Linux) — http://www.policyrouting.org/PolicyRoutingBook/ONLINE/TOC.html
Guide to IP Layer Network Administration with Linux — http://www.linux-ip.net/html/
Команда ip на буржуйском от русского автора — http://www.linux-ip.net/gl/ip-cref/
Linux Advanced Routing & Traffic Control HOWTO — http://www.opennet.ru/docs/RUS/LARTC/index.html

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

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

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

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

Но вернемся к нашему примеру. Наша задача, имя исходные данные, установить соединения между хостом XP и Server2 который находится в сети Net3, то есть нужно что бы проходил пинг на 192.168.2.1.

Начнем выполнять на хосте XP команды постепенно удаляясь от самого хоста. Выполните в Командной строке команды для адресов 192.168.0.2, 192.168.0.1, 192.168.1.1.

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

Однако при попытке получить ответ от второго интерфейса маршрутизатора Server1 выводится сообщение «Заданный узел недоступен» или «Превышен интервал ожидания для запроса».

Добавим в таблицу маршрутизации XP запись о маршруте к сети 192.168.1.0. Для этого введем команду route add с необходимыми параметрами:

Параметры команды имеют следующие значения:

  • адресат — адрес сети или хоста, для которого добавляется маршрут;
  • mask — если вводится это ключевое слово, то следующий параметр интерпретируется как маска подсети, соответственно маска — значение маски;
  • шлюз — адрес шлюза;
  • metric — после этого ключевого слова указывается метрика маршрута до адресата (метрика);
  • if — после этого ключевого слова указывается индекс интерфейса, через который будут направляться пакеты заданному адресату.

Индекс интерфейса можно определить из секции Список интерфейсов (Interface List) выходных данных команды route print.

Выполним команду .

Теперь мы видим , что хост XP имеет два интерфейса: логический интерфейс замыкания на себя (Loopback) и физический интерфейс с сетевым адаптером Intel(R) PRO/1000. Индекс физического интерфейса – 0x2.

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

Выполним пинг на 192.168.1.1 и убедимся, что связь есть.

Продолжим пинговать серверы, теперь проверьте отклик от второго маршрутизатора, присоединенного к сети Net2 (Server2). Он имеет IP-адрес 192.168.1.2.

Получаем сообщение «Превышен интервал ожидания запроса». В данном случае это означает что наш хост XP знает как отправлять данные адресату, но он не получает ответа.

На Server2 выполним команду route print и посмотрим индекс первого физического интерфейса. Далее, с помощью команды route add добавьте на Server2 маршрут до сети Net1, аналогично тому, как мы добавляли маршрут хосту XP.
В моем случае это команда:

— это индекс физического интерфейса сервера 2.

Индекс физического интерфейса может быть разным, обязательно обращайте на него внимание. После того, как удостоверитесь в наличии связи между узлами XP и Server2, выполните команду ping 192.168.2.1, т.е

проверьте наличие маршрута узла XP до сети Net3 (192.168.2.1 – IP-адрес маршрутизатора Server2 в сети Net3)

После того, как удостоверитесь в наличии связи между узлами XP и Server2, выполните команду ping 192.168.2.1, т.е. проверьте наличие маршрута узла XP до сети Net3 (192.168.2.1 – IP-адрес маршрутизатора Server2 в сети Net3).

Вместо ответа вы получите сообщение «Заданный узел недоступен». С этой проблемой мы сталкивались еще в самом начале лабораторной работы, машина XP не знает путей до сети 192.168.2.0.

Добавьте в таблицу маршрутизации хоста XP запись о маршруте к сети 192.168.2.0. Это можно сделать путем ввода в командной строке хоста XP команды route add с соответствующими параметрами: