Настройка сетевой маршрутизации Linux – команда route
Для определения и задания маршрутов в сетях существуют динамическая и статическая маршрутизации. В первом случае маршруты задаются специальным демоном маршрутизации, который модифицирует соответствующим образом таблицу маршрутизации ядра. Во втором случае маршруты задаются администратором/пользователем при помощи команды route. Маршруты, заданные командой route не изменяются, даже если включена динамическая маршрутизация.
Как работает маршрутизация?
Прежде всего нужно понимать, что процессы маршрутизации осуществляются на сетевом уровне. Для каждого пакета проводится сравнение его целевого IP-адреса с записями в таблице маршрутизации. Когда обнаруживается хотя бы частичное соответствие с одним из шлюзов в таблице, пакет направляется к следующему узлу (шлюзу), соответствующему найденному маршруту. И здесь может возникать несколько ситуаций:
Первая — когда, например, пакет адресуется компьютеру, находящемуся в той же сети, что и источник пакета, а точнее сказать — его отправитель. В данной ситуации для такого пакета следующим шлюзом является один из локальных интерфейсов и он (пакет) отправляется сразу к адресату. Такие «явные» и «короткие» шлюзы обычно задаются во время конфигурирования сетевых интерфейсов — командой ifconfig.
Вторая — когда адрес назначения пакта не соответствует ни одному шлюзу в таблице маршрутизации. В таком случае, во избежание коллизий в сети и её чрезмерной нагрузки должен быть задействован шлюз по-умолчанию. Другими словами, это такой маршрут, который указывает системному ядру: все остальные пакеты (без соответствий в таблице маршрутов) направляй сюда. Если шлюз по-умолчанию не будет предусмотрен, то отправляющей стороне посылается сообщение о недостижимости сети или узла.
Как правило, локальные сети имеют единственный шлюз во внешнюю среду, например в Интернет. В свою очередь, в сети Интернет таких «стандартных маршрутов» не существует.
Синтаксис и основные опции
Основное назначение команды route – добавление и удаление сетевых маршрутов для системного ядра, а также просмотр содержимого таблицы маршрутизации. Эта команда, хотя и работает в разных UNIX-подобных системах одинаково, однако имеет резко отличающийся синтаксис в зависимости от используемой системы.
В общем случае прототипом команды route является следующая запись:
Опция
Назначение
Шлюз, через который должны достигаться сеть или узел. Задаётся в виде имени узла или точечной записи адреса.
Устанавливает значение MTU (максимальную величину пакета) в байтах.
Устанавливает размер TCP-окна для задаваемого шлюза в байтах. Обычно используется в сетях AX.25.
Устанавливает начальное время отклика для TCP-соединений по данному маршруту в миллисекундах.
Задаёт блокирующий маршрут, который должен приводить к остановке процедуры поиска маршрутов. Полезно при скрытии сетей для использования в них шлюз по-умолчанию.
Заставляет работать с таблицей маршрутизации ядра. Эта опция в большинстве систем используется по-умолчанию, поэтому часто опускается.
Заставляет работать с кэшем маршрутизации ядра.
Включает подробный режим работы команды route.
Использование числового формата адресов вместо попыток определения символьных наименований узлов. Можно использовать в случае определения проблем с соединениями к DNS.
Примеры использования
Определить маршрут к сети, которая должна быть достигнута через сетевой интерфейс eth0:
Здесь для команды route не указывается сам интерфейс, поскольку предполагается, что узлу nodeone соответствует адрес 192.168.1.2. Далее, route «узнаёт», что маршрут нужно проложить именно через eth0 благодаря тому, что системное ядро анализирует все доступные интерфейсы на предмет их конфигурации и сравнивает адрес пункта назначения с сетевой частью сетевых (сконфигурированных) интерфейсов. В данном случае ядро обнаруживает, что eth0 – тот интерфейс (с адресом 192.168.1.2), которому соответствует конечный адрес, т. е. 192.168.1.0.
Задание шлюза по-умолчанию:
Доступ в локальную сеть Ethernet через сетевой интерфейс eth0:
Здесь 192.168.10.0 – сеть, к которой нужно установить доступ (маршрут).
Также можно использовать сокращённую запись для задания маски подсети:
Следует отметить, что шлюзы, установленные командой route будут существовать до перезагрузки системы. Для их использования на постоянной основе необходимо нужные команды прописать в файле. В Ubuntu это /etc/network/interfaces.
Например для настройки маршрутизации сети 192.168.10.0/24 через шлюз 192.168.10.1 интерфейс eth0, это команда
файл /etc/network/interfaces будет выглядеть следующим образом
Также можно прописать и несколько дополнительных маршрутов, для этого просто указываем их в новой строке. После чего сохраняем файл и рестартуем сетевую службу
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
🖧 Команда IP route: создание статических маршрутов или изменение шлюза по умолчанию на Linux
Команда Ip route на Linux
Назначенный системный IP для системы – 10.10.1.100, и мы можем видеть, что пункт назначения находится в этом диапазоне только в первом выводе команды.
Вторая команда также показывает шлюз для диапазона IP, то есть 10.10.1.10.
Файлы маршрутизации находятся в папке «/etc/sysconfig/network-scripts/»:
2- Как создать новый роутинг, т.е. создать новый статический маршрут.
3- Удалить маршрут
Чтобы удалить роут:
4- Удалить существующий шлюз по умолчанию
Чтобы удалить существующий шлюз по умолчанию системы:
5- Как добавить новый шлюз по умолчанию
Чтобы настроить новый шлюз по умолчанию, нам нужно использовать следующую команду:
6- Как отклонить сетевые пакеты для конкретного хоста или сети
Мы также можем использовать команду IP route для запрета сетевого трафика на конкретном хосте или даже для диапазона сети.
Anything in here will be replaced on browsers that support the canvas element
Маршрутизация в Linux
Материал из Xgu.ru
Linux предоставляет большой набор функций для маршрутизации и инструменты для ее настройки. Ядро 2.6.x поддерживает:
Содержание
[править] Команды
Для управления маршрутизацией применяются следующие команды: route, netstat, ip (последняя из пакета iproute2, возможно его придется установить).
Просмотреть таблицу можно следующими способами:
При этом следует учитывать, что доступ ко всем возможностям дает только ip. Используя route вы не только не сможете настроить «продвинутые» функции вроде политик маршрутизации, но и не увидите их существование в выводе команды просмотра, если они уже настроены в системе. Поэтому следует по возможности использовать ip.
Модификация таблицы маршрутизации:
[править] Использование route
[править] Использование ip
Синтаксис ip по структуре напоминает синтаксис Cisco IOS. Любые опции могут быть сокращены до потери двусмысленности, например «ip ro ad» вместо «ip route add».
[править] Действия с маршрутами
Кроме add также поддерживаются и другие действия:
[править] Equal Cost Multi Path
Если добавить два маршрута до одной и той же сети с одинаковой метрикой, ядро начнет распределять нагрузку между ними путем выбора того или другого с равной вероятностью. Работает и для более чем двух маршрутов. Предупреждение: это может вызвать проблемы со входящими соединениями, потому что иногда ответ может пойти по другому маршруту, чем пришел запрос. Будьте осторожны.
[править] IPv6
Настройка маршрутизации IPv6 почти идентична настройке для IPv4.
В некоторых дистрибутивах еще есть нерешенная проблема с маршрутом по умолчанию (например, старые версии RHEL), используйте
[править] Просмотр маршрутов до определенной сети
На маршрутизаторах с длинной таблицей может быть неудобно просматривать вывод «ip route show» в поисках нужного маршрута. В этом случае можно использовать команду вида:
которая выведет маршруты только до указанной сети.
[править] Пересылка пакетов между интерфейсами
Linux позволяет разрешить или запретить пересылку пакетов между интерфейсами (forwarding). На рабочих станциях и серверах приложений ее можно запретить, на маршрутизаторах или межсетевых экранах она, очевидно, должна быть разрешена.
За этот параметр для IPv4 отвечает переменная net.ipv4.ip_forward (1 = «разрешить», 0 = «запретить»).
Для IPv6 используйте net.ipv6.conf.all.forwarding
Чтобы настройки сохранились после перезагрузки, пропишите значения net.ipv4.ip_forward и net.ipv6.conf.all.forwarding в /etc/sysctl.conf.
[править] Конфигурационные файлы
Настройки статической маршрутизации находятся в различных файлах, в зависимости от дистрибутива.
(добавьте свои дистрибутивы, пожалуйста)
[править] Policy routing
Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3), не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.
Все будут ходить через шлюз 10.0.1.2, а 192.168.1.1 — через 10.0.3.4.
Маршрутизация в Linux
Эта статья одна из статей про работу сетей в Linux. Вы уже знаете, что все данные в сети передаются в виде пакетов, а чтобы компьютер знал куда нужно отправить тот или иной пакет используются IP адреса. Но пакету, перед тем, как он достигнет точки назначения нужно пройти множество компьютеров и маршрутизаторов.
Каждому из маршрутизаторов нужно знать на какой компьютер передавать пакет дальше. Именно это мы и обсудим в этой статье. Сегодня нас будет интересовать маршрутизация в Linux, как это работает, как настроить правила и заставить все работать как нужно.
Сетевые маршруты в Linux
Как я уже сказал, сетевые маршруты необходимы чтобы компьютеры могли определить по какой цепочке должен пойти пакет, чтобы достигнуть цели. Маршруты можно настроить на уровне интерфейса или маршрутизатора.
Когда компьютеру нужно отправить пакет в сеть он смотрит таблицу маршрутизации, в ней указанны ip адреса пунктов назначения и адреса интерфейсов и роутеров в домашней сети, которые могут отправить пакет по нужному адресу. Если для цели маршрут не указан то используется так называемый шлюз по умолчанию или маршрут по умолчанию. Точно такая же картина наблюдается на роутере. Устройство смотрит на IP адрес назначения и сверяет его со своей таблицей маршрутизации, а потом отправляет дальше.
Ниже мы рассмотрим как проверить текущие маршруты в системе, а также как настроить новые.
Как посмотреть таблицу маршрутизации
Перед тем как что-либо менять, нужно понять какие правила уже используются. В Linux для этого существует несколько команд. Чтобы посмотреть таблицу маршрутизации можно использовать команду route:
Вот так выглядит таблица маршрутизации linux. Тут выводится достаточно простая информация, которой не всегда достаточно чтобы понять суть дела. Более подробно можно посмотреть с помощью команды routel:
Вывод похож на результат предыдущей команды, но выглядит не совсем привычно, это потому, что вывод команды можно использовать в качестве аргумента для ip route add или ip route del. Это очень удобно. Как вы видите, в качестве шлюза по умолчанию везде используется 192.168.1.1. Рассмотрим подробнее что означает вывод этой команды:
А теперь рассмотрим выполняется настройка маршрутов Linux.
Настройка маршрутов в Linux
Вы можете настраивать таблицу маршрутизации с помощью команды ip. Например, чтобы изменить маршрут по умолчанию достаточно выполнить:
ip route add default via 192.168.1.1
Так вы можете добавить маршрут для любого IP адреса, например, для 243.143.5.25:
sudo ip route add 243.143.5.25 via 192.168.1.1
Все очень просто, сначала указывается IP адрес цели, а затем шлюз в локальной сети, через который можно достичь этого адреса. Но такие маршруты будут активны только до перезагрузки, после перезагрузки компьютера они будут автоматически удалены. Чтобы маршруты сохранились их нужно добавить в файл конфигурации.
В операционных системах семейства Red Hat используются конфигурационные файлы /etc/sysconfig/network-scripts/route-ethX. Каждый файл может описывать несколько маршрутов, например:
GATEWAY=10.10.0.1
NETMASK=255.0.0.0
IPADDR=10.10.0.22
Выводы
В этой небольшой статье мы кратко рассмотрели как работает маршрутизация в Linux, как выполняется настройка маршрутизации в linux, а также зачем это нужно. Надеюсь, эта информация была полезной для вас.
How To Add Route on Linux
As a network engineer, you probably spend a lot of time thinking and planning your network infrastructure.
You plan how computers will be linked, physically using specific cables but also logically using routing tables.
When your network plan is built, you will have to implement every single link that you theorized on paper.
In some cases, if you are using Linux computers, you may have to add some routes in order to link it to other networks in your company.
Adding routes on Linux is extremely simple and costless : you can use the Network Manager daemon (if you are running a recent distribution) or the ifconfig one.
In this tutorial, you will learn how you can easily add new routes on a Linux machine in order to link it to your physical network.
Prerequisites
In order to add routes on your Linux machine, you need to have administrator rights.
In order to verify it, you can run the “sudo” command followed by the “-v” option (in order to update your cached credentials).
If you don’t have sudo rights, you can have a look at our dedicated articles on getting administrator rights on Ubuntu or CentOS.
Add route on Linux using ip
The easiest way to add a route on Linux is to use the “ip route add” command followed by the network address to be reached and the gateway to be used for this route.
By default, if you don’t specify any network device, your first network card, your local loopback excluded, will be selected.
However, if you want to have a specific device, you can add it to the end of the command.
As an example, let’s say that you want two LAN networks to be able to communicate with each other.
The network topology has three different Linux machines :
The first computer cannot ping the other computer, they are not in the same subnet : 10.0.2.0 for the first computer network and 10.0.3.0 for the second one network.
As the two hosts are not part of the same subnet, the ping command goes to the default gateway.
In order to see the routes already defined on your machine, use the “ip route” command with no arguments. You can also use the “ip r” command as an abbreviation.
This is the routing table of your Linux computer : every computer has one. A router happens to manage many more routes than that but it is essentially using the same routing syntax.
So how does one read that?
In order to understand this output, you have to read from top to bottom :
Note : did you know? The 169.254.0.0/16 address is called APIPA (for Automatic IP Address Addressing). It is the default IP used by a system that failed to reach a DHCP server on the network.
In our case, in order to call the 10.0.3.2/24 IP address, the call will be forwarded to our 10.0.2.1 router.
However, is our router able to forward calls addressed to the 10.0.3.0/24 network?
A simple “ip r” command on the router can give us a hint.
As you can see, the router is only linked to the 10.0.2.0/24 network which is obviously an issue.
In order to add a route on our Linux router, we use the “ip route add” command.
Now, if you were to ping your second computer on the first computer, you would be able to reach it.
Awesome, you have successfully added a route from one Linux computer to another!
Adding permanent route configuration on Ubuntu
On Ubuntu, there are three ways of adding a permanent route to your Linux machine :
Using Network Manager
To add a permanent route to the Network Manager, you have to navigate to the connection file located at “/etc/NetworkManager/system-connections”.
Edit your “Wired connection” file and add a “route1” property in the IPv4 part of the network configuration.
The route has to be defined as : the network IP address followed by the CIDR, next the default gateway and finally the next-hop.
Awesome, you have added a permanent route to your Linux server!
Using Netplan
Netplan is an Ubuntu exclusive but it can be quite useful if you want to configure your network using a simple YAML file.
To add a permanent route using Netplan, add the following section to your “/etc/netplan” configuration file.
For the changes to be applied, you will have to execute the “netplan” command with the “apply” argument.
Congratulations, you have configured your network using Netplan. If you want to read more about Netplan and its objectives, you can have a look at the dedicated documentation.
Using /etc/network/interfaces
To add a permanent route to a distribution using ifup and ifdown, edit the “/etc/network/interfaces” file and add the following section.
Adding permanent route configuration on RHEL
By adding the route in the previous section, there is a chance that your distribution created a file for the route to be persisted.
However, if it is not the case, you need to add it in order to keep your route when restarting your server.
On RHEL and CentOS distributions, you need to create a file named “route- ” in the “/etc/sysconfig/network-scripts” folder.
Add route on Linux using nmcli
Another way of adding a route on Linux is to use the “nmcli” utility and add an IPV4 route using the “modify” command.
Note : need a complete article about the Network Manager? We have a complete article about configuring your network using Network Manager.
For example, using the infrastructure of the previous section, in order to add a route, we would execute the following command.
As changes are not made live, you will need to reload your network connections from disk using the “nmcli reload” command.
Awesome! Now there is a route between your first and second network.
As a consequence, you will be able to ping your second computer from the first computer.
Adding a route using the network graphical interface
If you are not into executing commands in the terminal, luckily for you, there is a way to add a route on Linux using a graphical interface.
Whether you are on Ubuntu, Debian or RHEL makes no difference as they all share the same network panel on GNOME.
At the top right corner of your screen, look for a small network icon and click on it.
Click on “Wired Connected” and look for the “Wired Settings” panel under it.
When the panel opens, look for the “Wired” section and click on the small gear wheel right next to it.
In the “Wired” panel, you will be presented with many different parameters : your current IPv4 address, your current MAC address, an optional IPv6 address and your link speed.
In the “IPv4” tab, you will be presented with your current IP configured (most likely two for your computer to act as a Linux router).
Right under it, you will see the “Routes” section. In there, you can specify the input of the previous sections.
When you are done, click on the “Apply” blue button at the top right corner of the window.
In order for the changes to be applied, you will need to restart your network. You can achieve that by clicking on the “on/off” toggle in the “Wired” window of the network parameters.
You have successfully added a route on Linux using the graphical interface, your computers should now be able to talk to each other.
Troubleshooting Internet issues on Linux
In some cases, you may want to add a route on your Linux because you want to be able to reach websites outside of your local network, say 8.8.8.8 for example.
As an example, let’s say that you have a local router linked to “Internet” that resides at 192.168.178.1/24.
Inspecting your current routes is an easy way for you to guess why you are not able to reach Internet websites.
The thought process is quite simple :
However, remember that routes are two-lane highways : you need to be able to reach an external IP, but the external IP needs to be able to reach back to you.
As a consequence, routes need to be correctly defined on your local network architecture. As a diagram is more useful that a thousand words, here is a way to understand it.
Whenever you are troubleshooting Internet issues, you have to think with routes : do I have a route from my computer to the computer that I am trying to reach?
Are the computers or routers between me and the target configured to handle my calls?
Reaching a part of the network is great, but is this part of the network able to answer me back?
In our diagram detailed above, our router may receive an answer from Google, but it has to know what to do with the request. In your local home network, you don’t have to worry about it as most of the requests are forwarded using the NAT protocol (short for Network Address Translation Protocol).
Conclusion
In this tutorial, you learnt how you can easily add a new route on many different Linux distributions.
Right now, as for other topics, some tools co-exist on Linux making the network configuration a bit convoluted sometimes.
However, we listed most of the options that you may encounter. If we forgot about an option, make sure to leave a comment for us to know.
If you are interested in Linux System Administration, make sure to have a look at our dedicated section on the website.








































