Способи оплати Abuse

Як налаштувати маршрутизацію в Linux

14.03.2021, 18:59

Маршрути, які необхідні для постачання пакетів до кінцевого призначення, налаштовуються в інтерфейсі або маршрутизаторі. Якщо перед комп'ютером стоїть завдання відправити пакет у мережу, він дивиться таблицю маршрутизації, у якій перелічено IP-адреси пунктів призначення та адреси інтерфейсів і роутерів у домашній мережі, які можуть відправити пакет за потрібною адресою. Якщо для мети маршрут не вказано, то насамперед задіюється так званий шлюз за замовчуванням або маршрут за замовчуванням. Точно така ж картина спостерігається на роутері. Пристрій дивиться на IP-адресу призначення і звіряє її зі своєю таблицею маршрутизації, а потім відправляє далі. Далі на прикладі розглянемо, як налаштувати певні маршрути і створити нові.

Дивимося таблицю маршрутизації

Перш ніж почати щось змінювати, необхідно зрозуміти, які правила вже використовуються. Для цього в операційній системі Linux передбачено кілька команд. Для цього використовуємо спеціальну команду route:

$ route

Маршрутизация в Linux

Саме так виглядає таблиця маршрутизації linux. У ній передбачена проста інформація, якої не завжди достатньо, щоб зрозуміти суть справи. Для отримання більш детальної інформації необхідно користуватися командою routel:

$ routel

Маршрутизация в Linux

Тут ви зможете побачити IP адресу (target), IP адресу шлюзу (gateway), IP відправника (source), протокол і навіть мережевий інтерфейс. Але є більш зручний спосіб подивитися таблицю маршрутизації linux за допомогою команди IP:

$ ip route

Маршрутизация в Linux

Ми бачимо результат, який схожий із висновком попередньої команди. Оскільки результат надано в не найзручнішому вигляді, можна використовувати як аргумент для 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.

Налаштовуємо маршрути

У користувача залишається можливість налаштовувати таблицю маршрутизації за допомогою команди 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.0
IPADDR=10.10.0.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

Маршрутизация в Linux

За допомогою опії -net ми вказуємо цільову мережу, netmask - це маска мережі, а gw - шлюз. Нічого складного в цьому немає. Тепер додані маршрути залишаться навіть після перезавантаження.

Так ми розглянули як працює маршрутизація в Linux, як виконується налаштування маршрутизації в Linux, а також навіщо це потрібно.