Linux how to set routing

Маршрутизация в 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.

Настройка маршрутов в 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.

Источник

Configuring Routing on Linux (RHEL/CentOS)

In this article we will show how to configure routing and manage network routes on Linux using the ip command on Linux CentOS (how to view the routing table, add/remove static routes, etc.). The article is applicable to any other Linux distro with ip tool (Red Hat, Fedora, etc.)

Читайте также:  Code studio linux mint

To manage routing in Linux, it is recommended to use the ip command instead of route . The route command doesn’t allow to configure advanced routing features (like routing policies) and cannot show special routing settings if they were set using the ip tool.

How to View the Network Routing Table in Linux?

To display the current routing table in Linux, run this command:

ip route comand in Linux - swow routing table

  • default via 192.168.1.1 dev enp0s3 is the default gateway using the enp0s3 interface in this example. If the target IP address does not have a static route in the routing table, the packet is sent through that gateway (the default route);
  • 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 is a static route for the 192.168.1.0/24 network through the interface 192.168.1.201;
  • proto kernel is a route created by the kernel ( proto static – the route added by an administrator);
  • metric is the route priority (the less is the metric value, the higher the priority is). If there are two routes with the same metric (never do it!), the kernel will select routes randomly.

To find out which interface (gateway) is used to routing traffic to the specific IP address, the following command is used:
# ip route get 192.168.2.45

192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201

You can use your Linux server with two or more interfaces as a router or an Internet gateway. To enable packet routing between multiple interfaces, enable the net.ipv4.ip_forward = 1 kernel parameter.

Adding and Removing Static Routes in Linux

To add a new route to a specific IP network in the Linux routing table, run this command:

# ip route add 192.168.0.0/24 via 192.168.1.1

Thus, we will add the route for the 192.168.0.0/24 IP network through the gateway 192.168.1.1.

The format of the ip route command is very much like Cisco IOS syntax. You can also use abbreviations here, for example, you can use ip pro ad instead of ip route add .

ip rout add static route on Linux

You can also add a separate static route for a single IP address (host):

# ip route add 192.168.1.0 via 192.168.1.1

You can create a null route similar to Cisco ( ip route null0 ). The packets sent to this network are dropped due to No route to host:

# ip route add blackhole 10.1.20.0/24

Читайте также:  Редактор загрузчика linux mint

The routes added using this method are temporary and will work until you restart the network service or the server.

To remove a static route created manually, run the following command:

remove a static route on linux

As you can see, the route has been removed from the Linux routing table.

To add a persistent route, you must create a file for the route, or add a rule to the rc.local file (run on host startup).

To add a permanent static route, you need a name of the network interface to be used for the routing. You can get the network interface name using this command:

In my case, it is enp0s3.

get network interface name

Then open the following file:

And add the line containing the route here:

After you have added the route to the file, restart the network service:

add persistent route on linux

After restarting the network, a static route appeared in the routing table.

You can also use a command to add a new route to the rc.local file in order to automatically add static route when the server boot. Open the file:

And enter the command that adds the static route:

# ip route add 192.168.0.0/24 via 192.168.1.1

add permanent route to stratup via rc.local file

Then if your server is restarted, the route will be automatically added during the system boot.

Modifying an Existing Route Entry in Linux

To change an existing route, you can use the ip route replace command:

# ip route replace 192.168.0.0/24 via 192.168.1.1

ip route replace - change route

To reset all temporary routes in the routing table, just restart the network service:

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

How to Change the Default Route or Default Gateway on Linux?

You can remove a default route using the ip route del command:

# ip route del default via 192.168.1.1 dev enp0s3

To set a new default route, the following command is used in CentOS/RHEL Linux:

# ip route add default via 192.168.1.2 (a route via gateway IP address)

# ip route add default via enp0s3 (a route using a device name)

To change the default route settings, this command is used:

# ip route replace default via 192.168.1.2

Источник

Оцените статью
Adblock
detector