- Таблица маршрутизации в Linux
- Способы просмотра таблицы маршрутизации в Линукс
- Настройка
- ЗАКЛЮЧЕНИЕ
- Настройка сетевых маршрутов в Linux (CentOS)
- Просмотр таблицы маршрутизации в Linux
- Как добавить или удалить статический маршрут?
- Изменить маршрут в Linux
- Изменить маршрут по умолчанию
- Как просмотреть таблицу сетевой маршрутизации в Debian
- Команды, рассмотренные в этой статье
- Как использовать команду ip для просмотра сетевых маршрутов
- Просмотр таблицы маршрутизации с помощью команды route
- Формат вывода несколько схож с форматом вывода команды netstat.
- Похожие записи:
Таблица маршрутизации в Linux
Статическая маршрутизация — это процесс, в котором администратор сети вручную настраивает сетевые интерфейсы, таким образом, чтобы пакеты пересылались из одной сети в другую. Администратор создает так называемую таблицу маршрутизации, в ней описаны различные маршруты пакетов. Любому из маршрутизаторов необходимо понимать на какой хост отправлять следующий пакет. Вот про это и будет идти речь в данной статье. Сегодня мы раскроем вопрос про маршрутизацию в Линукс, функциональность, настройку правил и правильное функционирование. Когда хосту необходимо послать пакет другому хосту он просматривает таблицу маршрутизации. В данной таблице указаны IP-address конечного пункта назначения, метрика, название интерфейсов, адреса маршрутизаторов по которые могут отправить пакет конечному получателю. В случае отсутствия маршрута для узла, применяется так называемый default шлюз, default маршрут. Подобное можно наблюдать на маршрутизаторе. Он сравнивает необходимый IP-address с таблицей маршрутизации, затем посылает дальше. Ниже будем рассматривать проверку проходящих маршрутов в системе, процесс настройки новых.
Способы просмотра таблицы маршрутизации в Линукс
Для просмотра таблицы в ОС Линукс можно использовать команду: $ netstat -r Как видно из скриншота выше, команда показала всего две записи. В первой записи указан шлюз (gateway) 192.168.168.254, вторая запись говорит о наличии доступа в подсеть 192.168.168.0 на интерфейсе eth0. Другой способ вывести информацию о статических маршрутов — использовать команду «route», однако, как правило утилита просит права супер пользователя, поэтому предварительно введем «su-«. $ su — # route Бывает, выводимых данных route и netstat недостаточно, так как в них выводится легкая информация, ее не хватает для понимания всей картины. Чтобы получить более подробную таблицу, можно воспользоваться утилитой «routel». $ 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 route add -net 192.168.22.0 netmask 255.255.255.0 gw 192.168.168.254
pre-down route del -net 192.168.22.0 netmask 255.255.255.0 gw 192.168.168.254
- post-up — запустить команду после включения интерфейса.
- pre-down — запустить команду перед отключением интерфейса.
- net — задает целевую сеть
- netmask — сетевая маска.
- gw — шлюз.
Не так сложно, как могло показаться. После всей выполненной работы присоединенные маршруты будут работать даже после перезагрузки операционной системы Линукс.
Рассмотрим еще несколько примеров.
Изменяем статический маршрут:
ip route change 192.168.22.0/24 via 192.168.168.254
ЗАКЛЮЧЕНИЕ
Подобная работа написана для краткого рассмотрения функционирования маршрутизации в Линукс, как происходит настройка маршрутизации, а также для чего она необходима.
Настройка сетевых маршрутов в Linux (CentOS)
13.04.2020
VyacheslavK
CentOS, Linux
Один комментарий
В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).
Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту ip , а не route . Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.
Просмотр таблицы маршрутизации в Linux
Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:
- 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.
Как добавить или удалить статический маршрут?
Чтобы добавить новый маршрут к определенной 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 .
Также можно добавить отдельный маршрут для одного 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
Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.
Чтобы удалить созданный вручную маршрут, выполните:
Как видите, маршрут удален из таблицы маршрутизации.
Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).
Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:
В моем случае, интерфейс enp0s3.
Далее открываем следующий файл:
И добавляем туда строку с маршрутом:
После добавления маршрута в файл нужно перезапустить сервис network:
После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.
Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:
И укажите команду добавления маршрута:
# ip route add 192.168.0.0/24 via 192.168.1.1
Теперь, если ваш сервер будет перезагружен, маршрут пропишется автоматически при загрузке системы.
Изменить маршрут в Linux
Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1
Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
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
Предыдущая статья Следующая статья
Как просмотреть таблицу сетевой маршрутизации в Debian
Процесс маршрутизации сетевых пакетов — это передача IP-пакета из одной точки в другую по сети, например, по Интернету. Когда вы отправляете кому-то электронное письмо, вы фактически передаете серию IP-пакетов или дейтаграмм с вашего компьютера на другой сетевой узел или ПК. Пакеты, отправленные с вашего компьютера, проходят через несколько шлюзов или маршрутизаторов, чтобы достичь целевой компьютерной системы. Такой же подход применяется ко всем интернет-протоколам, таким как HTTP, IRC, FTP и т.д.
Во всех системах Linux и UNIX информация о пересылке IP-пакетов хранится в структуре ядра. Эти структуры называются таблицами маршрутизации. Если вы хотите, чтобы ваша система общалась с другими компьютерами, вы должны настроить эти таблицы маршрутизации. Но сначала важно, как вы можете отобразить эти таблицы маршрутизации в вашей системе Linux.
Команды, рассмотренные в этой статье
В этой статье мы объясним, как можно отобразить таблицу маршрутизации в Debian с помощью следующих трёх популярных команд
Мы используем командную строку Debian, терминал, для выполнения вышеуказанных команд. Вы можете открыть терминал с помощью поиска запуска приложений следующим образом:
Application Launcher может быть запущен через клавишу Super/Windows на клавиатуре.
Как использовать команду ip для просмотра сетевых маршрутов
И последнее, но не менее важное: вот наиболее рекомендуемый способ печати информации таблицы маршрутизации в Linux. Вот как использовать эту команду:
Хотя эта информация не так удобна для чтения, как информация ранее упомянутых команд, ее все же достаточно для настройки маршрута.
Это были несколько команд для просмотра информации таблицы маршрутизации в Debian. Хотя команда ip route выглядит не очень аккуратно, она по-прежнему является наиболее рекомендуемым способом поиска соответствующей информации в таблице маршрутизации. Остальные команды считаются устаревшими, но они всё ещё могут быть полезны для извлечения нужной информации.
Просмотр таблицы маршрутизации с помощью команды route
Команда route также относится к категории некогда широко используемых, но теперь устаревших команд для просмотра таблиц маршрутизации. На странице руководства этой команды также упоминается, что команда теперь заменена командой ip route.
С помощью этой команды вы можете просмотреть точно такую же информацию, как и с помощью команды netstat. Вот как ее можно использовать:
-n Этот флаг используется для отображения только числовых адресов.
Формат вывода несколько схож с форматом вывода команды netstat.
Использование команды netstat для просмотра таблицы маршрутизации
Команда netstat всегда была широко используемым методом печати информации о таблице маршрутизации в Linux. Однако официально она заменена командой ip route. Мы все равно включаем ее, так как она все еще позволяет получить необходимую информацию.
Вот как вы можете использовать эту команду:
-r Этот флаг используется для отображения таблиц маршрутизации ядра
-n Этот флаг используется для отображения числовых адресов.
Destination | В этом столбце указана сеть назначения |
Gateway | В этом столбце указан определенный шлюз для сети. Если вы видите * в этом столбце, это означает, что для указанной сети не требуется шлюз пересылки. |
Genmask | В этом столбце указана сетевая маска сети. |
Flags | Вывод U в этом столбце означает, что маршрут запущен. Вывод G означает, что для данного маршрута следует использовать указанный шлюз. D означает динамически установленный, M означает измененный, а R означает восстановленный. |
MSS | В этом столбце указан максимальный размер сегмента (MSS) по умолчанию для TCP-соединений для данного маршрута. |
Window | В этом столбце указан размер окна по умолчанию для TCP-соединений на этом маршруте. |
irtt | В этом столбце указано начальное время обхода для этого маршрута. |
Iface | В столбце Iface указан сетевой интерфейс. Если у вас более одного интерфейса, вы увидите lo (для loopback), eth0 (первое устройство Ethernet), eth1 (для второго устройства Ethernet) и так далее по количеству установленных интерфейсов. |