У цій статті ми розглянемо особливості налаштування маршрутизації та управління маршрутами в Linux (перегляд таблиці маршрутизації, додавання / видалення статичних маршрутів і т.д.) на прикладі CentOS за допомогою утиліти ip. Стаття може бути застосована і для будь-якого іншого дистрибутива Linux з утилітою ip (Red Hat, Fedora і т.д.).

Для управління маршрутизацією в Linux переважно ісопльзовать утиліту ip, а не route. Команда route не дозволяє налаштовувати розширені можливості маршрутизації (наприклад, політики маршрутизації), і не покаже спеціальні настройки маршрутизації, якщо вони вже зроблені через ip.

Перегляд таблиці маршрутизації в Linux

Щоб вивести поточну таблицю маршрутизації в Linux виконайте команду:

# ip route

вивести таблицю маршрутизації в linux centos ip router

  • 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 адресою використовується команда:

# ip route get 192.168.2.45

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.

додавання маршруту в centos

Також можна додати окремий маршрут для однієї IP адреси (хоста):

# ip route add 192.168.1.0 via 192.168.1.1

Можна зробити аналог нульовий маршрут маршруту в Cisco (ip route null0), пакети в таку мережу видаляються через No route to host:

# ip route add blackhole 10.1.20.0/24

Маршрути, додані таким чином є тимчасовим і працюватимуть до перезавантаження мережевої служби або сервера.

Щоб видалити створений вручну маршрут, виконайте:

# ip route del 192.168.0.0/24

видалити маршрут з таблиці маршрутизації в linux centos

Як бачите, маршрут видалений з таблиці маршрутизації.

Щоб додати постійний маршрут, потрібно створити файл для цього маршруту, або додати правило в файл rc.local (виконується при завантаженні сервера).

Щоб додати постійний (статичний) маршрут, потрібно знати ім’я мережевого інтерфейсу, який буде використовуватися для маршрутизації. Дізнатися ім’я мережевого інтерфейсу можна командою:

# ip a

У моєму випадку, інтерфейс enp0s3.

мережеві інтерфейси в centos

Далі відкриваємо такий файл:

# nano /etc/sysconfig/network-scripts/route-enp0s3

І додаємо туди рядок з маршрутом:

192.168.0.0/24 via 192.168.1.1

Після додавання маршруту в файл потрібно перезапустити сервіс мережі:

# service network restart

додати постійний (persistent) маршрут в centos linux

Після перещаауска мережевого сервісу, в таблиці маршрутизації з’явився статичний маршрут.

Також можна додати команду додавання нового маршруту в файл rc.local, Щоб він автоматично додавався при завантаженні сервера. Відкрийте файл:

# nano /etc/rc.local

І вкажіть команду додавання маршруту:

# ip route add 192.168.0.0/24 via 192.168.1.1

додавання persistent маршруту через rc.local

Тепер, якщо ваш сервер буде перезавантажений, маршрут пропишеться автоматично при завантаженні системи.

Змінити маршрут в Linux

Щоб змінити вже існуючий маршрут, можна використовувати команду ip route replace:

# ip route replace 192.168.0.0/24 via 192.168.1.1

ізменітть маршрут ip route replace

Щоб скинути всі тимчасові маршрути в таблиці маршрутизації, просто запустіть мережевий сервіс:

[root@localhost ~]# service network restart

Restarting network (via systemctl): [ OK ]

[root@localhost ~]# ip route

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

ip route replace за замовчуванням

Leave a Reply

Your email address will not be published. Required fields are marked *