- Маршрутизация в Linux
- Сетевые маршруты в Linux
- Как посмотреть таблицу маршрутизации
- Настройка маршрутов в Linux
- Выводы
- Настройка маршрута по умолчанию в Linux
- Показать маршруты по умолчанию
- Настройка дефолтного маршрута
- Add a Default Route on Linux
- What Will We Cover?
- What Is a Default Gateway?
- Checking the Default Gateway
- Deleting the Default Gateway
- Creating a New Default Gateway
- Making the Routing Changes Permanent
- Conclusion
- About the author
- Ali Imran Nagori
Маршрутизация в Linux
Эта статья одна из статей про работу сетей в Linux. Вы уже знаете, что все данные в сети передаются в виде пакетов, а чтобы компьютер знал куда нужно отправить тот или иной пакет используются IP адреса. Но пакету, перед тем, как он достигнет точки назначения нужно пройти множество компьютеров и маршрутизаторов.
Каждому из маршрутизаторов нужно знать на какой компьютер передавать пакет дальше. Именно это мы и обсудим в этой статье. Сегодня нас будет интересовать маршрутизация в Linux, как это работает, как настроить правила и заставить все работать как нужно.
Сетевые маршруты в Linux
Как я уже сказал, сетевые маршруты необходимы чтобы компьютеры могли определить по какой цепочке должен пойти пакет, чтобы достигнуть цели. Маршруты можно настроить на уровне интерфейса или маршрутизатора.
Когда компьютеру нужно отправить пакет в сеть он смотрит таблицу маршрутизации, в ней указанны ip адреса пунктов назначения и адреса интерфейсов и роутеров в домашней сети, которые могут отправить пакет по нужному адресу. Если для цели маршрут не указан то используется так называемый шлюз по умолчанию или маршрут по умолчанию. Точно такая же картина наблюдается на роутере. Устройство смотрит на IP адрес назначения и сверяет его со своей таблицей маршрутизации, а потом отправляет дальше.
Ниже мы рассмотрим как проверить текущие маршруты в системе, а также как настроить новые.
Как посмотреть таблицу маршрутизации
Перед тем как что-либо менять, нужно понять какие правила уже используются. В Linux для этого существует несколько команд. Чтобы посмотреть таблицу маршрутизации можно использовать команду route:
Вот так выглядит таблица маршрутизации linux. Тут выводится достаточно простая информация, которой не всегда достаточно чтобы понять суть дела. Более подробно можно посмотреть с помощью команды routel:
Тут вы уже можете видеть IP адрес цели (target), IP адрес шлюза (gateway), IP отправителя (source), протокол, и даже сетевой интерфейс. Но самый удобный способ посмотреть таблицу маршрутизации linux — это команда ip:
Вывод похож на результат предыдущей команды, но выглядит не совсем привычно, это потому, что вывод команды можно использовать в качестве аргумента для ip route add или ip route del. Это очень удобно. Как вы видите, в качестве шлюза по умолчанию везде используется 192.168.1.1. Рассмотрим подробнее что означает вывод этой команды:
- default — в данной строке означает вариант по умолчанию. Здесь должен быть ip адрес цели или маска подсети;
- via 192.168.1.1 — указывает через какой шлюз мы можем добраться до этой цели, у нас это 192.168.1.1;
- dev enp2s0 — сетевой интерфейс, с помощью которого будет доступен этот шлюз;
- proto static — означает, что маршрут был установлен администратором, значение kernel значит что он был установлен ядром;
- metric — это приоритет маршрута, чем меньше значение — тем выше приоритет.
А теперь рассмотрим выполняется настройка маршрутов 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
Здесь gateway — шлюз по умолчанию для этого интерфейса, netmask — маска сети, а ipaddr — ip адрес интерфейса. В Debian и основанных на нем дистрибутивах можно настроить маршруты в файле /etc/network/interfaces. Здесь команда route добавляется в секцию iface. Например:
up route add -net 10.10.0.0 netmask 255.0.0.0 gw 10.10.0.1
С помощью опции -net мы указываем целевую сеть, netmask — это маска сети, а gw — шлюз. Все очень просто. Теперь добавленные маршруты останутся даже после перезагрузки.
Выводы
В этой небольшой статье мы кратко рассмотрели как работает маршрутизация в Linux, как выполняется настройка маршрутизации в linux, а также зачем это нужно. Надеюсь, эта информация была полезной для вас.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Настройка маршрута по умолчанию в Linux
В статье мы покажем, как использовать команды маршрутизации в Linux (в UNIX подобных системах) чтобы отображать или конфигурить информацию о дефолтных маршрутах. Погнали разбираться!
Показать маршруты по умолчанию
Ловите 2 команды, которые помогут отобразить текущую таблицу маршрутизации в Linux:
Вывод такой команды будет примерно следующим:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 ra0 default dsl-router 0.0.0.0 UG 0 0 0 ra0
Или можно использовать второй вариант:
”Выхлоп” такой команды в той же самой таблице маршрутизации:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 191.255.255.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 default 191.255.255.1 0.0.0.0 UG 0 0 0 eth0
Настройка дефолтного маршрута
Синтаксис настройки категорически прост. Смотрите:
- IP-АДРЕС — IP — адрес шлюза;
- ИНТЕРФЕЙС — имя интерфейса, за которым сидит указанный выше шлюз;
Например, если IP — адрес вашего роутера 192.168.1.254 и он сидит на интерфейсом eth0, то из под root выполните команду:
# route add default gw 192.168.1.254 eth0
Или можно использовать хостнейм (только проверьте, чтобы он резолвился на уровне DNS):
# route add default gw dsl-router eth0
Или можно использовать команду ip , чтобы маршрутизировать весь трафик через шлюз 192.168.1.254, который подключен к интерфейсу eth0:
# ip route add 192.168.1.0/24 dev eth0
Либо вместо eth0 интерфейса можно прописать в явном виде адрес шлюза. Тут ап ту ю, как говорится 🙂
# ip route add 192.168.1.0/24 via 192.168.1.254
Add a Default Route on Linux
Any Linux user, especially a systems administrator, should have skills to make simple network configurations on a Linux system. For the system to communicate to the other computers on the internet, gateways must be set up and adjusted as needed.
What Will We Cover?
In this article, we will see how to add a default route on the Linux systems. Notably, different systems may have different configurations. However, we will focus on the Ubuntu 20.04 system.
What Is a Default Gateway?
To connect your home network to the wider internet, you need a default gateway. The function of a gateway is implied by its name; it connects a local area network to the wider internet.
All traffic that are not meant for the local area network and for which no alternate route is defined in the routing table are sent via the default gateway. Typically, a network’s default gateway is a specific router.
The wireless router serves as the “default gateway” in most home networks. It’s a way to connect to resources which are located on other networks that are far from your own. Internet navigation would be considerably more difficult without it.
Checking the Default Gateway
We can use the ip command and the route object to view the system’s configured routes. Since the list option is already the default action, we don’t need to include it. Additionally, we can use “r” in place of route to cut down on typing:
We can see the term “default” included in one of the routes. This is the standard route for the default gateway/route.
Automatic route addition and deletion are possible in certain cases. For example, while establishing a VPN connection, the ip r command on the same system yields a different set of results. In doing so, the network traffic is routed via a private tunnel:
With grep, it’s possible to easily isolate the default route from a large collection of configured ones:
Deleting the Default Gateway
Now, we delete the route that sends the traffic via the system’s default gateway. For this, we use the route object with the ip command and specify the delete option. Also, we require the sudo access to the routing table in order to make any modifications. First, we list the routes before deleting the default one. Then, we verify our action by listing them again:
As we can see, the default gateway entry is deleted.
Creating a New Default Gateway
The route object with an add argument can be used to create a new default gateway. Let’s take example the adding of 192.168.117.161 as the new default gateway on the wlo1 interface:
The traffic now routes via this new default gateway on enp0s3.
Making the Routing Changes Permanent
The modifications we made have immediate effect, but they are lost once the machine is restarted. You must alter a few configuration files in order to make your modifications permanent.
For example, in the case of Ubuntu, the netplan command comes in handy. Here, we need to open the netplan network configuration file:
Now, add the following configuration inside it, below the line corresponding to the renderer:
You can refer to the following screenshot. Keep in mind that the successive level of indentation is important here as well.
After saving the file, apply the changes:
Getting back to the normal command line means that the configuration is successful. Also, you can use the netplan command with the try option to examine the modifications before you apply them:
This provides you time to test your settings. If everything is set properly, you can save the configuration by hitting the “Enter” key within two minutes before the command times out. In this way, your changes are applied. Otherwise, if you don’t hit the “Enter” key, the changes only remain in the configuration file. However, your network settings are not yetmodified by them.
Note: On RHEL 8 Red Hat System, we can use the nmstatectl utility to define the gateway configuration in a YAML file. Similarly, RHEL System Roles (playbook approach) can also be used to set the default gateway.
Conclusion
We learned how to configure a default route on the Linux systems with the Ubuntu 20.04 target.
If your default gateway settings are correct, you’ll be able to communicate with the rest of the internet. However, familiarity with the hostname-to-IP address resolution is still required.
About the author
Ali Imran Nagori
Ali imran is a technical writer and Linux enthusiast who loves to write about Linux system administration and related technologies. You can connect with him on LinkedIn
.