Использование сети при работе UNIX-системы (8 глава дипломной работы), страница 3

В таблице могут быть вписаны маршруты не к сетям в целом, а к отдельным конкретным хостам. У таких записей (в примере – вторая и третья строки) маска сети равна 255.255.255.255, а в поле флагов присутствует символ «Н» (хост).

В приведенном примере последняя строка соответствует маршруту по умолчанию. Сеть 0.0.0.0 с маской 0.0.0.0 окажется соответствующей для любого IP-адреса, если маршрут для него не найден ранее. Таким образом, в примере все пакеты, для которых не найден специальный маршрут, будут пересылаться через шлюз с адресом 192.168.50.8, называемый также шлюзом по умолчанию. Обычно в роли шлюза по умолчанию указывается шлюз, соединяющий данную сеть с Internet.

Изменения в маршрутную таблицу вносятся при помощи команды route с соответствующими параметрами. Добавить маршрут можно командой «route add», с ключом «-net» для сети и «-host» для отдельного хоста:

route add –net <номер> netmask <маска> gw <шлюз> dev <интерфейс>

route add –host <адрес> gw <шлюз> dev <интерфейс>

Поле «gw» (шлюз) в команде является необязательным. Если оно не указано, считается, что с получателем имеется прямое соединение без промежуточных шлюзов. Примеры применения команды:

route add –net 10.4.10.0 netmask 255.255.255.0 gw 10.4.7.17 dev eth0

route add –host 192.168.50.7 gw 192.168.22.36 dev eth0

Удалить запись в таблице маршрутизации можно командой «route del»:

route del –net 10.4.10.0 netmask 255.255.255.0 gw 10.4.7.17

route del –host 192.168.50.7 gw 192.168.22.36

            Поскольку существует множество вариантов UNIX с некоторыми отличиями в реализации сетевой подсистемы, формат команд в них может несколько отличаться. Приведенные примеры относятся к Linux.

            Ручное редактирование маршрутной таблицы используется обычно на этапе отладки новых соединений. В типовом режиме команды «route add» автоматически исполняются в составе сценариев инициализации при запуске сетевой подсистемы. Для редактирования списка маршрутов, устанавливаемых при загрузке, в большинстве систем имеются достаточно удобные для пользователя графические утилиты.

8.3 Использование UNIX-хоста в роли маршрутизатора.

Согласно сложившейся в области локальных сетей терминологии, термины «маршрутизатор», «шлюз» или «роутер» используются для обозначения узла, выполняющего ретрансляцию пакетов между двумя или более IP-сетями. Маршрутизатор может быть аппаратным, т.е. реализованным в виде специализированного устройства, или программным, представляющим собой универсальный компьютер с программным обеспечением, поддерживающим маршрутизацию.

Компьютер, работающий под управлением операционной системы из семейства UNIX, может быть эффективно использован в роли программного маршрутизатора. В UNIX способность исполнять роль шлюза обычно реализуется на уровне ядра. Тем не менее, функция ретрансляции пакетов (IP-forwarding) может быть включена либо выключена по усмотрению администратора. Обычно для этого служит одна из опций графических утилит конфигурирования сети, относящаяся к настройкам стека TCP/IP.

В Linux состояние функции ретрансляции пакетов определяется флагом, отображаемым как файл /proc/sys/net/ipv4/ip_forward. Единица в этом файле означает, что хост выполняет ретрансляцию, ноль – что ретрансляция запрещена. Этот флаг автоматически устанавливается в «1», если в файле общих настроек сети /etc/sysconfig/network присутствует строка

FORWARD_IPV4=yes

Как и в других реализациях UNIX, все версии Linux содержат графические утилиты для выполнения этих настроек.

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

            Ранние реализации динамической маршрутизации в UNIX-системах основывались на демоне routed, который поддерживал стандартный протокол маршрутизации RIP. В настоящее время шире используется более удачный демон gated, работающий по стандартам RIP, HELLO, EGP, BGP.

В простейшем случае шлюз ретранслирует все транзитные пакеты. Однако часто, из соображений безопасности, требуется ограничить передачу пакетов, в частности, между Internet и локальной сетью. Для этого шлюз должен работать в режиме firewall, или брандмауэра. Под термином брандмауэр понимается хост, являющийся маршрутизатором между двумя IP-сетями и обеспечивающий безопасность одной из них (обычно локальной сети) путем ограничений, налагаемых на передачу пакетов. Брандмауэр анализирует адресную часть каждого пакета и ретранслирует только те из них,  которые не могут представлять угрозу для хостов локальной сети.

Некоторые варианты UNIX поддерживают функцию firewall на уровне ядра; пример такой реализации (в ОС Linux) приведен ниже. В других случаях используются программы-демоны, в частности, широко известный пакет screend.

В предельном случае брандмауэр полностью запрещает ретрансляцию пакетов и работает в режиме proxy-сервера. Proxy-сервер принимает запросы прикладных программ из локальной сети и переадресует их серверам Internet от своего имени. Proxy-сервера поддерживают ограниченный набор протоколов прикладного уровня (FTP, HTTP и т.п.); существуют также специализированные протоколы взаимодействия с proxy – SOCKS4 и SOCKS5.

Proxy-сервер исполняется в виде сетевого демона. Наиболее известной реализацией proxy для UNIX является пакет squid.

Кроме того, при невозможности непосредственной ретрансляции пакетов между сетями может использоваться и технология маскарадинга, подробно описанная ниже.

8.4 Символические имена узлов сети TCP/IP

            Поскольку в сетях TCP/IP помимо основной адресации (4-байтовые IP-адреса) используется также адресация на основе символических имен, в системе должен присутствовать механизм преобразования между этими адресами. Процесс преобразования символических имен в соответствующие им IP-адреса называется разрешением имен. В UNIX прямое и обратное разрешение имен реализовано на уровне стандартных библиотек; этот набор функций называется ресолвером.