Маршрутите, които са необходими за доставката на пакетите до крайната им дестинация, се конфигурират в интерфейса или маршрутизатора. Ако компютърът има за задача да изпрати пакет към мрежата, той преглежда таблицата за маршрутизация, в която са изброени IP адресите на дестинацията и адресите на интерфейсите и маршрутизаторите в домашната мрежа, които могат да изпратят пакета до правилния адрес. Ако не е посочен маршрут за местоназначението, първо се използва така нареченият шлюз по подразбиране или маршрут по подразбиране. Абсолютно същата схема се наблюдава и при маршрутизатора. Устройството разглежда IP адреса на местоназначението и го проверява в своята таблица за маршрутизация, след което го изпраща нататък. След това нека разгледаме как да конфигурираме конкретни маршрути и да създаваме нови маршрути, като използваме пример.
Преди да започнете да променяте каквото и да било, трябва да разберете какви правила вече се използват. За тази цел операционната система Linux предоставя няколко команди. За тази цел използваме специалната команда route (маршрут)
:
$ route
Ето как изглежда таблицата за маршрутизация на Linux. Тя предоставя проста информация, която не винаги е достатъчна, за да се разбере смисълът. За по-подробна информация трябва да използвате командата routel
:
$ routel
Тук можете да видите IP адреса (цел), IP адреса на шлюза, IP адреса на източника, протокола и дори мрежовия интерфейс. Но има и по-удобен начин да видите таблицата за маршрутизация на Linux, като използвате командата IP:
$ ip route
Виждаме резултат, който е подобен на резултата от предишната команда. Тъй като изходът не е в най-удобната форма, можете да използвате ip route add
или ip route del
като аргумент на ip route
add
или ip route del
. Повярвайте ми, това е много удобно. По този начин навсякъде ще виждате като шлюз по подразбиране 192.168.1.1
. След това нека да поговорим какво означава изходът на тази команда:
default
- опция по подразбиране. Това трябва да е целевият ip адрес или маската на подмрежата;via 192.168.1.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.0.1NETMASK=255
.0.0.0.0.0IPADDR=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
С iface -net
се задава целевата мрежа, netmask
е мрежовата маска, а gw
е шлюзът. В това няма нищо сложно. Сега добавените маршрути ще останат дори след рестартиране на компютъра.
И така, видяхме как работи маршрутизацията в Linux, как се конфигурира маршрутизацията в Linux и защо е необходима.