Итак, дорогие мои посетители, сегодня я хотел бы написать вам о маршрутизации. Заоблачно-заумного тут ничего не будет, я сделаю этакий обзорчик для пользователей. Системные администраторы, как правило, работают в режиме “настроил и забыл”, и для таких людей в этой статье нового ничего не найдется. Но что делать обычному пользователю, у которого не оказалось под боком друга-сисадмина? Что же, я попытаюсь помочь им в этом деле.

Для начала мы узнаем, что же такое маршрутизация. В сетях связи это процесс определения маршрута следования информации. Любая сеть может быть спроектирована так, как хочет того сетевик и как это требуется в конкретной ситуации. Структура сетей бывает очень разной — это зависит от ее топологии и от их комбинирования (про топологии можно прочитать тут). В простейшем случае она может выглядеть так:

Некоторые виды топологии сетей

В реальном случае у провайдеров топология сетей очень сложная и может состоять чуть ли не из всех видов топологий — это обуславливается как количеством абонентов, получающих услуги провайдера, так и необходимостью в избыточности соединений узлов связи (для повышения надежности — если, например, один провод съедят крысы, то пакет пойдет по второму проводу — соединение не пропало, абонент доволен, как слон, качеством, и не знает про беды и крыс, которые уже активно дезинтегрируются сетевиками на его чердаке :) ). В результате получается так, что пакет информации может бежать к своей цели совершенно разными путями. Не всегда короткими, не всегда длинными. Этот процесс необходимо контролировать, чтобы не возникала потеря информации при ее передаче (пакет может побежать от отправителя, но не дойти до адресата).

Для чего нам, пользователям, вообще нужны маршруты соединений? Как правило, это связано с тем, что провайдер подключает вас к своей локальной сети, через которую вы также получаете доступ в Интернет. Вот тут чаще всего появляется необходимость разделить локальный трафик от “глобального”, т.е. направить пакеты, бегущие к адресату в локальной сети, именно в локальную сеть, а пакеты, бегущие в Интернет — именно туда.

В простой ситуации пользователи Windows могут и не столкнуться с настройкой маршрутизации сети. У Windows есть одна положительная сторона — эта ОС при подключении сети пытается автоматически настроить маршрутизацию. С Linux не все так просто — придется настраивать маршрутизацию руками. Для управления маршрутами в Linux используется команда route, а в Windows… тоже команда route :) . Тем не менее, параметрами эти команды все же различаются. Команды выполняются в терминале Linux и в консоли Windows (Win+R→“Выполнить”→cmd). Справку по командам можно почитать, набрав в терминале Linux

man route

и в консоли Windows

route /?

Для просмотра маршрутов системы в Linux

route -n

в Windows

route print

Команда выведет на экран примерно такое (вывод route в Linux):

Destination Gateway     Genmask        Flags Metric Ref Use Iface
172.16.16.1 0.0.0.0     255.255.255.255 UH    0      0     0 ppp0
10.10.10.1  10.10.117.1 255.255.255.255 UGH   0      0     0 eth1
10.10.117.0 0.0.0.0     255.255.255.0   U     1      0     0 eth1
10.10.0.0   10.10.117.1 255.255.0.0     UG    0      0     0 eth1
169.254.0.0 0.0.0.0     255.255.0.0     U     1000   0     0 eth1
0.0.0.0     0.0.0.0     0.0.0.0         U     0      0     0 ppp0

Многого из этого вывода вам для начала нет необходимости знать. Нужно уяснить лишь некоторые поля. Destination — IP-адрес назначения. Адрес может быть как устройства (оканчивающийся на 1-254), так и сети (как правило оканчивается на 0). Это тот самый адрес, куда побегут наши пакеты. Как они побегут? Каким направлением? За это отвечает Gateway (по-русски — шлюз). Шлюз — это такое устройство, которое предоставляет выход в другую сеть. Крупные сети, как правило, состоят из множества мелких подсетей, которые соединяются шлюзами. Адрес шлюза тоже может быть как адресом устройства, так и адресом подсети. Genmask или сетевая маска — параметр, определяющий размерность сети/подсети. Например, маска 255.255.255.0 определяет максимальную размерность сети в 256 адресов, а 255.255.0.0 — 256*256=65536 адресов. Метрика означает приоритет маршрута. Если заданы два маршрута для одного IP-адреса, то при передаче пакета сначала будет применен маршрут с наименьшим числом приоритета. Iface — сетевой интерфейс. Сетевой интерфейс — устройство, позволяющее вам получить доступ с вашего компьютера в сеть. Это может быть сетевая карта вашего компьютера, или, например, модем. В Linux устройства именуются по имени файла, соответствующего этому устройству в директории /dev. В Windows это шестнадцатиричное или десятичное название устройства, которое можно узнать по выводу команды route.

Как добавить маршрут? При помощи параметра add. В Windows это будет выглядеть так:

route add 192.168.0.0 netmask 255.255.255.0 192.168.0.1 [metric <число>] [-p] [if <устройство>]

В Linux

route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 [metric <число>] [dev <устройство>]

Что я сделал этим маршрутом? Я заставил пакеты для всех адресатов сети 192.168.0.0 скакать через шлюз 192.168.0.1.

В квадратных скобках необязательные параметры. Параметр -p означает, что маршрут будет сохранен, и после перезагрузки или очередного выключения-включения компьютера останется в таблице маршрутов и будет работать. По умолчанию все маршруты добавляются на время работы компьютера до перезагрузки.

Метрика — также необязательный параметр. В Windows, если не изменяет память, по умолчанию метрика равна 20, в Linux — 0 (наивысший приоритет).

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