Сетевая подсистема Linux
Аннотация: Кратко описан многоуровневый иерархический подход к обеспечению сетевых взаимодействий. Перечислены базовые средства настройки и диагностики сетевой подсистемы Linux.
Многоуровневый подход к организации сетевых взаимодействий
Процесс взаимодействия между узлами компьютерной сети является сложным «Транспортный и прикладной уровни модели сетевого взаимодействия.» . Сложности связаны как с преобразованием «данные-сигналы-данные», так и с передачей сигнала по гетерогенным сетям. Для наглядной иллюстрации процесса передачи данных в сети Интернет можно, например, с помощью команды traceroute (tracert в Windows ), изучить список промежуточных узлов, через которые проходят сетевые пакеты на пути от компьютера пользователя до какого-нибудь Интернет -ресурса (пример 2.1)
$ traceroute www.kernel.org traceroute to www.kernel.org (130.239.17.4), 30 hops max, 60 byte packets 1 192.168.240.1 (192.168.240.1) 78.016 ms 77.871 ms 77.795 ms 2 * * * 3 * * * 4 core.10g.net.belpak.by (93.84.122.105) 109.257 ms 109.196 ms 109.132 ms 5 core.10g.net.belpak.by (93.84.122.18) 117.289 ms 117.227 ms 117.164 ms 6 193.232.249.102 (193.232.249.102) 108.876 ms 12.377 ms 12.257 ms 7 po31.l3-gw-1.mck.net.belpak.by (193.232.249.78) 22.113 ms 16.070 ms 15.949 ms 8 * * * 9 83.229.226.101 (83.229.226.101) 55.643 ms msk-b4-hq-ae0.main.synterra.ru (83.229.225.5) 55.571 ms 83.229.226.101 (83.229.226.101) 55.512 ms 10 ae7.RT.MR.MSK.RU.retn.net (87.245.253.169) 55.450 ms 55.388 ms 55.323 ms 11 ae2-6.RT.TC1.STO.SE.retn.net (87.245.233.134) 70.087 ms 70.025 ms 67.387 ms 12 * * * 13 t1fre-ae0-v1.sunet.se (130.242.83.37) 98.493 ms umu-g.sunet.se (193.11.0.226) 99.859 ms t1fre-ae0-v1.sunet.se (130.242.83.37) 90.245 ms 14 umu-g.sunet.se (193.11.0.226) 112.213 ms u2k-te.gw.umu.se (130.239.0.201) 112.181 ms umu-g.sunet.se (193.11.0.226) 112.137 ms 15 pub4.kernel.org (130.239.17.4) 112.108 ms u2k-te.gw.umu.se (130.239.0.201) 117.516 ms 117.392 ms
Листинг 2.1. Трассировка маршрута (отображение списка промежуточных узлов) до узла www.kernel.org с помощью команды traceroute:
Задачу обеспечения сетевых коммуникаций решают с использованием многоуровневого иерархического подхода. На узле программные компоненты данного уровня «общаются» только с соседними уровнями, при этом интерфейсы (предоставляемые функции) между соседними уровнями четко определены. Узлы взаимодействуют друг с другом посредством протоколов (правил, по которым обмениваются сообщениями программные компоненты одного уровня на разных узлах) «Использование виртуализации для изучения Linux» . Для передачи по сети поток информации на узле-отправителе разбивается на набор фрагментов (единиц передачи данных ), по мере продвижения по иерархии протоколов, каждый протокол добавляет (инкапсулирует) свой заголовок к фрагменту передаваемой информации. На узле-получателе происходит обратный процесс.
Существует несколько альтернативных моделей сетевых взаимодействий «Использование виртуализации для изучения Linux» . В вопросах настройки сетевой подсистемы (в отличие от вопросов разработки протоколов и интерфейсов) значение данных моделей в большей степени методическое, направленное на унификацию терминологии и лучшее понимание процессов функционирования сети.
В данном пособии используется терминология (нестрогая) модели стека протоколов TCP/IP, которая включает четыре уровня:
- Уровень сетевых интерфейсов (доступа к сети). В рамках модели TCP/IP на данном уровне решаются две задачи: упаковки единиц передачи вышележащего уровня во фреймы (единицы передачи данного уровня) и получения физических адресов (MAC-адресов).
- Сетевой уровень (интернет-уровень, межсетевой уровень). Обеспечивает передачу пакетов (единиц передачи сетевого уровня) между гетерогенными сетями на основе IP-адресации (сетевой адресации) и группировки узлов в подсети. Основным протоколом данного уровня является IP ( Internet Protocol ).
- Транспортный уровень. Обеспечивает для фрагментов данных как гарантированную доставку (протокол TCP, единицы передачи — сегменты), так и доставку по возможности (протокол UDP, единицы передачи — датаграммы ). На данном уровне решается задача использования сетевого подключения несколькими приложениями (порты).
- Прикладной уровень. Включает средства преобразования и протоколы представления информационных потоков, непосредственно взаимодействующие с приложениями пользователя.
Пример 2.2. Типичный процесс взаимодействия между сетевыми узлами по прикладному протоколу, использующему в качестве транспорта протокол TCP, можно описать следующим образом на узле-отправителе:
- На прикладном уровне осуществляются необходимые преобразования информационного потока (сжатие, шифрование и т. д.).
- Информационный поток прикладного протокола на транспортном уровне разбивается на последовательность сегментов; в заголовке сегмента, в частности, указаны номера портов отправителя и получателя.
- На сетевом уровне сегмент вкладывается в пакет, заголовок, которого содержит IP-адреса отправителя и получателя.
- На уровне сетевых интерфейсов на основе сетевого пакета формируется фрейм, заголовок которого содержит MAC-адреса отправителя и получателя (в случае «нелокальной» доставки — маршрутизатора удаленных сетей).
На узле-получателе происходит обратный процесс.
Примечание: В некоторых случаях на сетевом уровне и уровне сетевых интерфейсов используется дополнительная инкапсуляция (технологии глобальных сетей, аутентификации, виртуальные частные сети и т.п.)
Средства настройки сетевой подсистемы Linux
Сетевая поддержка в Linux обеспечивается стандартными и дополнительными модулями ядра, программным обеспечением, входящим в состав конкретного дистрибутива, а также может быть расширена за счет использования прочих программных средств «Доступ к локальной сети средствами Linux» «Команды настройки протокола IP» .
Для управления сетевой подсистемой Linux существует множество средств: команды, скрипты, графические программы и т. д. Здесь приведены лишь наиболее известные из них.
Для базовой настройки сетевой подсистемы можно использовать следующие группы команд:
«Традиционные» команды настройки сети (пакет net-tools ) «Постоянные сетевые конфигурации (на примере Debian/GNU Linux)» . В данном пакете присутствуют команды: управления сетевыми интерфейсами ( ifconfig ), таблицей маршрутизации ( route ), таблицей разрешения имен ( arp ), сетевой статистики ( netstat ), статусом сетевых устройств ( mii-tool ) и т.д. Пакет net-tools использовался для управления сетью до ядра 2.4.; включается в современные дистрибутивы Linux для совместимости.
Команды пакета iproute2 «Базовая диагностика сетевых подключений» . Пакет iproute2 разработан для управления параметрами TCP/IP и контроля трафика в Linux (в частности маршрутизация и качество обслуживания). Для управления сетью в современных ядрах Linux (ядра версии 2.4-2.6) рекомендуется использовать средства данного пакета вместо команд net-tools .
Пакет iproute2 включает 3 основные утилиты:
-ip — команда для просмотра параметров и настройки сетевых интерфейсов, IP -адресов, таблиц маршрутизации, правил маршрутизации, таблиц преобразования, IP -туннелей и т.д.
-tc ( traffic control ) — команда для просмотра и настройки параметров управления трафиком (классификация трафика, дисциплины управления очереди для различных классов трафика)
-ss — команда для просмотра текущих соединений и открытых портов (аналог netstat ).
Для настройки сети при загрузке системы (а также как средство настройки работающей системы) в Linux обычно используются наборы конфигурационных файлов и обрабатывающих их скриптов и программ. В дистрибутивах применяются различные способы инициализации сетевой подсистемы, например Debian использует пакет ifupdown (см. «Постоянные сетевые конфигурации (на примере Debian/GNU Linux)» ), а большинство RPM -основанных дистрибутивов — набор файлов вида ifup-*, ifdown-*, ifcfg-*, расположенных в каталоге /etc/sysconfig/network-scripts/ и т.п.
В системах с установленным оконным менеджером для настройки сетевых параметров можно использовать средства графического интерфейса пользователя. В качестве примера можно назвать пакет NetworkManager «Транспортный и прикладной уровни модели сетевого взаимодействия.» , совместимый с таким графическими окружениями, как GNOME, KDE и XFCE ; интерфейс NetworkManager позволяет настраивать проводные и беспроводные (Wi-Fi, 3G, Bluetooth) соединения, подключения к виртуальным частным сетям (VPN) и ADSL -провайдерам. Средства графического интерфейса пользователя есть также в пакете Wicd [ 14 ] .
Для управления межсетевым экраном и средством манипулирования сетевыми пакетами (в том числе трансляция сетевых адресов — NAT) Netfilter стандартно используется утилита командной строки iptables [ 10 ] (см. «Межсетевое экранирование в Linux» и «Обеспечение доступа в сеть Интернет» ). Над Netfilter/iptables существуют различные надстройки (в том числе и GUI -средства), например, UFW/Gufw — простые утилиты настройки межсетевого экрана уровня узла (host-based), используемые в дистрибутиве Ubuntu [ 9 ] . Примерами программ для настройки межсетевого экрана также могут служить такие проекты как: Shorewall [ 9 ] , Firewall Builder [ 11 ] , Firestarter [ 12 ] и т. д.
В состав дистрибутивов Linux обычно также включаются разнообразные средства диагностики и мониторинга сети. Простейшими и общеупотребительными из них являются:
- Команда ping [ 13 ] . Простейшее средство проверки работоспособности удаленного узла.
- Команда traceroute . Позволяет отобразить все промежуточные узлы, которые проходят пакеты на пути к целевому узлу.
- Утилита tcpdump . Используется для перехвата и анализа сетевого трафика.
Ключевые термины
Гетерогенная сеть — информационная сеть , в которой работают различные протоколы, используются технологии и оборудование различных фирм-производителей.
Интерфейс — формализованные правила, в соответствии с которыми взаимодействуют модули, реализующие протоколы соседних уровней модели сетевого взаимодействия (набор сервисов, предоставляемых данным уровнем соседнему).
Протокол — формализованные правила, определяющие последовательность и формат сообщений, которыми обмениваются сетевые компоненты, лежащие на одном уровне модели сетевого взаимодействия в разных узлах.
IP (Internet Protocol) — маршрутизируемый протокол сетевого уровня без установления соединения.
Сокет — пара IP — адрес : порт , однозначно определяющая сетевой процесс; точка доступа прикладного процесса к сети.
Краткие итоги
- К решению задачи обеспечения сетевых взаимодействий применяют многоуровневый иерархический подход, заключающийся в разбиении процесса коммуникации на набор уровней с четко определенными способами взаимодействия уровней на одном узле и на соседних узлах.
- В данном пособии используется терминология модели стека протоколов TCP/IP, включающая следующие уровни: уровень сетевых интерфейсов , сетевой уровень , транспортный уровень и прикладной уровень .
- Для управления сетевой подсистемой Linux существует множество средств, наиболее известными из которых являются средства пакетов net-tools, iproute2, Netfilter/iptables, утилиты диагностики сетевых подключений ( ping, traceroute , tcpdump ), а также графические средства настройки сетевой подсистемы (например, NetworkManager ).