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
Содержание
- Включение функции пересылки проходящих пакетов.
- Выбор IP-адреса для исходящих соединений.
- Маршрутизация на основе правил и таблиц.
Включение функции пересылки проходящих пакетов
intuit.ru/2010/edi»>Операционная система Linux позволяет не только организовать сложные схемы обработки сетевых пакетов локального узла, но и использовать компьютерс несколькими сетевыми интерфейсами (физическими и/или логическими) в качестве маршрутизатора (для передачи трафика удаленных узлов и сетей).
Примечание: В данном пособии рассматривается статическая маршрутизация — такой способ маршрутизации, при котором все необходимые
маршруты устанавливаются администратором вручную (с помощью команд и конфигурационных файлов).
По умолчанию сетевая подсистема Linux обрабатывает пакеты, предназначенные данному узлу или созданные данным узлом; функция
обработки пакетов, в которых не указан IP-адрес данной станции как источник или приемник (forwarding, пересылка пакетов ) отключена. Для включения функции пересылки проходящих пакетов необходимо установить в 1 значение, записанное в файле ip_forward
псевдофайловой системы proc:
# echo 1 > /proc/sys/net/ipv4/ip_forwardintuit.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 adddev
Пример вывода:
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
Удаление маршрутов
Аналогичным образом можно удалить маршруты.
Использование 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
.
Что вы думаете?
Итак, мы рассмотрели некоторые из самых основных функций этих команд.