Статическая маршрутизация

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Static routing and the translation is 100% complete.
Other languages:

Маршрут — это правило, устанавливаемое в ядре, чтобы определить, какой физический сетевой интерфейс или какой шлюз использовать, чтобы достичь определённой сети (или отдельного компьютера). Существует множество типов маршрутизируемых протоколов; данная статья описывает маршрутизацию протокола IP в ядре Linux.

Хотя маршруты IP хранятся в ядре, их можно модифицировать с помощью пользовательских инструментов, как это описано в следующих примерах.

Отображение маршрутов

Показать таблицу маршрутизации с помощью iproute2:

user $ip route
default via 192.168.1.1 dev wlan1 metric 1
192.168.50.0/24 dev lan proto kernel scope link src 192.168.50.1
127.0.0.0/8 via 127.0.0.1 dev lo 
192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.1

Или показать таблицу маршрутизации с использованием sys-apps/net-tools:

user $netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.50.0    0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.1.0     0.0.0.0         255.255.255.0   U     2000   0        0 wlan1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.1.1     0.0.0.0         UG    2000   0        0 wlan1

Добавление статического маршрута

Для добавления статического маршрута необходимо знать адрес IP, маску подсети (CIDR) и шлюз.

В этом примере мы прокладываем маршрут к сети 10.10.10.0 с сетевой маской 255.255.255.0 через шлюз 192.168.1.50. Для команд из sys-apps/iproute2 (ip) требуется использование синтаксиса подсетей в стиле CIDR. Следующий пример команды добавляет маршрут 10.10.10.0/24:

root #ip route add 10.10.10.0/24 via 192.168.1.50

Показать таблицу маршрутизации с помощью команды ip route:

user $ip route
default via 192.168.1.1 dev wlan1 metric 1
10.10.10.0/24 dev wlan1 via 192.168.1.50 src 10.10.10.1
192.168.50.0/24 dev lan proto kernel scope link src 192.168.50.1
127.0.0.0/8 via 127.0.0.1 dev lo 
192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.1

В старых системах вместо использованного в примере ip, возможно, единственно доступными командами могут быть netstat или route (из пакета sys-apps/net-tools).

С помощью команды route статический маршрут добавляется следующим образом:

root #route add -net 10.10.10.0 netmask 255.255.255.0 gw 192.168.1.50

Показать таблицу маршрутизации с помощью netstat (sys-apps/net-tools):

user $netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.0      192.168.1.50    255.255.255.0   UG    0      0        0 wlan1
192.168.50.0    0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.1.0     0.0.0.0         255.255.255.0   U     2000   0        0 wlan1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.1.1     0.0.0.0         UG    2000   0        0 wlan1

Таблица маршрутизации отсортирована от наиболее конкретных маршрутов к наиболее общим. Так она прочитывается в процессе маршрутизации. Совпадение с наибольшим префиксом означает самую маленькую сеть, или сеть с самой длинной сетевой маской, или самый конкретный маршрут, например 255.255.255.255 находится на первой позиции в таблице маршрутизации

Добавление постоянного статического маршрута

Пользователям netifrc (стандартный инструмент управления сетью в OpenRC) для добавления постоянного статического маршрута нужно открыть /etc/conf.d/net в любимом текстовом редакторе и изменить его соответствующим образом.

Посмотрите свою текущую таблицу маршрутизации для справки.

ФАЙЛ /etc/conf.d/net
routes_wlan1="10.10.10.0/24 via 192.168.1.50
    default via 192.168.1.1"

Если в качестве сетевого менеджера используется dhcpcd, статический маршрут вместо этого должен быть записан в /etc/dhcpcd.conf.

Оба указанные выше конструкции означают:

  1. IP-пакеты, предназначенные для сети 10.10.10.0/24, будут отправлены в 192.168.1.50.
  2. IP-пакеты, предназначенные для всех остальных сетей 0.0.0.0/0, будут отправлены в 192.168.1.1.
Заметка
0.0.0.0/0 означает все другие сети без префикса (маски подсети), то есть маршрут по умолчанию.

Маршрут по умолчанию 0.0.0.0/0 будет использован, если:

  • Узел не имеет физического или логического интерфейса IP в целевом сегменте сети.
  • Узел вынужден отправлять IP-пакеты за пределы своего сегмента IP-сети, и в таблице маршрутизации явно не указан маршрут к целевой сети IP.

Смотрите также

  • iproute2 — a tool developed to unify network interface configuration, routing, and tunneling for Linux systems.
  • Network management — describes possibilities for managing the network stack.

Внешние ресурсы