Презентация 6-01: введение в сети
Сети стали неотъемлемой составляющей современных вычислительных систем. Технологии взаимодействия между информационными системами развиваются с 1970-х годов, не намного опередив развитие UNIX. Операционная система UNIX почти с самого рождения интегрировала в себя технологии организации локальных сетей, на её основе затем была построена сеть Internet, распространившаяся ныне по всему миру.
Организация взаимодействия между устройствами и программами в сети является сложной задачей. Сеть объединяет разное оборудование, различные операционные системы и программы — их успешное взаимодействие было бы невозможно без приянтия общепринятых правил, стандартов.
В области компьютерных сетей существует множество международных и промышленных стандартов, среди которых следует особенно выделить международный стандарт OSI и набор стандартов IETF (Internet Engineering Task Force).
Презентация 6-02: взаимодействие открытых систем
В модели OSI, называемой также моделью взаимодействия открытых систем (Open Systems Interconnection — OSI) и разработанной Международной Организацией по Стандартам (International Organization for Standardization — ISO), средства сетевого взаимодействия делятся на семь уровней, для которых определены стандартные названия и функции (см. Рисунок 2.33, «Уровни ISO OSI»).
Каждый уровень предоставляет интерфейс к вышележащему уровню, скрывая детали реализации. При построении транспортной подсистемы какого-либо приложения наибольший интерес представляют функции физического, канального и сетевого уровней, тесно связанные с используемым в данной сети оборудованием: сетевыми адаптерами, концентраторами, мостами, коммутаторами, маршрутизаторами. Функции прикладного и сеансового уровней, а также уровня представления реализуются операционными системами и системными приложениями конечных узлов. Транспортный уровень выступает посредником между этими двумя группами протоколов.
Находящиеся на разных узлах сети процессы при обмене информацией взаимодействуют только с самым верхним уровнем, но данные при продвижении по сети проходят сначала через все уровни — от самого верхнего к самому нижнему — на одном узле и затем в обратном порядке на другом узле.
Рассмотрим подробнее назначение каждого из уровней:
Физический уровень выполняет передачу битов по физическим каналам, таким как витая пара, оптоволоконный кабель или радиоволны. На этом уровне определяются характеристики физических сред передачи данных и параметров электромагнитных сигналов.
Канальный уровень обеспечивает передачу кадра данных между любыми узлами в сетях с типовой топологией либо между двумя соседними узлами в сетях с произвольной топологией, отвечает за установление соединения и корректность доставки данных по физическим каналам. В протоколах канального уровня заложена определенная структура связей между компьютерами и способы их адресации. Адреса, используемые на канальном уровне в локальных сетях, часто называют МАС-адресами (Media Access Control, управление доступом к среде). Часть канального уровня требует аппаратной реализации, в операционной системе он, как правило, представлен драйвером сетевой карты.
Сетевой уровень в первую очередь должен предоставлять средства для решения следующих задач:
Сетевой уровень позволяет передавать данные между любыми, произвольно связанными узлами сети (при этом не берёт на себя никаких обязательств по надежности передачи данных). Это достигается благодаря наличию адресации — каждый узел в сети имеет свой уникальный идентификатор.
Реализация протокола сетевого уровня подразумевает наличие в сети специального устройства — маршрутизатора. Маршрутизаторы объединяют отдельные сети в общую составную сеть. К каждому маршрутизатору могут быть присоединены несколько сетей (по меньшей мере две).
Транспортный уровень обеспечивает передачу данных между любыми узлами сети с требуемым уровнем надежности. Для этого на транспортном уровне имеются средства установления соединения, нумерации, буферизации и упорядочивания пакетов.
Сеансовый уровень предоставляет средства управления диалогом, позволяющие фиксировать, какая из взаимодействующих сторон является активной в настоящий момент, а также предоставляет средства синхронизации в рамках процедуры обмена сообщениями.
В отличие от нижележащих уровней, задача которых — надежная и эффективная передача битов от отправителя к получателю, уровень представления имеет дело с внешним представлением данных. На этом уровне могут выполняться различные виды преобразования данных, такие как компрессия и декомпрессия, шифровка и дешифровка данных.
Прикладной уровень — это в сущности набор разнообразных сетевых сервисов, предоставляемых конечным пользователям и приложениям. Примерами таких сервисов являются, например, электронная почта, передача файлов, подключение удаленных терминалов к компьютеру по сети.
Существует несколько групп взаимосвязанных протоколов (называемые также стеки протоколов[3]), которые частично или полностью соответствуют уровням эталонной модели OSI. Для нас наибольший интерес представляет стек протоколов TCP/IP.
Презентация 6-03: протоколы Internet: TCP/IP
Протоколы TCP/IP (Transmission Control Protocol / Internet Protocol) были разработаны по заказу Министерства обороны США 30 лет назад для организации связи в рамках экспериментальной сети ARPAnet и представляет собой набор общих протоколов для разнородной вычислительной среды. Большой вклад в развитие стека TCP/IP внёс университет Беркли, реализовав этот протокол для операционнной системы UNIX. Популярность UNIX и удачные идеи, заложенные в TCP/IP, привели к образованию и бурному развитию международной сети Internet. Все протоколы семейства TCP/IP и связанные с ними проходят стандартизацию в организации IETF через выпуск так называемых RFC-документов (Request For Comment).
Протоколы, входящие в TCP/IP, частично соответствуют модели OSI (см. Рисунок 2.34, «Соответствие стека TCP/IP модели OSI»). Стек TCP/IP поддерживает на нижнем уровне все популярные стандарты физического и канального уровней: для локальных сетей — Ethernet, Token Ring, FDDI, для глобальных — PPP, ISDN. Основными протоколами стека, давшими ему название, являются протоколы IP и TCP, относящиеся к сетевому и транспортному уровням соответственно. IP обеспечивает продвижение пакета по сети, TCP гарантирует надёжность его доставки.
За долгие годы использования стек TCP/IP пополнился множеством протоколов прикладного уровня: FTP, SMTP, HTTP и т. п.
Поскольку стек TCP/IP изначально создавался для глобальной сети, он имеет много особеностей, дающих ему преимущество перед другими протоколами, когда речь заходит о глобальных коммуникациях. Это возможность фрагментации пакетов, гибкая система адресации, простота широковещательных запросов. На сегодня TCP/IP — самый распространённый протокол вычислительных сетей.
Для UNIX-систем TCP/IP исторически являлся первым и остается основным сетевым протоколом. Рассмотрим, как в UNIX осуществляется администрирование сетевых соединений на основе TCP/IP.
Презентация 6-04: сетевой интерфейс в UNIX
Основной сетевой подсистемы UNIX является сетевой интерфейс. Сетевой интерфейс — это абстракция, связывающая канальный и сетевой (протокол TCP/IP) уровни сети в UNIX.
Сетевой интерфейс создается в момент загрузки драйвера
сетевого устройства (например, сетевой карты)
или создания логического соединения (например, в случае PPP).
Каждый сетевой интерфейс в системе имеет уникальное имя, состоящее
из типа устройства и номера (0 или
больше для однотипных устройств). Под типами устройств в различных UNIX-системах
может пониматься вид протокола канального уровня
(Ethenet — eth
) или название драйвера устройства
(Realtek — rl
).
Интерфейс имеет набор параметров, большая часть которых относятся к сетевому уровню (IP-адрес, маска сети и т. п.). Важным параметром сетевого интерфейса является аппаратный адрес (в случае Ethernet аппаратный адрес называется MAC-адрес и состоит из шести байтов, которые принято записывать в шестнадцатеричной системе счисления и разделять двоеточиями).
Основной утилитой для просмотра и управления параметрами сетевых интерфейсов в UNIX служит ifconfig. В настоящее время в ряде систем наряду с ней используется более современная утилита ip, с отличающимся синтаксисом параметров командной строки. Далее в приводимых примерах мы будем использовать в первую очередь традиционную и на сегодняшний день более распространённую утилиту inconfig
Утилита ifconfig, вызванная в командной строке без параметров, выводит сведения обо всех настроенных в данный момент сетевых интерфейсах. Чтобы просмотреть информацию о конкретном интерфейсе, необходимо указать его имя в качестве параметра ifconfig:
Пример 2.5. Просмотр параметров сетевых интерфейсов (ifconfig)
desktop ~ # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0D:60:8D:42:AA inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6160 errors:0 dropped:0 overruns:0 frame:0 TX packets:5327 errors:0 dropped:0 overruns:0 carrier:0 collisions:1006 txqueuelen:1000 RX bytes:3500059 (3.3 Mb) TX bytes:2901625 (2.7 Mb) Base address:0x8000 Memory:c0220000-c0240000 desktop ~ # ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:188 errors:0 dropped:0 overruns:0 frame:0 TX packets:188 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:14636 (14.2 Kb) TX bytes:14636 (14.2 Kb)
Обычно выполнение ifconfig требует прав суперпользователя или ращрешается пользователям, входящим в специальную «административную» группу (например, netadmin). Настройка сетевых параметров, связанных с интерфейсом, выполняется с помощью той же утилиты ifconfig, о чем будет сказано далее.
Для диагностики трафика на канальном уровне применяется специальные программы. Самыми распространёнными в UNIX являются tcpdump и ethereal. При «прослушивании» канала, эти программы взаимодействуют с заданным сетевым интерфейсом.
Презентация 6-05: сетевой адрес
В IP-сетях каждому сетевому интерфейсу присваивается некоторый единственный на всю глобальную сеть адрес, который не зависит от среды передачи данных и всегда имеет один и тот же формат.
Адрес, определяемый протоколом IP, состоит из четырех байтов, записываемых традиционно в десятичной системе счисления и разделяемых точкой. Адрес сетевого интерфейса eth0 из приведенного выше примера — 192.168.1.5.
Второй сетевой интерфейс из примера — lo — так называемая заглушка (loopback), которая используется для организации сетевых взаимодействий компьютера с самим собой: любой посланный в заглушку пакет немедленно обрабатывается как принятый оттуда. Заглушке обычно назначается адрес 127.0.0.1.
Для того чтобы назначить интерфейсу IP-адрес, достаточно выполнить ifconfig, указав после имени интерфейса IP-адрес:
desktop ~ # ifconfig eth0 192.168.1.1
Презентация 6-06: маршрутизация
Как было сказано выше, IP-адрес включает две части: адрес подсети и адрес конкретного узла в рамкох этой подсети. Маска подсети показывает, сколько бит в IP-адресе содержат адрес подсети (остальные — это адрес узла). Таким образом, располагая IP-адресом узла назначения и маской подсети всегда позволяет определить, относится ли узел назначения к той же подсети. В этом случае пакеты к ним будет доставляться напрямую через канальный уровень.
Более сложный вопрос встает, если IP-адрес узла-адресата не входит в
локальную сеть узла-отправителя. Ведь и в этом случае пакет необходимо
отослать какому-то абоненту локальной сети, с тем, чтобы тот перенаправил его
дальше. Этот абонент, маршрутизатор, подключен к нескольким
сетям, и ему вменяется в обязанность пересылать пакеты между ними по
определенным правилам. В самом простом случае таких сетей
две: «внутренняя», к которой подключены компьютеры,
и «внешняя», соединяющая маршрутизатор со всей глобальной
сетью. Таблицу, управляющую маршрутизацией пакетов, можно просмотреть с помощью
утилиты netstat -r или route (обе утилиты имеют
ключ -n
, заставляющий их использовать в
выдаче IP-адреса, а не имена компьютеров):
Пример 2.6. Вывод таблицы маршрутизации (route)
desktop ~ # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 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 0 0 0 eth0
Компьютер или аппаратное устройство, осуществляющее маршрутизацию между локальной сетью и Internet обычно называется шлюзом.
Для изменения таблицы маршрутизации используется та же утилита route. Утилита ip объединяет возможности как по настройке сетевых интерфейсов, так и таблицы маршрутизации.
Презентация 6-07: протокол ICMP
Есть такие протоколы уровня IP, действие которых этим уровнем и ограничивается. Например, служебный протокол ICMP (Internet Control Message Protocol), предназначенный для передачи служебных сообщений.
Примером применения ICMP является утилита ping, которая позволяет проверить работоспособность узлов в сети. Другое применение ICMP — сообщать отправителю, почему его пакет невозможно доставить адресату, или передавать информацию об изменении маршрута, о возможности фрагментации и т. п.
Ещё одна задача, которую можно решить использованием протокола ICMP, является определение маршрута следования пакета. В UNIX существует ряд альтернативных команд для определения приблизительного маршрута прохождения пакета по сети: traceroute, tracepath и т. п.
Пример 2.7. Пример выполнения команды traceroute
desktop ~ # traceroute ya.ru traceroute to ya.ru (213.180.204.8), 64 hops max, 40 byte packets 1 195.91.230.65 (195.91.230.65) 0.890 ms 1.907 ms 0.809 ms 2 cs7206.rinet.ru (195.54.192.28) 0.895 ms 0.769 ms 0.605 ms 3 ix2-m9.yandex.net (193.232.244.93) 1.855 ms 1.519 ms 2.95 ms 4 c3-vlan4.yandex.net (213.180.210.146) 3.412 ms 2.698 ms 2.654 ms 5 ya.ru (213.180.204.8) 2.336 ms 2.612 ms 3.482 ms
Утилита traceroute показывает список абонентов, через которых проходит пакет по пути к адресату, и затраченное на это время. Однако список этот приблизительный. Строго говоря, неизвестно, каким маршрутом шла очередная группа пакетов, потому что с тех пор, как была отправлена предыдущая группа, какой-нибудь из промежуточных маршрутизаторов мог изменить решение и отправить новые пакеты другим путем.
Презентация 6-08: сетевые соединения
Транспортных протоколов в TCP/IP два — это TCP (Transmission Control Protocol, протокол управления соединением) и UDP (User Datagram Protocol). UDP устроен просто. Пользовательские данные помещаются в единственный транспортный пакет-датаграмму, которой приписываются обычные для транспортного уровня данные: адреса и порты отправителя и получателя, после чего пакет уходит в сеть искать адресата. Проверять, был ли адресат способен этот пакет принять, дошел ли пакет до него и не испортился ли по дороге, предоставляется следующему — прикладному — уровню.
Другое дело — TCP. Этот протокол очень заботится о том, чтобы передаваемые данные дошли до адресата в целости и сохранности. Для этого предпринимаются следующие действия:
Для просмотра всех существующих в настоящий момент сетевых соединений можно воспользоваться командой netstat:
Пример 2.8. Пример выполнения команды netstat
desktop ~ # netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:32769 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:32770 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.11.5:34949 83.149.196.70:5223 ESTABLISHED tcp 0 0 192.168.11.5:39833 213.248.55.180:5223 ESTABLISHED tcp 0 0 192.168.11.5:59577 192.168.11.1:22 TIME_WAIT udp 0 0 0.0.0.0:32768 0.0.0.0:* udp 0 0 0.0.0.0:32769 0.0.0.0:* udp 0 0 0.0.0.0:111 0.0.0.0:*
Согласно стандартам Internet для большинства протоколов прикладного уровня существуют стандартные порты, на которых соответствующие приложения должны принимать соединения. Например, веб-сервер, выполняющий обработку соединений по протоколу HTTP, должен работать на порту с номером 80.
В UNIX существует прозрачный механизм именования протоколов прикладного уровня.
В файле /etc/services
можно увидеть список соответствия
имён протоколов номерам портов. Этот файл используется базовой системной
библиотекой сетевого взаимодействия, так что во всех утилитах вместо номера
порта можно указывать имя соответвтвующего протокола.
Для того чтобы каждый раз при загрузке не задавать параметры сетевым интерфейсам, существует возможность задать настройки сети в конфигурационных файлах операционной системы. В этом случае при старте системы будет произведена процедура настройки интерфейсов, заполнена таблица маршрутизации и т. п. Подобные конфигурационные файлы, сохраняющие настройки сети между сеансами работы, а также средства управления ими не стандартизированы и зачастую различаются в разных версиях UNIX. Конкретные примеры будут рассмотрены на практическом занятии.
Презентация 6-09: служба доменных имён
В предыдущих примерах использовался
ключ -n
многих сетевых утилит, чтобы
избежать путаницы между IP-адресами и доменными именами компьютеров. С другой
стороны, доменные имена — несколько слов (часто осмысленных), —
запоминать гораздо удобнее, чем адреса (четыре числа).
Когда-то имена всех компьютеров в сети, соответствующие IP-адресам, хранились
в файле /etc/hosts
. Пока абоненты Internet были
наперечет, поддерживать правильность его содержимого не составляло труда. Как
только сеть начала расширяться, неувязок стало больше. Трудность была не
только в том, что содержимое hosts быстро менялось, но и в том, что за
соответствие имен адресам в различных сетях отвечали разные люди и разные
организации. Появилась необходимость структурировать глобальную сеть не только
топологически (с помощью IP и сетевых масок), но и административно, с
указанием, за какие группы адресов кто отвечает.
Проще всего было структурировать сами имена компьютеров. Вся сеть была поделена на домены — зоны ответственности отдельных государств («us», «uk», «ru», «it» и т. п.) или независимые зоны ответственности («com», «org», «net», «edu» и т. п.). Для каждого из таких доменов первого уровня должно присутствовать подразделение, выдающее всем абонентам имена, заканчивающиеся на «.домен» Подразделение обязано организовать и поддерживать службу, заменяющую файл hosts: любой желающий имеет право узнать, какой IP-адрес соответствует имени компьютера в этом домене или какому доменному имени соответствует определенный IP-адрес.
Такая служба называется DNS (Domain Name Service, служба доменных имен). Она имеет иерархическую структуру. Если за какую-то группу абонентов домена отвечают не хозяева домена, а кто-то другой, ему выделяется поддомен (или домен второго уровня), и он сам распоряжается именами вида «имя_компьютера.поддомен.домен». Таким образом, получается нечто вроде распределенной сетевой базы данных, хранящей короткие записи о соответствии доменных имен IP-адресам.
В самом простом случае для того, чтобы сказать системе, какой сервер доменных
имён использовать, необходимо изменить
файл /etc/resolv.conf
. В более сложных системах можно
установить и настроить собственный сервер доменных имён.
Для проверки работы системы DNS используются утилиты dig и host.
Презентация 6-10: удалённый терминал
Концепция терминала, описанная в главе «Терминал», может быть расширена с учетом подключения к локальной и глобальной сети. Действительно, было бы удобно получить доступ к удалённой машине и работать с ней как за обычными монитором и клавиатурой. Отпадает необходимость иметь аппаратный терминал к каждому компьютеру, можно получить терминал на одном компьютере, затем получить доступ к удаленному терминалу по сети на любой другой компьютер. В современных условиях повсеместного распространения сети Internet удалённые терминалы становятся основным рабочим инструментом администратора системы.
В сетях TCP/IP существует несколько приложений, предоставляющих доступ к системе посредством удаленного терминала. Рассмотрим два из них: telnet и ssh. Оба построены по единому клиент-серверному принципу.
Telnet — стандартное приложение, которое присутствует практически в каждой реализации TCP/IP. Оно может быть использовано для связи между узлами, работающими под управлением различных операционных систем. Telnet использует согласование настроек клиента и сервера, чтобы определить характеристики системы с той и с другой стороны.
Клиент telnet взаимодействует и с пользователем, находящимся за терминалом, и с протоколами TCP/IP. Обычно все, что пользователь вводит с клавиатуры, отправляется по TCP-соединению, а все, что приходит по соединению, выводится на терминал.
Сервер telnet обычно взаимодействует с так называемыми псевдотерминальными устройствами в UNIX системах. Это делает его похожим на командный интерпритатор (shell), который запускается на сервере, или на любую программу, которая запускается из командной оболочки, так как они аналогичным образом взаимодействуют с терминальными устройствами.
Клиент telnet имеет еще одно полезное применение. С его помощью можно тестировать стандартные сетевые протоколы — если в качестве порта назначения указать порт соответствующего приложения. Telnet пересылает текстовые строки, разделённые знаками переноса строки, что делает его совместимым со многими протоколами Internel (SMTP, HTTP и т. п.).
Программа telnet обладает значительным недостатком — вся передаваемая информация (в том числе аутентификация пользователей) пересылается открытым текстом. В современных условиях глобальной сети это уже небезопасно. Эту проблемы решает программа ssh, которая предоставляет функциональность, аналогичную telnet, но при этом устанавливает защищённое соединение, в котором все передаваемые данные зашифрованы.
В настоящее время для удалённого администрирования серверов в Internet повсеместно применяется ssh.
Прокси-сервер — специальная служба, расположенная между локальной сетью и Internet, которая обеспечивает доступ в Internet по протоколам прикладного уровня (HTTP, FTP и т. п.) для всех узлов локальной сети. Такой сервер может поддерживать аутентификацию пользователей, учёт и фильтрацию трафика.
Недостатком такой схемы является то, что клиент в локальной сети должен явным образом устанавливать соединение с прокси-сервером для запроса к удаленному узлу в Internet.
Презентация 6-11: межсетевой экран iptables
В UNIX существует мощный механизм анализа сетевых и транспортных пакетов, позволяющий избавляться от нежелательной сетевой активности, манипулировать потоками данных и даже преобразовывать служебную информацию в них. Обычно такие средства носят название firewall («fire wall» — противопожарная стена, брандмауэр), общепринятый русский термин — межсетевой экран.
В различных версиях UNIX функциональность и управление межсетевым экраном может значительно различаться. В данном курсе будет рассматриваться приложение iptables, которое используется для организации межсетевого экрана в Linux.
Суть iptables в следующем. Обработка сетевого пакета системой представляется как его конвейерная обработка. Пакет нужно получить из сетевого интерфейса или от системного процесса, затем следует выяснить предполагаемый маршрут этого пакета, после чего отослать его через сетевой интерфейс либо отдать какому-нибудь процессу, если пакет предназначался нашему компьютеру. Налицо три конвейера обработки пакетов: «получить — маршрутизировать — отослать» (действие маршрутизатора), «получить — маршрутизировать — отдать» (действие при получении пакета процессом) и «взять — маршрутизировать — отослать» (действие при отсылке пакета процессом).
Между каждыми из этих действий системы помещается модуль межсетевого экрана, именуемый цепочкой. Цепочка обрабатывает пакет, исследуя, изменяя и даже, возможно, уничтожая его. Если пакет уцелел, она передает его дальше по конвейеру. В этой стройной схеме есть два исключения. Во-первых, ядро Linux дает доступ к исходящему пакету только после принятия решения о его маршрутизации, поэтому связка «взять — маршрутизировать» остается необработанной, а цепочка, обрабатывающая исходящие пакеты (она называется OUTPUT) вставляется после маршрутизации. Во-вторых, ограничения на «чужие» пакеты, исходящие не от нас и не для нас предназначенные, существенно отличаются от ограничений на пакеты «свои», поэтому после маршрутизации транзитные пакеты обрабатываются еще одной цепочкой (она называется FORWARD). Цепочка, обслуживающая связку «получить — маршрутизировать», называется PREROUTING, цепочка, обслуживающая связку «маршрутизировать — отдать» — INPUT, а цепочка, стоящая непосредственно перед отсылкой пакета — POSTROUTING (см. Рисунок 2.35, «Обработка пакета в iptables»).
Каждая цепочка представляет собой список правил, последовательно применяемых к анализируемому пакету. Каждое правило описывает некоторый набор свойств пакета и указывает действие, которое нужно произвести над пакетом с такими свойствами. Если пакет не имеет свойств, задаваемых первым правилом, к нему применяется второе, если второе также не подходит — третье, и так вплоть до последнего, правила по умолчанию, которое применяется к любому пакету. Если свойства пакета удовлетворяют правилу, над ним совершается указанное в правиле действие. Действие DROP уничтожает пакет, а действие ACCEPT немедленно выпускает его из таблицы, после чего пакет движется дальше по конвейеру. Некоторые действия, например LOG, никак не влияют на судьбу пакета, после их выполнения он остается в таблице: к нему применяется следующее правило, и т. д. до ACCEPT или DROP.
Одной из важных функций сетевого экрана является подмена адресов и модификация сетевых пакетов. NAT (Network Address Translation — подмена сетевых адресов) — это механизм, позволяющий организовать передачу пакетов между сетями, не имеющими сведений о сетевых адресах друг друга. Этот процесс, чем-то схожий с маршрутизацией, позволяет организовывать шлюзы локальных сетей в Internet, распределять внешние соединения на отдельные машины внутри сети и т. п.
Следует помнить, что чем больше транспортных соединений отслеживается межсетевым экраном, тем больше требуется оперативной памяти ядру Linux и тем медленнее работает процедура сопоставления проходящих пакетов таблице. Впрочем, мощность современных компьютеров позволяет без каких-либо затруднений обслуживать преобразование адресов для сети с пропускной способностью 100Мбит/с и даже выше.
Таким образом, администратору доступны несколько различных средст воздействия на прозодящие в системе сетевые пакеты и установленные сетевые соединения: фильтрация, подмена адресов, изменение различных параметров пакетов. Пример организации межсетевого экрана будет рассмотрен на практическом занятии.
Сеть состоит из различных аппаратно-программных узлов, для объединения которых используются стандартные протоколы. Эталонной моделью взаимодействия таких систем является семиуровневая модель OSI.
Протокол TCP/IP частично реализует уровни OSI. Основные протоколы IP (сетевого уровня) и TCP (транспортного уровня) позволили объединить разрозненные локальные сети в глобальную сеть Internet.
В UNIX основной сетевого взаимодействия является интерфейс, который находится между канальным и сетевым уровнем. Конфигурация TCP/IP включает в себя настройку интерфейса, маршрутизации и сервисов Internet, в первую очередь сервера доменных имен.
Для удаленного управления компьютерами используется программа telnet и её современных защищённый аналог — ssh.
Важным элементом сетевой инфраструктуры является межсетевой экран, который позволяет ограничить сетевой трафик и изменить его свойства. На лекции был рассмотрен межсетевой экран Linux — iptables.
Ключевые термины: OSI, физический уровень, канальный уровень, МАС-адрес, сетевой уровень, маршрутизатор, транспортный уровень, сеансовый уровень, уровень представления, прикладной уровень, сетевой интерфейс, IP-адрес, шлюз, служба доменных имен, удалённый терминал, прокси-сервер, межсетевой экран, цепочка, NAT
[3] Слово «стек» отсылает в данном случае к многоуровневой организации группы протоколов, логически взаимосвязанных как лежащие друг над другом «слои».