Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Что такое служба доменных имен в UNIX? Как она конфигурируется?



В предыдущих примерах использовался ключ -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.

Удалённый терминал

Презентация 5-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.

 

37

Межсетевой экран

Презентация 5-11: межсетевой экран iptables

В UNIX существует мощный механизм анализа сетевых и транспортных пакетов, позволяющий избавляться от нежелательной сетевой активности, манипулировать потоками данных и даже преобразовывать служебную информацию в них. Обычно такие средства носят название firewall («fire wall» – противопожарная стена, брандмауэр), общепринятый русский термин – межсетевой экран.

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

Концепции iptables

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

Между каждыми из этих действий системы помещается модуль межсетевого экрана, именуемый цепочкой. Цепочка обрабатывает пакет, исследуя, изменяя и даже, возможно, уничтожая его. Если пакет уцелел, она передает его дальше по конвейеру. В этой стройной схеме есть два исключения. Во-первых, ядро Linux дает доступ к исходящему пакету только после принятия решения о его маршрутизации, поэтому связка «взять – маршрутизировать» остается необработанной, а цепочка, обрабатывающая исходящие пакеты (она называется OUTPUT) вставляется после маршрутизации. Во-вторых, ограничения на «чужие» пакеты, исходящие не от нас и не для нас предназначенные, существенно отличаются от ограничений на пакеты «свои», поэтому после маршрутизации транзитные пакеты обрабатываются еще одной цепочкой (она называется FORWARD). Цепочка, обслуживающая связку «получить – маршрутизировать», называется PREROUTING, цепочка, обслуживающая связку «маршрутизировать – отдать» – INPUT, а цепочка, стоящая непосредственно перед отсылкой пакета – POSTROUTING (см. Рисунок 4.3, «Обработка пакета в iptables»).

Если пакет не имеет свойств, требуемых первым правилом, к нему применяется второе, если второе также не подходит – третье, и так вплоть до последнего, правила по умолчанию, которое применяется к любому пакету. Если свойства пакета удовлетворяют правилу, над ним совершается действие. Действие DROP уничтожает пакет, а действие ACCEPT немедленно выпускает его из таблицы, после чего пакет движется дальше по конвейеру. Некоторые действия, например LOG, никак не влияют на судьбу пакета, после их выполнения он остается в таблице: к нему применяется следующее правило, и т. д. до ACCEPT или DROP.

 

Рисунок 4.3. Обработка пакета в iptables

Одной из важных функций сетевого экрана является подмена адресов и модификация сетевых пакетов. NAT (Network Address Translation – подмена сетевых адресов) – это механизм, позволяющий организовать передачу пакетов между сетями, не имеющими сведений о сетевых адресах друг друга. Этот процесс, чем-то схожий с маршрутизацией, позволяет организовывать шлюзы локальных сетей в Internet, распределять внешние соединения на отдельные машины внутри сети и т.п.

Следует помнить, что чем больше транспортных соединений отслеживается межсетевым экранам, тем больше требуется оперативной памяти ядру Linux и тем медленнее работает процедура сопоставления проходящих пакетов таблице. Впрочем, мощность современных компьютеров позволяет без каких-либо затруднений обслуживать преобразование адресов для сети с пропускной способностью 100Мбит/с и даже выше.

Таким образом, администратору возможны несколько функций воздействия на пакеты: фильтрация, подмена адресов, изменение других параметров пакетов. Пример организации межсетевого экрана будет рассмотрен на практическом занятии.

 

38

Этапы загрузки системы

Презентация 11-01: этапы загрузки системы

Загрузку операционной системы можно разделить на несколько этапов.

Начальный этап загрузки не зависит от того, какая операционная система установлена на компьютере, он в первую очередь связан с особенностями архитектуры используемого компьютера.

Затем следуют этапы загрузчиков, которые также могут не относиться к определённым операционным системам, после чего инициализируется ядро операционной системы и производятся специфические только для этой ОС операции.

Рассмотрим загрузку операционной системы UNIX как следующую последовательность этапов (Рисунок 11.1, «Этапы загрузки ОС UNIX»):

досистемный загрузчик

Рис.11.1. Этапы загрузки ОС UNIX

Как правило, сразу после включения питания программа ПЗУ BIOS проводит тестирование оборудования, затем запускается досистемный загрузчик.

Задача этого этапа – определить (возможно, с помощью пользователя), с какого устройства будет идти загрузка, загрузить оттуда специальную программу-загрузчик и запустить её. Например, выяснить, что устройство для загрузки – жесткий диск, считать самый первый сектор этого диска и передать управление программе, которая находится в считанной области.

Загрузчик первого уровня

Загрузчик первого уровня занимает обычно не более одного сектора в самом начале диска – в его загрузочном секторе ( Master Boot Record ).

Ядро операционной системы имеет довольно сложную структуру – а значит, и непростой способ загрузки; оно может быть довольно большим, и может располагаться неизвестно где на диске, подчиняясь законам файловой системы (например, состоять из нескольких частей, разбросанных по диску). Учесть все это первичный загрузчик не в состоянии, поэтому его задача: определить, где на диске находится загрузчик второго уровня, загрузить его в память и передать ему управление.

Загрузчик второго уровня

Вторичный загрузчик – сложная программа с интерфейсом пользователя, который даёт возможность выбирать операционную систему или параметры загрузки ядра. Загрузчик должен иметь доступ к образу ядра, поэтому в него включается поддержка файловых систем.

В любом случае вторичный загрузчик читает образ ядра в определённый адрес памяти и передаёт туда управление.

Большинство операционных систем имеют собственные загрузчики первого и второго уровней. Однако, существуют универсальные загрузчики, например GRUB.

Инициализация ядра операционной системы

Как мы уже выяснили ранее, ядро – очень сложная программа, взаимодействующая с различным оборудованием, поэтому прежде чем начать работу с системой, её необходимо проинициализировать.

Этот этап специфичен для различных операционных систем. В UNIX-подобных системах при этом обычно выводится информация о загрузке ядра отладочного характера.

Первым делом ядро занимается определением параметров вычислительной подсистемы компьютера: выясняет тип и быстродействие центрального процессора, объем оперативной памяти, объем и структуру кэш-памяти; делает предположение об архитектуре компьютера в целом и многое другое.

На следующем шаге ядро определяет состав и архитектуру всего аппаратного наполнения компьютера: тип и параметры шин передачи данных и устройств управления ими (контроллеров), список внешних устройств, доступных по шинам, настройки этих устройств – диапазон портов ввода-вывода, адрес ПЗУ, занимаемое аппаратное прерывание, номер канала прямого доступа к памяти и т.п..

Ядро на основании переданного ему параметра выбирает корневой раздел – файловую систему, содержащую будущий каталог / и его подкаталоги (для системной начальной загрузки важны каталоги /etc, /bin, и /sbin). Корневой раздел монтируется в качестве /. После этого ядро запускает свой первый процесс – init (по умолчанию, /sbin/init).

Процесс init

С этого момента операционная система обеспечивает полноценную функциональность всем исполняющимся процессам. В UNIX первым запускаемым процессом является init, о котором будет сказано ниже.

 

39

Процесс init

Презентация 11-02: процесс init

Процесс init является обычным процессом операционной системы, однако он имеет некоторые особенности: его PID всегда равен 1, и процесс этот работает всё время, пока работает система.

В UNIX-системах init играет две важные роли:

· производит инициализацию системы – как правило, для работы запущенного ядра не достаточно, нужно примонтировать все файловые системы, загрузить дополнительные драйверы устройств, запустить демоны и т.п.;

· является родительскимдля всех процессов в системе – это является гарантией того, что в UNIX любой процесс имеет своего родителя.

Рисунок 11.2. Пример иерархии процессов в UNIX

 

Это обеспечивается тем, что в UNIX процессы создаются с помощью последовательного ответвления (системный вызов fork).

Как правило, процесс init запускается из исполняемого файла /sbin/init и является специфичным для различных UNIX-систем. Рассмотрим примеры различных современных версий UNIX и их классификацию с точки зрения инициализации системы.

[root@localhost root]# grep rc /etc/inittab

si:: sysinit: /etc/rc.d/rc.sysinit

l0: 0: wait: /etc/rc.d/rc 0

l1: 1: wait: /etc/rc.d/rc 1

l2: 2: wait: /etc/rc.d/rc 2

l3: 3: wait: /etc/rc.d/rc 3

l4: 4: wait: /etc/rc.d/rc 4

l5: 5: wait: /etc/rc.d/rc 5

l6: 6: wait: /etc/rc.d/rc 6

[root@localhost root]# grep initdefault /etc/inittab

id: 5: initdefault:

Пример 11.1. Стартовые сценарии в /etc/inittab (для Linux)

Метод " sysinit" в inittab означает, что процесс запускается во время начальной загрузки системы, до перехода на какой-нибудь уровень выполнения. Следовательно, первым запускается сценарий /etc/rc.d/rc.sysinit. Он настраивает аппаратуру дисковых массивов, проверяет и монтирует дисковые файловые системы, инициализирует область подкачки, межсетевой экран - словом, делает все, без чего дальнейшая полноценная загрузка системы невозможна. Далее из строчки с " initdefault" init узнает, что уровень выполнения по умолчанию - пятый (многопользовательский графический), и выполняет все строки из inittab, в поле уровни которых есть 5. В частности, запускается сценарий rc с параметром 5 (l5: 5: wait: /etc/rc.d/rc 5), который и выполняет необходимые действия из ".d" -каталога /etc/rc.d/rc5.d. Метод запуска rc - " wait", так что init ждет, пока не выполнятся все стартовые сценарии, а потом продолжает разбор inittab:

[root@localhost root]# ls /etc/rc.d/rc5.d/K10acpid S10network S30syslogd S37gpm S50xinetdK20nfs S13portmap S31klogd S40crond S54sshdK65apmd S15random S32hotplug S41anacron S56rawdevicesK86nfslock S25netfs S35keytable S44xfs S64powerS05kudzu S30sound S36update_wms S45dm S98splash

 

Пример 11.2. Профиль системы на уровне выполнения 5

Сценарий K20nfs (с параметром " stop" ) не выполнился: соответствующего сообщения на системной консоли не появилось. Беглый просмотр /etc/rc.d/init.d/nfs показывает, что этот сценарий предназначен для запуска и остановки сервера сетевой файловой системы (NFS). Сервер используется на уровне 3, а на уровне 5 - нет, поэтому при переходе с 3 на 5 его следует остановить. Поскольку во время начальной загрузки останавливать нечего, сценарий не выполнится.

Из служб, запускаемых именно на пятом уровне, примечателен шрифтовый сервер, под номером 44 (the X f ont s erver, xfs) - программа, у которой графическая подсистема получает шрифты (нередко по сети; тогда такой сервер может быть один на несколько рабочих станций), и экранный диспетчер, под номером 45 (the X d isplay m anager, xdm) - программа, регистрирующая пользователя на манер login, с той разницей, что регистрация и запуск графических приложений могут происходить по сети с удаленного компьютера.

Текстовая консоль на пятом уровне доступна: записи вида 1: 2345: respawn: /sbin/mingetty tty1 обычно включают 5 в поле уровни.

40. Для чего служит файл /etc/inittab?
После того, как система Linux загружается и ее ядро монтирует корневую файловую систему, она выполняет первую программу - init. Эта программа отвечает за запуск стартовых системных скриптов и за изменение состояния системы с загрузочного на обычное многопользовательское.

После запуска программа init уходит в фоновый режим (становится демоном), следя за режимом работы системы и по необходимости изменяя его. Программа init должна следить за множеством вещей; все ее функции определены в файле /etc/inittab.

Неправильное изменение файла /etc/inittab может привести к тому, что войти в систему станет невозможно. В операционных системах Unix/Linux с помощью init можно изменить уровень инициализации. Уровень инициализации — степень загрузки операционной системы

По умолчанию, в системе использовано 7 уровней инициализации:

· 0 — остановка системы

· 1 — загрузка в однопользовательском режиме

· 2 — загрузка в многопользовательском режиме без поддержки сети

· 3 — загрузка в многопользовательском режиме с поддержкой сети

· 4 — не используется

· 5 — загрузка в многопользовательском режиме с поддержкой сети и графического входа в систему

· 6 — перезагрузка

 

41.Что такое уровень выполнения системы? Какие уровни выполнения выделяют в UNIX-системах, наследующих System V?
Уровень выполнения
означает режим функционирования операционной системы компьютера, в которой реализована инициализация в стиле ОС UNIX System V.
UNIX System V — одна из версий операционной системы UNIX, разработанная в AT& T и выпущенная в 1983 г.

В Linux существует такое понятие как уровень выполнения (run level). Уровень выполнения обозначается числами от 0 до 6.

Система в определенный момент времени находится на соответствующем уровне выполнения. Вы, как администратор системы можете переводить её с одного уровня выполнения на другой. Это делается при помощи программы init (или telinit). Для этого программе в качестве аргумента передается число соответствующее уровню выполнения. Например, чтобы перевести систему на 3-й уровень выполнения, необходимо запустить init следующим образом:

Современная версия программы init может использовать десять уровней выполнения, но обычно используются только семь.

· 0 — выполняются действия по выключению системы.

· 1 — однопользовательский режим Предназначен для различных административных действий по восстановлению системы. По своему смыслу аналогичен безопасному режиму в Windows, но полностью его не повторяет. На этом уровне выполнения система полностью сконфигурирована, но не запущен ни один сервис, а из пользователей может работать только один root.

· 2 многопользовательский режим — пользователи могут работать на разных терминалах, вход в систему с процессом аутентификации;
3 многопользовательский сетевой режим — в многопользовательский режим, в котором осуществляется настройка сети и запускаются различные сетевые службы;
4 — В Linux используется для графического входа в систему.
5 запуск графической подсистемы — в дополнение к уровню 3 производится также старт графической подсистемы, регистрация в системе осуществляется также в графическом режиме;
6 — выполняются действия по перезагрузке системы.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-03; Просмотров: 625; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.065 с.)
Главная | Случайная страница | Обратная связь