Ip route параметры: Статическая маршрутизация и шлюз по умолчанию

Содержание

Настройка нескольких таблиц маршрутизации на одном сервере – База знаний Timeweb Community

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

Общий принцип настройки для всех систем один, мы рассматриваем настройку на примере Ubuntu.

Предположим, у нас есть сервер с двумя физическими интерфейсами — eth0 и eth2. На каждый из них добавлено по ip-адресу. Это могут быть как адреса из одного broadcast домена (к примеру, 10.10.10.2/30 и 10.10.10.3/30), так и из разных. В данном примере рассматривается второй случай, но принципиальной разницы нет:

 

Вывод команды ip address (просмотр сетевых параметров, сконфигурированных на интерфейсах сервера) для каждого из интерфейсов:


# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:30:48:f9:c8:02 brd ff:ff:ff:ff:ff:ff
inet 10. 10.1.2/24 brd 10.10.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::230:48ff:fef9:c802/64 scope link
valid_lft forever preferred_lft forever

# ip address show eth2
3: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:30:48:f9:c8:03 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.2/24 brd 172.16.1.255 scope global eth2
valid_lft forever preferred_lft forever
inet6 fe80::230:48ff:fef9:c803/64 scope link
valid_lft forever preferred_lft forever

Маршруты на сервере:


# ip route ls
default via 10.10.1.1 dev eth0
10.10.1.0/24 dev eth0 proto kernel scope link src 10.10.1.2
172.16.1.0/24 dev eth2 proto kernel scope link src 172.16.1.2

Default маршрут настроен через интерфейс eth0 шлюз 10.10.1.1: 


default via 10.10.1.1 dev eth0

Это значит, что все ответные пакеты с данными будут отправляться через этот интерфейс eth0 и с source адресом 10. 10.1.2. К примеру, если с такой конфигурацией сделать попытку подключиться по ssh к серверу по адресу 172.16.1.2, назначенному на eth2, сервер попытается ответить через eth0, и соединение не будет установлено, т.к. даже если разрешен проброс пакетов между интерфейсами, ответ будет отправлен не с тем source адресом:

 

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

По умолчанию на сервере всегда присутствуют три стандартные таблицы:


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

Это таблицы local, main и default. Таблицы создаются в файле /etc/iproute2/rt_tables. Просмотреть содержимое конфигурационного файла можно командой:


# cat /etc/iproute2/rt_tables

Результат выполнения команды:


#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep

Т.е. для создания новых таблиц (назовем их table1 и table2), “привязанных” к eth0 и eth2 соответственно, добавляем в этот файл следующее:


# echo 100  table1 >> /etc/iproute2/rt_tables
# echo 101 table2 >> /etc/iproute2/rt_tables

Номер таблицы (100 и 101) нужно брать в диапазоне [2; 252]. В таком случае приоритет таблиц будет меньше, чем у таблиц main и default, и поиск маршрутов будет производиться сначала в таблицах table1 и table2. Итак, проверим, что таблицы созданы:


# cat /etc/iproute2/rt_tables

Результат выполнения команды:


#
# reserved values
#
255    local
254    main
253    default
0    unspec
#
# local
#
#1    inr. ruhep
100 table1
101 table2

Но в правилах они пока не отображены:


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

Добавляем правила и default маршруты для каждой из таблиц:


# ip rule add from 10.10.1.2 table table1
# ip route add default via 10.10.1.1 dev eth0 table table1
# ip rule add from 172.16.1.2 table table2
# ip route add default via 172.16.1.1 dev eth2 table table2

Проверяем:


# ip rule ls
0:    from all lookup local
32764:    from 10.10.1.2 lookup table1
32765:    from 172.16.1.2 lookup table2
32766:    from all lookup main
32767:    from all lookup default

При создании правила используем интересующий нас адрес, добавленный на интерфейс сервера, например, для интерфейса eth0 используется адрес 10.10.1.2, при добавлении default маршрута прописываем адрес шлюза сети (в примере выше для 10. 10.1.2/24 это 10.10.1.1) и интерфейс, через который отправлять пакет.

Теперь при обращении к адресу 10.10.1.2 сервер будет отвечать через интерфейс eth0 с source адресом 10.10.1.2, а при обращении к 172.16.1.2, соответственно, через интерфейс eth2 с source адресом 172.16.1.2:

При этом для исходящих соединений с сервера ничего не изменится, они будут идти по общему default маршруту, взятому из основной таблицы main.

Для просмотра маршрутов, содержащихся в определенной таблице,к команде ip route show добавляется table table_name:


# ip route show table table1
default via 10.10.1.1 dev eth0
# ip route show table table2
default via 172.16.1.1 dev eth2

Аналогичные настройки двух таблиц могут быть выполнены и если адреса назначены на одном интерфейсе. Например, если на сервере только один интерфейс eth0:


# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:30:48:f9:c8:02 brd ff:ff:ff:ff:ff:ff
inet 10.10.1.2/24 brd 10.10.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet 172.16.1.2/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::230:48ff:fef9:c802/64 scope link
valid_lft forever preferred_lft forever

Это будет выглядеть следующим образом:


# ip rule add from 10.10.1.2 table table1
# ip route add default via 10.10.1.1 dev eth0 table table1

# ip rule add from 172.16.1.2 table table2
# ip route add default via 172.16.1.1 dev eth0 table table2

В завершение необходимо внести правки в файл /etc/network/interfaces, чтобы новая конфигурация была доступна в случае, если сервер перезагрузится, либо будет перечитана сетевая конфигурация. Ниже приведен пример содержания данного конфигурационного файла с добавлением правил и default маршрутов в созданные таблицы, в примере общий default маршрут прописан через интерфейс eth0  с указанием шлюза 10.10.1.1:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static

address 10.10.1.2
netmask 255.255.255.0
gateway 10.10.1.1
post-up ip rule add from 10.10.1.2 table table1
post-up ip route add default via 10.10.1.1 dev eth0 table table1
post-up ip route add default via 10.10.1.1 dev eth2

auto eth2
iface eth2 inet static
address 172.16.1.2
netmask 255.255.255.0
gateway 172.16.1.1
post-up ip rule add from 172. 16.1.2 table table2
post-up ip route add default via 172.16.1.1 dev eth2 table table2

Если на сервере один интерфейс, то правила для таблиц будут прописаны в секции конфигурации eth0.

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

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

НОУ ИНТУИТ | Лекция | Маршрутизация в Linux

< Лекция 12 || Лекция 10: 123

Аннотация: Даны краткие сведения об использовании компьютера с Linux в качестве маршрутизатора и расширенных возможностях маршрутизации, в
частности маршрутизация по IP-адресу источника; описаны особенности выбора локального исходящего IP-адреса. Приведены примеры маршрутизации
виртуальных локальных сетей, объединения локальных сетей на основе маршрутизаторов, задания локального исходящего IP-адреса и добавление
альтернативного маршрута для узла-источника на шлюзе

Ключевые слова: операционная система, сетевой пакет, компьютер, удаление узла, ПО, параметр, таблица маршрутизации, локальный адрес, дамп, маршрутизация, балансировка нагрузки, расширение функции, множества, значение, команда, операции, TOS, таблица, table, Local, имя таблицы, адрес, порт, шлюз, маршрут, ARP, протокол arp, MAC-адрес, сеть, внутренняя сеть, анализ трафика, интерфейс, ICMP, ping

Содержание

  1. Включение функции пересылки проходящих пакетов.
  2. Выбор IP-адреса для исходящих соединений.
  3. Маршрутизация на основе правил и таблиц.

Включение функции пересылки проходящих пакетов

intuit.ru/2010/edi»>Операционная система Linux позволяет не только организовать сложные схемы обработки сетевых пакетов локального узла, но и использовать компьютер
с несколькими сетевыми интерфейсами (физическими и/или логическими) в качестве маршрутизатора (для передачи трафика удаленных узлов и сетей).

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

По умолчанию сетевая подсистема Linux обрабатывает пакеты, предназначенные данному узлу или созданные данным узлом; функция
обработки пакетов, в которых не указан IP-адрес данной станции как источник или приемник
(forwarding, пересылка пакетов ) отключена. Для включения функции пересылки проходящих пакетов необходимо установить в 1 значение, записанное в файле ip_forward
псевдофайловой системы proc
:

# echo 1 > /proc/sys/net/ipv4/ip_forward

intuit.ru/2010/edi»>Данная настройка будет действовать до перезагрузки компьютера. Для восстановления конфигурации нужно после перезагрузки выполнять указанную
команду (указать ее в файле /etc/rc.local ) или лучше установить в файле /etc/sysctl.conf следующий
параметр:

net.ipv4.ip_forward=1
Пример 10.1.Объединение виртуальных локальных сетей с помощью маршрутизатора на основе Linux.

Для того, чтобы в примере 5.6.
«Постоянные сетевые конфигурации (на примере Debian/GNU Linux)»
«Постоянные сетевые конфигурации» подсети 192.168.1.0/24 и 192.168.2.0/24
могли взаимодействовать друг с другом через указанный в примере компьютер Linux (выступает в качестве шлюза для данных подсетей) необходимо:

  • на данном компьютере включить функцию пересылки пакетов одним из описанных выше способов;
  • на всех компьютерах первой подсети указать в качестве шлюза для второй подсети адрес 192. 168.1.4 (разумеется, также можно указать данный адрес
    как шлюз по умолчанию), а для компьютеров второй подсети — шлюз для первой подсети 192.168.2.4.

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

# ip route show
192.168.2.0/24 dev vlan2  proto kernel  scope link  src 192.168.2.4 
192.168.1.0/24 dev vlan1  proto kernel  scope link  src 192.168.1.4

Эти записи добавляются в таблицу маршрутизации шлюза автоматически (например, если на интерфейсе vlan1 установлен IP-адрес
192.168.1.4/24, то система полагает, что сеть 192.168.1.0/24 непосредственно подключена к данному интерфейсу). Таким образом, если на интерфейс vlan1 шлюза приходят сетевые пакеты, в которых адрес назначения принадлежит второй подсети, то шлюз, согласно таблицы
маршрутизации, передает эти пакеты в сеть с интерфейса vlan2.

Пример 10.2.Объединение двух сетей на основе маршрутизаторов

intuit.ru/2010/edi»>Пусть необходимо обеспечить взаимодействие сетей 192.168.1.0/24 и 192.168.2.0/24 (рис. 10.1.), соединенных
интерфейсами маршрутизаторов, установленных в каждой из сетей (интерфейсы маршрутизаторов в сетях имеют адреса 192.168.1.1 и 192.168.2.1
соответственно).

Рис.
10.1.
Объединение двух сетей на основе маршрутизаторов

Для решения данной задачи ( рис. 10.1.) необходимо установить на интерфейсы, связывающие маршрутизаторы друг с
другом адреса из одной произвольно выбранной подсети (192.168.3.0/24, на первый — 192.168.3.1, на второй — 192.168.3.2) и добавить статические
маршруты в таблицы маршрутизаторов (для первого маршрутизатора — для сети 192.168.2.0/24 через узел 192.168.3.2, для второго — для сети
192.168.1.0/24 через узел 192.168.3.1).

К примеру таблица маршрутизации первого маршрутизатора (при использовании Linux) будет иметь вид:

# ip route show
192. 168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1 
192.168.3.0/24 dev eth2  proto kernel  scope link  src 192.168.3.1
192.168.2.0/24 via 192.168.3.2 dev eth2

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

Дальше >>

< Лекция 12 || Лекция 10: 123

Более 10 примеров команд ip route в Linux [Шпаргалка]


Автор — Rohan Timalsina

Содержание

Реклама

Введение в команду ip route

В Linux, ip Команда используется для отображения или управлять маршрутизацией, устройствами, политикой маршрутизации и туннелями. ip route является частью команды ip . Это помогает управлять записями маршрутов в таблицах маршрутизации ядра, в которых хранится информация о путях к другим сетевым узлам. Маршруты могут быть установлены для разных IP-адресов (назначения). Вы можете использовать ip route команда для добавления, удаления, изменения и списка маршрутов.

ТАКЖЕ ПРОЧИТАЙТЕ: примеры команд cat для начинающих [шпаргалка]

 

Типы маршрутов

Ниже приведены различные типы маршрутов.

  • одноадресная рассылка : описывает реальные пути к пунктам назначения, на которые указывает префикс маршрута.
  • недоступный : Недостижимые места назначения. Пакеты отбрасываются, и генерируется сообщение ICMP о недоступности хоста.
  • черная дыра : Недостижимые пункты назначения. Пакеты отбрасываются молча.
  • запретить : Недостижимые пункты назначения. Пакеты отбрасываются, и создается сообщение ICMP, административно запрещенное.
  • локальный : адресаты назначаются этому хосту.
  • широковещательная рассылка : Адреса назначения являются широковещательными. Пакеты отправляются как широковещательные рассылки.
  • throw : Пакеты отбрасываются и генерируется сообщение ICMP о недоступности сети.
  • nat : Специальный маршрут nat. Адресаты, на которые распространяется префикс, считаются фиктивными (или внешними) адресами и требуют преобразования в реальные (или внутренние) адреса перед переадресацией.
  • произвольная рассылка : Адреса назначения — это адреса произвольной рассылки, назначенные этому хосту. Они не реализованы.
  • многоадресная рассылка : Специальный тип для многоадресной маршрутизации. Его нет в обычных таблицах маршрутизации.

 

Синтаксис команды ip route

Синтаксис команды ip route :

 $ ip route  

Некоторые важные команды в ip route :

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

 

Различные примеры использования команды ip route

1.

Список текущей таблицы маршрутизации с помощью команды ip route

Вы можете использовать команду ip route list или ip route show для отображения текущих маршрутов или таблицы маршрутизации.

 $ ip route list 

ИЛИ

 $ ip route show 

Пример вывода:

ТАКЖЕ ПРОЧИТАЙТЕ: 15+ примеров команд tar в Linux [Шпаргалка]

9 0004

 

2. Добавьте новый маршрут использование команды ip route

Команда ip route add используется для добавления нового маршрута для указанного диапазона сети. Для выполнения команды вам потребуются привилегии root.

Advertisement

 $ sudo ip route add <сеть/маска> через  

Пример вывода:

Вы также можете использовать ip route только для вывода списка таблица маршрутизации.

 

3. Добавьте новый маршрут шлюза по умолчанию с помощью команды ip route

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

 $ sudo ip route add default via  

Пример вывода:

 

4. Добавьте новый маршрут к определенному устройству с помощью команды ip route

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

 $ sudo ip route add  dev  

Пример вывода:

 

5. Удалите маршрут с помощью команды ip route

Вы можете использовать команду ip route delete для удаления маршрута из таблицы маршрутизации.

 $ sudo ip route delete  

Пример вывода:

 

6. Измените существующий маршрут с помощью команды ip route

Вы можете изменить маршрут, используя ip route change команда.

 $ sudo ip route change  

Пример вывода:

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

также прочитайте: 15+ Примеры команд Ping в Linux [Chiefete]

7. Очистить маршруты с помощью промывки с использованием IP Route Command

конкретное место назначения.

Advertisement

 $ sudo ip route flush  

Пример вывода:

 

8. Очистите все маршруты с помощью команды ip route

Вы также можете использовать команду ip route flush для удаления всех маршрутов из таблицы маршрутизации.

 $ sudo ip route flush table main 

Пример вывода:

 

адрес и распечатывает его содержание.

 $ ip route добраться до места назначения 

Пример вывода:

 deepak@ubuntu:~$ ip route добраться до 192.168.0.133
192.168.0.133 dev enp0s3 источник 192.168.0.103 пользовательский идентификатор 1000
cache 

 

10. Получить один маршрут из источника

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

 $ ip route получить пункт назначения из источника 

Пример вывода:

 deepak@ubuntu:~$ ip route добраться до 192.168.0.133 из 192.168.0.103
192.168.0.133 из 192.168.0.103 dev enp0s3 uid 1000
кэш 

 

11. Список маршрутов только с заданной областью действия

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

 $ ip route list scope_value 

Пример вывода:

 

12. Список маршрутов только для указанного устройства

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

 $ ip route list dev name 

Пример вывода:

ТАКЖЕ ПРОЧИТАЙТЕ: 10 примеров команд chage в Linux [Шпаргалка]

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

 

Заключение

В этом руководстве мы узнали, как управлять таблицей маршрутизации с помощью ip route 900 15 команда в Linux система. Вы можете добавлять, удалять, изменять и перечислять маршруты в таблице маршрутизации. Если у вас все еще есть путаница, не стесняйтесь спрашивать нас в разделе комментариев.

 

Что дальше

16 Примеры команд Linux ip для настройки сетевых интерфейсов (шпаргалка)

 

Дополнительная литература

справочная страница команды ip route

 

Категории Шпаргалка

Не нашли того, что искали? Выполните быстрый поиск в GoLinuxCloud

.

Искать:

Если мои статьи о GoLinuxCloud помогли вам, пожалуйста, купите мне кофе в знак признательности.

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

Спасибо за поддержку!!

Сеть

Linux: для маршрутизации или IP-маршрутизации?

Опубликовано:
2 июня 2020 г.

|

|

на
Тайлер Кэрриган (редакционная группа, Red Hat)

Изображение

Фото  Markus Spiske  из  Pexels

Знаете, что менее полезно, чем сетчатая дверь на подводной лодке? Сеть без маршрутов. Маршрутизация существовала в тандеме с сетями с незапамятных времен или, по крайней мере, с 19 века.60-е годы, когда была изобретена эта концепция. Маршрутизация в том виде, в каком мы ее знаем сегодня, не существовала до 1981 года, когда группа исследователей разработала первый многопротокольный маршрутизатор. Несмотря на то, что технология относительно новая, она прочно вошла в нашу повседневную жизнь.

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

В Linux есть много способов сделать что-то, и маршрутизация ничем не отличается. Я хочу изучить две разные команды для отображения таблиц маршрутизации и управления ими: команду route и команду ip route . Мы рассмотрим обе команды в некоторых очень распространенных случаях использования, чтобы увидеть, что может предложить каждая утилита.

Отображение существующих маршрутов

Обо всем по порядку. Вы никогда не захотите вносить изменения в маршрут, пока не проверите существующие условия. Для этого просто запустите следующее:

Показать существующие маршруты с маршрутом :

 [tcarrigan@rhel ~]$ маршрут
Таблица IP-маршрутизации ядра
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0 

Показать существующие маршруты с ip :

 [tcarrigan@rhel ~]$ ip route  показать
по умолчанию через 10.0.2.2 dev enp0s3 proto dhcp metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10. 0.2.15 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown  

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

Добавление новых маршрутов

Иногда вам нужно добавить новые маршруты между устройствами. Для этого используйте приведенные ниже примеры.

Использование route :

 [root@rhel ~]# route add -net 10.0.2.0/24 gw 192.168.0.1 enp0s3 

Здесь используется следующий синтаксис: route add -net <сетевой_адрес> gw <шлюз адрес> < interfacename>

Использование ip :

 [root@rhel ~]# ip route add 10.0.2.0/24 via 192.168.0.1 dev enp0s3 

Синтаксис этой команды: ip route add <нужная сеть для подключения к> via dev <имя интерфейса>

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

Аналогичным образом можно удалить маршруты.

Использование route :

 [root@rhel ~]# route del -net 10. 0.2.0/24 gw 192.168.0.1 enp0s3 

Синтаксис аналогичен команде add , за исключением того, что мы используем дел вместо добавьте .

Использование ip :

 [root@rhel ~]# sudo ip route del 10.0.2.0/24 via 192.168.0.1 dev enp0s3 

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

Добавление нового шлюза по умолчанию

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

Добавление нового шлюза с route :

 [root@rhel ~]# route add default gw 192.168.0.1 

Добавление нового шлюза с ip :

 [root@rh el ~]# ip маршрут добавить по умолчанию через 192.168.0.1 

Чтобы убедиться, что новый шлюз установлен, используйте стандартный 9Команда 0014 route или ip route show .

Что вы думаете?

Итак, мы рассмотрели некоторые из самых основных функций этих команд.