20 нояб. 2000 г.

Ввведение в программирование на Python (для детей) урок 1


Основы программирования на Python

Программа элективного курса

Поверхностное представление о языках программирования и их историческом развитии, способах трансляции программного кода. Типы данных (целые числа, числа с плавающей точкой, строки) и структуры данных (строки, списки, словари), переменные, выражения, ветвления (if, if-else, if-elif-else) и циклы (while, for). Ввод и вывод данных. Понятие о функции, локальных и глобальных переменных.

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

Разнообразия языков программирования

На сегодняшний день существует огромное множество различающихся и похожих между собой языков программирования. Причина такого явления становится понятна, если представить то количество и разнообразие задач, которые на сегодняшний день решается с помощью вычислительной техники. Для решения разных задач требуются разные инструменты (т.е. языки программирования).
Многие программисты старались в прошлом и стараются сейчас придумать свой язык программирования, обладающий теми или иными преимуществами. Хотя подавляющее большинство программистов в настоящее время тратят огромное количество времени на изучение уже существующего арсенала инструментов.
Все существующее многообразие языков можно условно классифицировать по разным критериям. Например, по типу решаемых задач (языки системного или прикладного назначения, языки для web-разработки и др.).

Трансляция

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

История

Язык программирования Python был создан примерно в 1991 году голландцем Гвидо ван Россумом.
Свое имя - Пайтон (или Питон) - получил от названия телесериала, а не пресмыкающегося.
После того, как Россум разработал язык, он выложил его в Интернет, где уже целое сообщество программистов присоединилось к его улучшению.
Python активно совершенствуется и в настоящее время. Часто выходят его новые версии. Официальный сайт http://python.org.

Особенности

Python – это интерпретируемый язык программирования: исходный код частями преобразуется в машинный в процессе выполнения специальной программой — интерпретатором.
Python характеризуется ясным синтаксисом. Читать код на этом языке программирования достаточно легко, т.к. в нем мало вспомогательных элементов, а правила языка заставляют программистов делать отступы. Понятно, что хорошо оформленный текст с малым количеством отвлекающих элементов читать и понимать легче.
Python – это полноценный, можно сказать универсальный, язык программирования. Он поддерживает объектно-ориентированное программирование (на самом деле он и разрабатывался как объектно-ориентированный язык).
Также Python распространяется свободно на основании лицензии подобной GNU General Public License.

Дзэн Питона

Если интерпретатору Питона дать команду import this (импортировать "сам объект"), то выведется так называемый "Дзен Питона", иллюстрирующий идеологию и особенности данного языка. Глубокое понимание этого дзена приходит тем, кто сможет освоить язык Python в полной мере и приобретет опыт практического программирования.
  1. Beautiful is better than ugly. Красивое лучше уродливого.
  2. Explicit is better than implicit. Явное лучше неявного.
  3. Simple is better than complex. Простое лучше сложного.
  4. Complex is better than complicated. Сложное лучше усложнённого.
  5. Flat is better than nested. Плоское лучше вложенного.
  6. Sparse is better than dense. Разреженное лучше плотного.
  7. Readability counts. Удобочитаемость важна.
  8. Special cases aren't special enough to break the rules. Частные случаи не настолько существенны, чтобы нарушать правила.
  9. Although practicality beats purity. Однако практичность важнее чистоты.
  10. Errors should never pass silently. Ошибки никогда не должны замалчиваться.
  11. Unless explicitly silenced. За исключением замалчивания, которое задано явно.
  12. In the face of ambiguity, refuse the temptation to guess. В случае неоднозначности сопротивляйтесь искушению угадать.
  13. There should be one — and preferably only one — obvious way to do it. Должен существовать один — и, желательно, только один — очевидный способ сделать это.
  14. Although that way may not be obvious at first unless you're Dutch. Хотя он может быть с первого взгляда не очевиден, если ты не голландец.
  15. Now is better than never. Сейчас лучше, чем никогда.
  16. Although never is often better than *right* now. Однако, никогда чаще лучше, чем прямо сейчас.
  17. If the implementation is hard to explain, it's a bad idea. Если реализацию сложно объяснить — это плохая идея.
  18. If the implementation is easy to explain, it may be a good idea. Если реализацию легко объяснить — это может быть хорошая идея.
  19. Namespaces are one honking great idea — let's do more of those! Пространства имён — прекрасная идея, давайте делать их больше!

Как писать программы

Интерактивный режим

В основном интерпретатор выполняет команды построчно: пишешь строку, нажимаешь Enter, интерпретатор выполняет ее, наблюдаешь результат.
Это очень удобно, когда человек только изучает программирование или тестирует какую-нибудь небольшую часть кода. Ведь если работать на компилируемом языке, то пришлось бы сначала написать код на исходном языке программирования, затем скомпилировать и уж потом запустить исполняемый файл на выполнение.
Работать в интерактивном режиме в ОС Linux можно в консоли. Для этого следует выполнить команду python. Запустится интерпретатор, где сначала выведется информация об интерпретаторе. Далее, последует приглашение к вводу (>>>).
Запустите интерпретатор Питона.
Поскольку никаких команд мы пока не знаем, то будем использовать Питон как калькулятор (возможности языка это позволяют).

2 + 5
3 * (5 - 8)
2.4 + 3.0 / 2
и т.д.

Наберите подобные примеры в интерактивном режиме (в конце каждого нажимайте Enter). Ответ выдается сразу после нажатия Enter (завершения ввода команды).
Бывает, что в процессе ввода была допущена ошибка или требуется повторить ранее используемую команду. Чтобы не писать строку сначала, в консоли можно прокручивать список команд, используя для этого стрелки на клавиатуре.
Другой вариант работы в интерактивном режиме — это работа в среде разработки IDLE, у которой есть интерактивный режим работы. В отличие от консольного варианта здесь можно наблюдать подсветку синтаксиса (в зависимости от значения синтаксической единицы она выделяется определенным цветом). Прокручивать список ранее введенных команд можно с помощью комбинаций Alt+N, Alt+P.
Запустите IDLE. Попробуйте решать математические примеры здесь.

Создание скриптов

Несмотря на удобства интерактивного режима работы при написании программ на Питоне, обычно требуется сохранять исходный программный код для последующего использования. В таком случае подготавливаются файлы, которые передаются затем интерпретатору на исполнение. По отношению к интерпретируемым языкам программирования часто исходный код называют скриптом. Файлы с кодом на Python обычно имеют расширение py.
Подготовить скрипты можно в той же среде IDLE. Для этого, после запуска программы в меню следует выбрать команду File → New Window (Crtl + N), откроется новое окно. Затем желательно сразу сохранить файл (не забываем про расширение py). После того как код будет подготовлен, снова сохраните файл (чтобы обновить сохранение). Ну и наконец, можно запустить скрипт, выполнив команду меню Run → Run Module (F5). После этого в первом окне появится результат выполнения кода. (Примечание: если набирать код, не сохранив файл в начале, то подсветка синтаксиса будет отсутствовать.)
Подготовьте скрипт (с примерами). Запустите его на выполнение.
На самом деле скрипты можно готовить в любом текстовом редакторе (желательно, чтобы он поддерживал подсветку синтаксиса языка Python). Кроме того, существуют специальные программы для разработки.
Запускать подготовленные файлы можно не только в IDLE, но и в консоли с помощью команды python адрес/имя_файла.
В консоли передайте интерпретатору Питона на выполнение подготовленный файл.
Кроме того, существует возможность настроить выполнение скриптов с помощью двойного клика по файлу (в Windows данная возможность присутствует изначально).



 

 

Азы linux (для детей) урок 47

Таблица B.1. Обзор команд DOS/Linux
Команды DOS Команды Linux
command /? man command или command --help
cd cd
chdir pwd
cls clear
copy cp
date date
del rm
dir ls
echo echo
edit vim (или другой редактор)
exit exit
fc diff
find grep
format mke2fs или mformat
mem free
mkdir mkdir
more more или less
move mv
ren mv
time date


Особенности Shell

Следующие функции являются стандартными для каждой оболочки. Обратите внимание, что команды stop, suspend, jobs, bg и fg доступны только в системах, которые поддерживают соответствующее управление.
Таблица C.1. Базовые функции shell
Команда Значение
> Перенаправление вывода
>> Добавление в файл
< Перенаправление ввода
<< "Здесь" документ (перенаправление ввода)


| Канальный вывод
& Запустить процесс в фоновом режиме
; Разделение команд
* Соответствует любому(ым) символу(ам) в имени файла
? Соответствует одному символу в имени файла
[ ] Соответствует любому символу, заключенному в скобки
( ) Выполнить в дочерней оболочке
` ` Заменить вывод заключенной в кавычки командой
" " Частичное цитирование (допустимы переменные и командные расширения)
' ' Полное цитирование (нет расширений)
\ Цитировать следующий символ
$var Использовать значение переменной
$$ id процесса
$0 Имя команды
$n n-ый аргумент (n от 0 до 9)
$* Все аргументы как простое слово
# Начать комментарий
bg Фоновое исполнение
break Прервать цикл
cd Изменить директорию
continue Прервать очередной цикл программы
echo Отобразить вывод
eval Оценить аргументы
exec Выполнить новую оболочку
fg Выполнить на переднем плане
jobs Показать активные задания
kill Прервать запущенные задания
newgrp Изменения в новой группе
shift Сдвиг позиционных параметров
stop Приостановить фоновое задание
suspend Приостановить задание
time Время команды
umask Установить или посмотреть разрешения на файлы
unset Удалить переменную или определения функций
wait Ожидать пока выполняется фоновое задание

 

Азы linux (для детей) урок 46

Таблица 11.1. Новые команды в главе 11, связанные с аудио
Команда Значение
alsaconf Конфигурация звуковой системы ALSA
alsamixer Настройка выходных уровней драйвера ALSA
arecord Запись образцов звука
aumix Инструменты аудио-миксера
cdp Проигрывание аудио-CD
cdparanoia Копирование компакт-дисков
cdplay Проигрывание аудио-CD
gnome-alsamixer Интерфейс ALSA для Gnome
gnome-cd Интерфейс для проигрывания аудио-CD в Gnome
gnome-sound-recorder Интерфейс для записи образцов звука в Gnome
kaudiocreator Интерфейс KDE для создания аудио-CD
kmix Интерфейс KDE для звуковых настроек
krec Интерфейс для записи образцов звука в KDE
mplayer Проигрыватель мультимедиа
play Инструмент командной строки для проигрывания образцов звука


Азы linux (для детей) урок 45

Звук и видео

Драйверы и архитектуры

Существуют два основных типа звуковой архитектуры: более древняя Open Sound System или OSS, которая работает в каждой UNIX-подобной системе, а также новая Advanced Sound Linux Architecture или ALSA, которая имеет лучшую поддержку для Linux, как следует из названия. ALSA также имеет больше функций и позволяет ускорить разработку драйверов. Мы сосредоточимся здесь на системе ALSA.
Сегодня поддерживаются почти все основные аудио-чипсеты. Лишь некоторые производители высоко профессиональных решений и обычных карт отказываются документировать свои спецификации чипсета, и они не поддерживаются.
Настройка системы, установленной с ALSA, осуществляется с помощью инструмента alsaconf. Кроме того, дистрибутивы обычно предоставляют свои собственные инструменты для настройки звуковой карты; эти инструменты могут даже включать старый и новый способ настройки звуковых устройств.

Проигрывание и копирование CD

Пакет cdp поставляется с большинством дистрибутивов и предоставляет программу cdp или cdplay, текстовый проигрыватель компакт-дисков. Десктопные менеджеры обычно включают в себя графический инструмент, например, проигрыватель gnome-cd в Gnome, который может быть запущен из меню.
Надо понимать, что есть разница между аудио-дисками и CD с данными. Вам не надо монтировать аудио-CD к файловой системе, чтобы послушать его. Это связано с тем, что данные на таких CD не являются данными файловой системы Linux; они сразу доступны и отправляются в канал аудио выхода проигрывателем компакт-дисков. Если же ваш CD является диском с данными, который содержит файлы .mp3, вам придется сначала примонтировать его к файловой системе и только потом слушать музыку с помощью одной из программ, которые мы перечислим ниже.
Утилита cdparanoia из одноименного пакета читает аудио непосредственно в виде данных с компакт-диска без аналогового преобразования и записывает их в файл или канал в различных форматах, в том числе .wav, как, вероятно, самый популярный. Различные инструменты для конвертирования в другие форматы, например, .mp3, поставляются с большинством дистрибутивов или загружаются как отдельные пакеты. Проект GNU предоставляет несколько проигрывателей CD, программ для копирования, кодирования и управления звуком.
Очень легко создавать аудио-CD с помощью kaudiocreator, входящего в состав пакета KDE. Информация о нем есть в справочном центре KDE.

Проигрывание музыкальных файлов

Файлы mp3

Популярный формат .mp3 поддерживается Linux. Большинство дистрибутивов включают несколько программ, которые могут воспроизводить такие файлы. Например, XMMS, который представлен на скриншоте ниже, является одним из наиболее распространенных, отчасти потому, что он похож на проигрыватель Windows.
Рисунок 11.1. mp3-проигрыватель XMMS
mp3-проигрыватель XMMS в Linux
Также очень популярны для воспроизведения музыки AmaroK — приложение KDE, которое постепенно набирает популярность, и MPlayer, который также может воспроизводить фильмы.
Ограничения
Некоторые дистрибутивы не позволяют воспроизводить MP3 без изменения конфигурации, это из-за лицензионных ограничений на MP3-инструменты. Возможно, потребуется установить дополнительное программное обеспечение для проигрывания музыки.
В текстовом режиме вы можете использовать команду mplayer:
[tille@octarine ~]$ mplayer /opt/mp3/oriental/*.mp3
MPlayer 1.0pre7-RPM-3.4.2 (C) 2000-2005 MPlayer Team
CPU: Advanced Micro Devices Duron Spitfire (Family: 6, Stepping: 1)
Detected cache-line size is 64 bytes
CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
Playing /opt/oldopt/mp3/oriental/Mazika_Diana-Krozon_Super-Star_Ensani-Ma-
Bansak.mp3.
Cache fill:  1.17% (98304 bytes)    Audio file detected.
Clip info:
Title: Ensani-Ma-Bansak.mp3
Artist: Diana-Krozon
Album: Super-Star
Year:
Comment:
Genre: Unknown
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
mpg123: Can't rewind stream by 450 bits!
AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000->176400)
Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
Checking audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
AF_pre: 44100Hz/2ch/s16le
AO: [oss] 44100Hz 2ch s16le (2 bps)
Building audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
Video: no video
Starting playback...
A: 227.8 (03:23:.1) 1.8% 12%

Другие форматы

Это увело бы нас слишком далеко, если обсуждать все возможные форматы аудио и способы их воспроизведения. Неполный обзор распространенного ПО для воспроизведения звука и работы с ним:
  • Ogg Vorbis: свободный формат аудио. Он был разработан из-за того, что MP3 оказался запатентован.
  • realplay
  • SoX или Sound eXchange: конвертер звука, поставляется с программой play. Проигрывает .wav, .ogg и других форматы, в том числе бинарные форматы.
  • Playmidi: MIDI-плеер.
  • AlsaPlayer: из проекта Advanced Linux Sound Architecture.
  • mplayer: играет все, что угодно, в том числе mp3-файлы.
  • hxplay: поддерживает RealAudio и RealVideo, mp3, mp4-аудио, Flash, wav и другие.
  • rhythmbox: основанный на GStreamer фреймворк, может играть то, что поддерживается в GStreamer, который, как утверждается, способен играть все.
Посмотрите вашу системную документацию и man-страницы для конкретных программ, там найдутся подробные разъяснения о том, как все это использовать.
У меня в системе нет этих приложений!
Большинство программ и приложений, упомянутых выше, являются дополнительным программным обеспечением. Вполне возможно, что они не установлены в системе по умолчанию, но вы можете их найти в вашем дистрибутиве в качестве дополнительных пакетов. Также может оказаться, что приложения, которое вы ищете, нет в вашем дистрибутиве вообще. В этом случае, вам необходимо скачать его с сайта программы.

Регулятор громкости

aumix и alsamixer — это два распространенных текстовых инструмента для управления аудиосистемой. Для переключения настроек используются клавиши стрелок. alsamixer имеет графический интерфейс при запуске из меню Gnome или доступен как gnome-alsamixer из командной строки. Программа kmix делает то же самое в KDE.
Независимо оттого, что вы собираетесь слушать, помните, что могут быть и другие люди, которые не заинтересованы в том, чтобы слушать вас или ваш компьютер. Постарайтесь быть вежливыми, особенно в офисе. Используйте большие наушники. Так будет лучше для ваших ушей и вызывать меньше раздражения у ваших коллег.

Запись

Здесь также доступны различные инструменты, позволяющие записывать голос и музыку. Для записи голоса можно использовать arecord в командной строке:
alexey@russia:~> arecord /var/tmp/myvoice.wav
Recording WAVE '/var/tmp/myvoice.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
Aborted by signal Interrups...
"Interrupt" (прерывание) означает, что приложение поймало Ctrl + C. Проиграть образец можно с помощью простой команды play.
Это хороший тест, который можно выполнить перед тестированием приложений, которым требуется голосовой ввод, таким как передача голоса по IP (VoIP). Имейте в виду, что микрофонный вход должен быть активирован. Если вы не слышите собственный голос, проверьте настройки звука. Часто случается, что микрофон отключен или находится на очень низкой громкости. Это может легко отрегулировать с помощью alsamixer или графического интерфейса для звуковой системы вашего дистрибутива.
В KDE можно запустить утилиту krec, Gnome предоставляет gnome-sound-recorder.


Просмотр видео и ТВ

  • xine: свободно-распространяемый проигрыватель видео
  • ogle: DVD-плеер
  • okle: KDE версия ogle
  • mplayer: Movie Player для Linux
  • totem: воспроизведение аудио и видео файлов, аудио CD, VCD и DVD
  • realplay: от RealNetworks.
  • hxplay: альтернативный Real
  • kaffeine: мультимедийный проигрыватель для KDE3.
Скорее всего, вы найдете один из них в вашем графическими меню.
Имейте в виду, что всех необходимых кодеков для просмотра различных типов видео может не быть в вашей системе по умолчанию. Вы можете загрузить w32codecs и libdvdcss.
Для просмотра телевидения можно выбрать среди следующих инструментов, которые, как и многие другие, подходят для просмотра и захвата ТВ-передач, видео и другого:
  • tvtime: великолепная программа с широкими возможностями управления, взаимодействия с телетекстом, режимами для фильмов и многим другим.
  • zapping: программа для просмотра телепередач для Gnome.
  • xawtv: X11 ТВ-вьювер.

Интернет-телефония — это чаще всего передача голоса по IP (VoIP) или цифровая телефония, которая позволяет участникам обмениваться голосовыми данными по сети. Разница заключается в том, что потоки данных через сеть общего пользования Интернет отличаются от традиционной телефонии, которая использует выделенную сеть линий для передачи голоса. Хотя при особых обстоятельствах две сети могут быть между собой соединены, сейчас это не практикуется как стандарт. Другими словами, возможность связаться с людьми, которые используют обычный телефон, существует. Если это возможно, то скорее всего вам придется платить за подписку.
В настоящее время существуют различные приложения, доступные для бесплатного скачивания, как свободные, так и проприетарные. Но есть ряд недостатков телефонии через Интернет. Такая система ненадежна, она может работать медленно или в ней может проходить много шума по связи, и поэтому не может использоваться для замены традиционной телефонии. Хотя некоторые провайдеры принимают меры предосторожности, нет никакой гарантии, что вы дозвонитесь, куда вам надо.
Большинство приложений в настоящее время не используют шифрование, так что надо понимать, что кому-то достаточно легко подслушивать ваши разговоры. Если безопасность важна для вас, читайте документацию, которая поставляется с вашим клиентом IP-телефонии. Кроме того, если вы используете брандмауэр, он должен быть настроен на разрешение входящих соединений из любого места, так что использование VoIP также включает в себя принятие рисков на уровне безопасности сайта.

Что вам нужно?

На стороне сервера

Прежде всего, необходим провайдер предоставляющий такую услугу. Данный сервис может быть включен в традиционную телефонию, может быть платным или нет. Среди других есть SIPphone, Vonage, Lingo, AOL TotalTalk, также доступны технологии провайдеров, которые предлагают так называемый "полный телефонный сервис". Услуги интернет-телефонии предлагают Skype, SIP Broker, Google и многие другие.

Клиентская сторона

На стороне клиента, приложения, которые можно использовать, зависят от конфигурации сети. Если у вас есть прямое подключение к Интернету, то не будет никаких проблем, при условии, что вы знаете, к какому серверу можете подключиться, и, как правило, должны быть имя пользователя и пароль для аутентификации в сервисе.
Если вы находитесь за межсетевым экраном, который делает Network Address Translation (NAT), некоторые службы могут не работать, так как они будут видеть только IP-адрес брандмауэра, а не адрес вашего компьютера, который вполне может быть немаршрутизируемым через Интернет , например, когда вы находитесь в корпоративной сети, и ваш IP-адрес начинается с 10., 192.168. или иной немаршрутизируемого префикса подсети. Это зависит от протокола, который используется приложением.
Также блокирующим фактором может быть доступная пропускная способность: некоторые приложения, оптимизированы для низкого потребления пропускной способности, в то время как другие могут требовать высокую пропускную способность соединения. Это зависит от способа кодирования-декодирования, который используется приложением.
Самое известное приложение — это Skype, который имеет интерфейс, напоминающий обмен мгновенными сообщениями и X-Lite, бесплатную версию программного телефона XTen, который выглядит как мобильный телефон. Хотя эти программы доступны для бесплатной загрузки и популярны, они не свободны: они используют закрытые протоколы и/или доступны только в виде исполняемых файлов.
Клиентское оборудование
Даже если на вашем компьютере, особенно ноутбуке, есть встроенный микрофон, результат будет намного лучше, если вы подключите гарнитуру. Если у вас есть выбор, выборайте в пользу USB-гарнитуры, т.к. она функционирует независимо от имеющегося аудио-оборудования. Используйте alsamixer для настройки входного и выходного уровня звука.




Азы linux (для детей) урок 44

Удаленное выполнение приложений

Rsh, rlogin и telnet

Команды для удаленного входа и выполнения команд rlogin и rsh пришли из UNIX. Хотя они редко используются, т.к. это небезопасно, они по-прежнему поставляются почти с каждым дистрибутивом для обратной совместимости с UNIX-программами.
Кроме того, telnet по-прежнему широко используется системными и сетевыми администраторами. Telnet является одним из наиболее мощных инструментов для удаленного доступа к файлам и удаленного администрирования, позволяющий устанавливать связь из любой точки мира через Интернет. В сочетании с X-сервером, удаленные графические приложения могут быть отображены на локальной машине. В результате стираются границы между работой на локальном компьютере и с помощью удаленной машины.
По причине того, что всё соединение не зашифровано, позволяя telnet соединяться, вы берете на себя высокие риски, связанные с безопасностью. Для нормального удаленного выполнения программ рекомендуется использовать Secure Shell, или ssh. Далее мы будем обсуждать безопасный метод связи.
Однако, во многих случаях telnet до сих пор используется. Ниже приведены некоторые примеры, в которых почтовый сервер и веб-сервер тестируются на ответы.
Проверка того, что почтовый сервер работает:
[jimmy@blob ~] telnet mailserver 25
Trying 192.168.42.1...
Connected to mailserver.
Escape character is '^]'.
220 m1.some.net ESMTP Sendmail 8.11.6/8.11.6; 200302281626
ehlo some.net
250-m1.some.net Hello blob.some.net [10.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP
mail from: jimmy@some.net
250 2.1.0 jimmy@some.net... Sender ok
rcpt to: davy@some.net
250 2.1.5 davy@some.net... Recipient ok
data
354 Enter mail, end with "." on a line by itself
test
.
250 2.0.0 g2MA1R619237 Message accepted for delivery
quit
221 2.0.0 m1.some.net closing connection
Connection closed by foreign host.
Проверка того, что веб-сервер отвечает на основные запросы:
[jimmy@blob ~] telnet www.some.net 80
Trying 64.39.151.23...
Connected to www.some.net.
Escape character is '^]'.
HEAD / ;HTTP/1.1

HTTP/1.1 200 OK
Date: Fri, 22 Mar 2002 10:05:14 GMT
Server: Apache/1.3.22 (UNIX) (Red-Hat/Linux) 
 mod_ssl/2.8.5 OpenSSL/0.9.6
 DAV/1.0.2 PHP/4.0.6 mod_perl/1.24_01
Last-Modified: Fri, 04 Jan 2002 08:21:00 GMT
ETag: "70061-68-3c3565ec"
Accept-Ranges: bytes
Content-Length: 104
Connection: close
Content-Type: text/html

Connection closed by foreign host.

[jimmy@blob ~]
Это совершенно безопасно, потому что вы нигде не вводите имя пользователя и/или пароль для получения данных, которые вам требуются, поэтому никто не сможет стащить какую-нибудь важную информацию с кабеля.

X Window System

Особенности X

Как мы уже объясняли в Главе 7, система X Window поставляется с Х-сервером, который обслуживает графические приложения клиентов.
Важно понимать различие между X-сервероми и клиентскими X-приложениями. Х-сервер управляет дисплеем напрямую и несет ответственность за все входящие и выходящие данные, которые проходят через клавиатуру, мышь и монитор. X-клиент, со своей стороны, не имеет доступа к устройствам ввода и вывода напрямую. Он связывается с X-сервером, который обрабатывает ввод и вывод. X-клиент выполняет реальную работу, такую как вычисления значений, обеспечивает работу приложений и т.д. Х-сервер только открывает окна для обработки ввода и вывода для конкретного клиента.
При обычной работе (в графическом режиме), каждая рабочая станция Linux является X-сервером для себя самой. Все приложения, которые вы используете (например, Gimp, окно терминала, браузер, офисное приложение, инструмент проигрывания CD и т.д.) являются клиентами вашего X-сервера. Получается, что сервер и клиент работают на одной машине.
Такая клиент/серверная особенность системы X делает ее идеальной средой для удаленного выполнения приложений и программ. Поскольку процесс реально выполняется на удаленной машине, требуется мало мощности процессора на локальном хосте. Такие машины, которые работают только как сервера для X, называют X-терминалами и когда-то они были очень популярны.

Telnet и X

Если бы вы захотели использовать telnet для отображения графических приложений, работающих на удаленном компьютере, необходимо сначала дать удаленному компьютеру доступ к вашему дисплею (теперь уже X-серверу!) используя команду xhost, набрав ее как в примере ниже в окне терминала на вашем локальном компьютере:
davy:~> xhost +remote.machine.com
После этого, надо подключиться к удаленному хосту и сообщить ему об отображении графики на локальной машине, установив переменную окружения:
[davy@remote ~] export DISPLAY="local.host.com:0.0"
После завершения этого шага, любое приложение, запущенное в этом окне терминала будет отображаться на вашем локальном компьютере, используя удаленные ресурсы для вычислений, но ваши местные графические ресурсы (Ваш X-сервер) для отображения приложений.
Эта процедура предполагает, что у вас на компьютере уже установлены какие-нибудь X-сервера (XFree86, X.org, Exceed, Cygwin), и вам есть с помощью чего отображать изображения. Архитектура и операционная система клиентского компьютера не важны, если они позволяют запускать на нем Х-сервер.
Помните, что отображение окна терминала с удаленной машины также считается прорисовкой изображения.

Пакет SSH

Введение

Большинство систем UNIX и Linux в настоящее время запускают Secure SHell, чтобы избежать рисков для безопасности, которые давал telnet. На большинстве систем Linux будет работать версия OpenSSH, открытая реализация протокола SSH, обеспечивающая безопасную зашифрованную связь между непроверенными хостами в ненадежной сети. X-соединения при обычной установке автоматически передаются, но произвольные TCP/IP порты могут также быть переданы с использованием защищенного канала.
Клиент ssh подключается и регистрируется на указанном имени хоста. Пользователь должен предоставить данные о себе на удаленной машине, как указано в файле sshd_config, который обычно можно найти в /etc/ssh. Содержимое конфигурационного файла говорит само за себя, и по умолчанию включает наиболее используемы возможности. Если вам нужна помощь, вы сможете найти ее в man-страницах sshd.
Когда личность пользователя становится идентифицированной сервером, он либо выполняет данную команду, либо заходит на компьютер и предоставляет пользователю обычный shell на удаленной машине. Вся связь с удаленной командой или оболочкой будет автоматически зашифрована.
Сессия заканчивается, когда команда или оболочка на удаленной машине завершает работу, и все X11 и TCP/IP соединения оказываются закрытыми.
При подключении к хосту в первый раз, используя любую из программ, которые включены в коллекцию SSH, необходимо установить подлинность этого хоста и подтвердить, что вы хотите подключиться:
lenny ~> ssh blob
The authenticity of host 'blob (10.0.0.1)' can't be established.
RSA fingerprint is 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'blob,192.168.30.2' (RSA) to the list of 
known hosts.
Last login: Sat Dec 28 13:29:19 2002 from octarine
This space for rent.

lenny is in ~
Важно, чтобы вы ввели "yes", из трех символов, а не только "у". Все это изменяет ваш файл ~/.ssh/known_hosts, см. Раздел "Проверка подлинности сервера".
Если вы просто хотите проверить что-то на удаленной машине, а затем вернуться обратно к оболочке на локальном компьютере, вы можете передать команды, которые вы хотите выполнить удаленно, в качестве аргументов ssh:
lenny ~> ssh blob who
jenny@blob's password:
root     tty2         Jul 24 07:19
lena	 tty3         Jul 23 22:24
lena     0:	      Jul 25 22:03

lenny ~> uname -n
magrat.example.com

Пересылка X11 и TCP

Если параметру X11Forwarding присвоено значение yes на требуемом компьютере и пользователь использует X-приложения, устанавливается переменная среды DISPLAY, подключение к X11-дисплею автоматически пересылаются на удаленный сервер таким образом, что любая X11-программа, запускаемая из оболочки, будет проходить через шифрованный канал, и связь с реальным X-сервером будет создана из локальной машине. Пользователю. не надо вручную устанавливать DISPLAY. Отправка X11-соединений может быть сконфигурирована в командной строке или в конфигурационном файле sshd.
Значение для DISPLAY, установленное ssh, будет указывать на сервер, но с номером дисплея больше нуля. Это нормально и происходит потому, что ssh создает proxy X сервер на сервере (который запускает X-приложение клиента) для пересылки соединений через зашифрованный канал.
Все это делается автоматически, так что, когда вы набираете название графического приложения, оно отобразиться на вашем локальном компьютере, а не на удаленном хосте. В примере мы используем xclock, так как это небольшая программа, которая обычно установлена и идеально подходит для тестирования:
Рисунок 10.3. SSH X11 перенаправление
Команда ssh
SSH также автоматически настроит X-полномочия на сервере. Для этой цели будут сгенерированы случайные авторизационные куки, SSH сохранит их на сервере и проверит, что какое-либо соединение несет эти куки и заменит их реальными, когда соединение будет установлено. Реальные аутентификационные куки никогда не передается на сервер (и никакие куки не отправляются так как есть).
Пересылка произвольных TCP/IP-соединений через защищенный канал может быть определена либо в командной строке, либо в файле конфигурации.
Х-сервер
Эта процедура предполагает, что у вас работает Х-сервер на стороне клиента, где вы отображаете приложение от удаленного хоста. Клиент может иметь иную архитектуру и операционную систему, чем удаленный хост в том случае, если он может запустить Х-сервер, например, Cygwin (который реализует X.org сервер для клиентов MS Windows и др.) или Exceed, должна быть возможность настроить удаленное соединение с любым компьютером Linux или Unix.

Проверка подлинности сервера

Клиент/серверная система ssh автоматически поддерживает и проверяет базу данных, содержащую идентификационную информация для всех хостов, которые когда-либо использовались. Ключи хостов хранятся в $HOME/.ssh/known_hosts, который находится в домашнем каталоге пользователя. Кроме того, автоматически проверяется файл /etc/ssh/ssh_known_hosts на наличие известных хостов. Любые новые хосты, автоматически добавляются в файл пользователя. Если идентификация хоста когда-либо изменяется, ssh предупреждает об этом и отключает аутентификацию по паролю, чтобы какой-нибуль троянский конь не получил пароля пользователя. Другая цель этого механизма заключается в предотвращении "человек-в-середине" атаки, которые могут быть использованы для обхода шифрования. В средах, где необходим высокий уровень безопасности, sshd даже может быть настроен для предотвращения входов на машины, чьи ключи хоста были изменены или неизвестны.

Безопасное удаленное копирование

Пакет SSH предоставляет scp в качестве безопасной альтернативой команды rcp, которая была популярна, когда только она и существовала. scp использует ssh для передачи данных, использует ту же самую проверку подлинности и обеспечивает такую же безопасность как ssh. В отличие от rcp, scp будет запрашивать пароль или парольную фразу, если они необходимы для аутентификации:
lenny /var/tmp> scp Schedule.sdc.gz blob:/var/tmp/
lenny@blob's password:
Schedule.sdc.gz  100% |*****************************| 100 KB 00:00

lenny /var/tmp>
Любое имя файла может содержать хост и спецификации пользователя для указания, что файл должен быть скопирован на/с этого хоста. Копии между двумя удаленными хостами не допускаются. См. info-страницы для получения дополнительной информации.
Если вы предпочитаете использовать FTP-подобный интерфейс, используйте sftp:
lenny /var/tmp> sftp blob
Connecting to blob...
lenny@blob's password:

sftp> cd /var/tmp

sftp> get Sch*
Fetching /var/tmp/Schedule.sdc.gz to Schedule.sdc.gz

sftp> bye

lenny /var/tmp>
Безопасное копирование или FTP GUI
Еще не чувствуйте себя комфортно в командной строке? Попробуйте возможности Konqueror для безопасного удаленного копирования, или установите Putty.

Проверка подлинности ключей

Команда ssh-keygen создает, управляет и преобразует ключи аутентификации для ssh. Она может создавать ключи RSA для использования протоколом SSH версии 1 и ключи RSA или DSA для использования протоколом SSH версии 2.
Обычно каждый пользователь, желающий использовать SSH с аутентификацией RSA или DSA, выполняет команду единожды для создания ключей аутентификации в $HOME/.ssh/identity, id_dsa или id_rsa. Кроме того, системный администратор может использовать ее для генерации ключей хоста системы.
Обычно эта программа генерирует ключ и опрашивает файл, в котором он хранится. Открытый ключ хранится в файле с тем же именем, но добавляется расширение .pub. Также программа запрашивает пароль. Пароль может быть пустым, что указывает на то, что его нет (ключи хостов должно быть с пустым паролем), или это может быть строка произвольной длины.
Не существует способа восстановить потерянный пароль. Если фраза утеряна или забыта, новый ключ должен быть создан и скопирован в соответствующие открытые ключи.
Мы изучим ключи SSH в упражнениях. Вся информация может быть найдена в man- или info-страницах.

VNC

VNC или Virtual Network Computing, на самом деле система удаленного дисплея, которая позволяет просматривать рабочую среду не только на локальной машине, на которой он запущен, но и из любой точки Интернет и с самых разных машин и архитектур, в том числе MS Windows и некоторых дистрибутивов UNIX. Можно, например, запустить MS Word на компьютере с Windows NT и отобразить результ на вашем рабочем столе Linux. VNC обеспечивает серверы также как клиентов, поэтому противоположное также работает, что можно использовать для отображения Linux программ для клиентов Windows. VNC, вероятно, самый простой способ получить X соединения на ПК. Следующие характеристики показывают, чем VNC отличается от обычного Х-сервера или коммерческих реализаций:
  • Ни одно состояние не хранится на стороне зрителя: вы можете покинуть свой стол и возобновить работу с другого компьютера с того места, где вы остановились. Когда вы запускаете X-сервер, а также происходят сбои или перезагрузки ПК, то все удаленные приложения, которые вы запустили, прекращают работать. А вот VNC они продолжат свое выполнение.
  • Это маленькая и простая программа, не требующая установки; если потребуется, может быть запущена с дискеты.
  • Платформенно независима с Java-клиентом, работает в виртуальной среде, которая поддерживает X.
  • Разделяема: один рабочий стол может отображаться на множество зрителей.
  • Свободна.
Более подробную информацию можно найти на man-страницах (man vncviewer) или на веб-сайте VNC.

Протокол rdesktop

Для того, чтобы облегчить управление хостами MS Windows, новые дистрибутивы Linux поддерживают Remote Desktop Protocol (RDP), который реализован в клиенте rdesktop. Протокол используется в ряде продуктов Microsoft, включая Windows NT Terminal Server, Windows 2000 Server, Windows XP и Windows 2003 Server.
Руководство man rdesktop предоставляет больше информации.

Cygwin

Cygwin обеспечивает существенную функциональность UNIX на системах MS Windows. Помимо предоставления утилит командной строки UNIX и графических приложений, она также может быть использована для отображения рабочего стола Linux на компьютере с MS Windows, с помощью удаленного X. Из оболочки Bash Cygwin, введите команду
/usr/X11R6/bin/XWin.exe -query your_linux_machine_name_or_IP
Соединение по умолчанию запрещено. Вы должны изменить конфигурацию X Display Manager (XDM) и, возможно, конфигурацию X Font Server (XFS), чтобы включить этот тип соединения, где вы получите экран входа на удаленной машине. В зависимости от вашего менеджер рабочего стола (Gnome, KDE, другие), вам, возможно, придется изменить некоторые настройки и там.
Если вам не нужно отображать весь десктоп, вы можете использовать SSH в Cygwin, так же, как описано в Разделе "Пакет SSH", без всякой суеты по редактированию конфигурационных файлов.

Азы linux (для детей) урок 43

Internet/Intranet приложения

Система Linux является отличной платформой для предоставления сетевых сервисов. В этом разделе мы попытаемся дать краткий обзор наиболее распространенных сетевых серверов и приложений.

Типы серверов

Автономный сервер

Предоставляемые пользователям сервисы могут быть доступны двумя разными способами. Демон или служба могут работать или в автономном режиме, или зависеть от активации другого сервиса.
Сервисы сети, которые сильно и/или постоянно используются, как правило, работают в автономном режиме: они представляют собой независимые программы-демоны, которые работают всегда. Они чаще всего запускаются во время загрузки системы и ожидают запросы по специальным точкам соединениям или портам, которые они прослушивают. Когда приходит запрос, он обрабатывается, и прослушивание продолжается до следующего запроса. Веб-сервер представляет собой типичный пример: вы хотите, чтобы он был доступен 24 часа в сутки, поэтому при большой загрузке следует создать больше прослушивающих служб, обслуживающих одновременно работающих пользователей. Другими примерами являются большие архивы программного обеспечения или зеркала, которое должно обрабатывать тысячи FTP-запросов в день.
Примером автономного сетевого сервиса на домашнем компьютере может быть named (демон named), кэширующий сервер имен. У автономных сервисов есть собственные запущенные процессы, вы можете проверить это в любое время с помощью ps:
bob:~> ps auxw | grep named
named   908  0.0  1.0 14876 5108 ?   S  Mar14  0:07 named -u named
При этом существуют некоторые службы, которые вы можете использовать на вашем ПК, даже если не будет существовать запущенного для него серверного процесса. В качестве примера можно привести службы FTP, сервис безопасного копирования. У таких служб есть интернет-демон (inetd) прослушивающий их на месте.

(x)inetd

На вашем домашнем компьютере обычно немного спокойнее. У вас может быть небольшая сеть, и вы передаете файлы с одного ПК на другой время от времени, используя FTP или Samba (для связи с машинами MS Windows). В таких случаях все службы, которые вам нужны, запускаются время от времени, работать с ними все время было бы пустой тратой ресурсов. Поэтому в небольших установках вы обнаружите, что необходимые демоны зависит от центральной программы, которая прослушивает все порты служб, за которые она несет ответственность.
Этот супер-сервер, демон сетевых сервисов, запускается во время системной инициализации. Существует две распространенные реализации: inetd и xinetd (расширенный демон интернет-услуг). Тот или иной обычно запущен на каждой системе Linux:
bob:~> ps -ef | grep inet
root  926   1 0 Mar14 ?   00:00:00 xinetd-ipv6 -stayalive -reuse \
-pidfile /var/run/xinetd.pid
Службы, за которые отвечает интернет-демон, перечислены в его конфигурационном файле /etc/inetd.conf для inetd и в каталоге /etc/xinetd.d для xinetd. Обычно управляемые службы включают сервисы разделения файлов и печати, SSH, FTP, telnet, конфигурационный демон Samba, опрашивающие и временные службы.
Как только запрос на соединение получен, центральный сервер запускает необходимую службу. Так в приведенном ниже примере, когда пользователь bob запускает FTP-сессию к локальному хосту, FTP-демон работает, пока сессия активна:
bob:~> ps auxw | grep ftp
bob     793  0.1  0.2  3960 1076 pts/6    S    16:44   0:00 ncftp localhost
ftp     794  0.7  0.5  5588 2608 ?        SN   16:44   0:00 ftpd: 
localhost.localdomain: anonymous/bob@his.server.com: IDLE
Конечно, то же самое происходит при открытии соединения с удаленными хостами: либо демон отвечает непосредственно, либо удаленный (x)inetd запускает нужную вам службу, и останавливает ее, когда вы выходите.

Почта

Серверы

Sendmail является стандартной почтовой серверной программой или агентом почтовой пересылки для платформ UNIX. Она надежна, масштабируема и при правильной настройке соответствующего оборудования без проблем поддерживает тысячу пользователей. Более подробную информацию о настройке Sendmail входит в пакеты sendmail и sendmail-cf, вы можете прочитать файлы README и README.cf в /usr/share/doc/sendmail. Также полезны будут man sendmail и man aliases.
Qmail другой почтовый сервер, который приобретает все большую популярность, поскольку утверждается, что он более безопасен, чем Sendmail. Хотя Sendmail является монолитной программой, Qmail состоит из меньшего числа взаимодействующих частей программы, что может обеспечивать лучшую безопасность. Postfix и Exim являются примерами других почтовых серверов, которые набирают популярность.
Эти серверы обрабатывают списки рассылки, выполняют фильтрацию, сканируют на вирусы и делают многое другое. Бесплатные и коммерческие сканеры доступны для использования в Linux. Примеры программного обеспечения для рассылки - Mailman, Listserv, Majordomo и EZmlm. Посмотрите веб-страницу предпочитаемого вами антивирусного сканера для получения информации о клиентской и серверной поддержкеа на Linux. Amavis и Spamassassin свободные реализации сканеров на вирусы и спам.

Удаленные почтовые серверы

Наиболее популярных протоколы для доступа к почте удаленно POP3 и IMAP4. Оба, IMAP и POP, позволяет офлайновую работу, удаленный доступ к новым письмам, и оба зависят от сервера SMTP для отправки почты.
Хотя POP представляет собой простой протокол, легкий в реализации и поддерживает практически любой почтовый клиент, IMAP является предпочтительным, потому что:
  • Он может управлять метками статуса сообщений.
  • Он может как хранить, так и получать сообщения.
  • Он может получать доступ и управлять несколькими почтовыми ящиками.
  • Он поддерживает одновременное обновление и общие почтовые ящики.
  • Он также подходит для доступа к сообщениям Usenet и другим документам.
  • IMAP работает как в он-лайн так и офф-лайн.
  • Он оптимизирован для работы в он-лайн, особенно по низкоскоростным ссылкам.

Mail-агенты пользователя

Есть много текстовых и графических почтовых клиентов, мы назовем несколько из наиболее распространенных. Выберите наилучший для вас.
Команда UNIX mail использовалась в течение многих лет еще до того, как появились сети. Она представляет собой простой интерфейс для отправки сообщений и небольших файлов другим пользователям, которые затем могут сохранить сообщение, перенаправить или ответить на него.
Хотя эта программа уже почти не используется в качестве клиента, она все еще может быть полезна, например, если на почту кому-то отправить вывод команды:
mail < cv.txt
Читатель почты elm — очень важное улучшение для mail, и также есть pine (Pine Is Not ELM). Более новый читатель почты mutt предлагает такие возможности как многопоточность.
Для тех пользователей, которые предпочитают графический интерфейс, существуют сотни вариантов. Наиболее популярны для новых пользователей Mozilla Mail/Thunderbird, который легко настраивается против спама, а Evolution представляет собой клон MS Outlook. Kmail пользуется популярностью среди пользователей KDE.
Рисунок 10.1. Почтовая программа Evolution
Программа для чтения почты в Linux
Существуют также десятки web-mail приложений, таких как Squirrelmail, Yahoo! mail, gmail от Google and Hotmail.
Большинство дистрибутивов Linux включают fetchmail, утилиту для восстановления и отправки почты. Она забирает почту с удаленных почтовых серверов (POP, IMAP и некоторые другие) и направляет ее к вашей локальной системе доставки. После этого можно обрабатывать полученную почту с помощью обычных почтовых клиентов. Эта программа может быть запущена в режиме демона для многократного опроса одного или нескольких систем в указанный промежуток времени. Информация и примеры использования можно найти в info-страницах; каталог /usr/share/doc/fetchmail[-] содержит полный список возможностей и FAQ для новичков.
Фильтр procmail может быть использован для фильтрации входящей почты, создания списков рассылки, предварительной обработки почты, выборочно пересылать электронную почту и многое другое. Сопутствующая ему программа formail среди прочего позволяет генерировать автоответы и разделение почтовых ящиков. Procmail работал в течение многих лет на машинах UNIX и Linux и является надежной системой, предназначенной для работы даже в наихудших обстоятельствах. Более подробную информацию можно найти в каталоге /usr/share/doc/procmail[-] и на справочных страницах.
Заметка о почтовом этикете
Некоторые люди в наши дни, возможно, думают, что сообщение электронной почты не должна быть слишком формальными. Конечно, все зависит от обстоятельств. Если вы пишете тому, кого вы не знаете, лучше держать на некотором расстоянии, как вы бы делали в традиционном письме. И не забывайте: человек, которого вы не знаете, может оказаться как мужчиной, так и женщиной ...

Web

Веб-сервер Apache

Apache на сегодняшний день является самым популярным веб-сервером, используемом на более чем половине всех серверов в сети Интернет. Большинство Linux дистрибутивов включают Apache. Преимущества Apache заключаются в модульной разработке, поддержке SSL, стабильности и скорости. При наличии соответствующих аппаратных средств и их настройке он может выдерживать высокие нагрузки.
В системах Linux конфигурация сервера, как правило, делается в каталоге /etc/httpd. Наиболее важным конфигурационным файлом является httpd.conf; он пожалуй достаточно очевидный. Если вам нужна помощь, вы можете найти ее на man-странице httpd или на веб-сайт Apache.

Веб-броузеры

Для платформы Linux существует большое количество как бесплатных, так и коммерческих веб-браузеров. Netscape Navigator как единственный достойный вариант уже давно ушел в прошлое, так Mozilla/Firefox предлагает конкурентоспособную альтернативу, работающую также хорошо на многих других операционных системах, таких как MS Windows и MacOS X.
Amaya является W3C браузером. Opera - коммерческих браузер, компактный и быстрый. Многие менеджеры рабочего стола включают возможность просмотра веб-страниц в их файловом менеджере.
Популярными текстовыми браузерами являются lynx и links. Возможно, вам придется определить прокси-серверов в вашей оболочке, установив соответствующие переменные. Текстовые браузеры быстры и удобны, когда не установлена графическая среда, также как и при использовании в скриптах.

Proxy-серверы

Что такое proxy-сервер?
Компании и организации часто хотят, чтобы их пользователи могли использовать прокси-сервер. Особенно в среде с большим количеством пользователей прокси-сервер может позволить быструю загрузку веб-страниц. Прокси-сервер сохраняет веб-страницы. Когда пользователь запрашивает веб-страницу, которая уже была запрошена ранее, прокси-сервер выдаст пользователю ту страницы напрямую, без обращения к сети Интернет, что занимает меньше времени. Конечно, такой ход событий может быть приемлем, когда прокси-сервер делает быструю проверку и всегда предоставляет самую последнюю версию страницы. В некоторых средах использование прокси-сервера является обязательным, в других средах может быть выбор, следует ли его использовать.
Конфигурация прокси
Если у вас есть имя и порт прокси-сервера, это должно быть достаточно очевидным, чтобы скормить эту информацию в вашем браузере. Однако многие (командная строка) приложения зависят от переменных http_proxy и ftp_proxy для правильного функционирования. Для вашего удобства вы можете добавить строку подобной следующей в файл ~/.bashrc:
export http_proxy=http://username:password@proxy_server_name:port_number
Например:
export http_proxy=http://willy:Appelsi3ntj3@proxy:80
Если вам не требуется задавать имя пользователя и пароль, просто не вписывайте их до знака "@", а сам знак следует оставить.

File Transfer Protocol

FTP-серверы

На системах Linux сервер FTP, как правило, запускается от xinetd, используя сервер WU-ftpd, хотя FTP-сервер может быть настроен как автономный на системах с огромным FTP-трафиком. Смотрите упражнения.
Другие серверы FTP включают среди прочих vsftpd, Ncftpd и Proftpd.
Большинство дистрибутивов содержат пакет anonftp, который устанавливает анонимное дерево FTP-сервера и сопутствующие файлы конфигурации.

FTP-клиенты

Большинство дистрибутивов Linux включают ncftp, улучшенную версию распространенной команды UNIX ftp, которая может быть вам также знакома по командной строки Windows. Программа ncftp предлагает дополнительные функции, такие как лучший и понятный интерфейс пользователя, завершение имени файла, добавление и возобновление функций, закладки, управление сессиями и т.д.:
thomas:~> ncftp blob
NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com).
Connecting to blob...
blob.some.net FTP server (Version wu-2.6.1-20) ready.
Logging in...
Guest login ok, access restrictions apply.
Logged in to blob.
ncftp / > help
Commands may be abbreviated.  'help showall' shows hidden and 
unsupported commands.  
'help ' gives a brief description of .

ascii      cat      help      lpage     open     quote    site     
bgget      cd       jobs      lpwd      page     rename   type     
bgput      chmod    lcd       lrename   pdir     rhelp    umask    
bgstart    close    lchmod    lrm       pls      rm       version  
binary     debug    lls       lrmdir    put      rmdir      
bookmark   dir      lmkdir    ls        pwd      set        
bookmarks  get      lookup    mkdir     quit     show       
ncftp / > 
Отличную помощь с большим количеством примеров можно найти в документации.
 И опять же, существует ряд приложений с GUI.


FTP не безопасен! Не используйте протокол передачи файлов для неанонимного логина, если вы не уверены в том, что вы делаете. Ваше имя пользователя и пароль могут быть захвачены злонамеренными пользователями сети! Вместо этого используйте защищенное FTP; программа sftp поставляется с пакетом Secure SHell, см. Раздел "Безопасное удаленное копирование".

Чаты и конференции

В каждом дистрибутиве доступны различные клиенты и системы, которые заменяют старый IRC-стиль текстовых чатов. Вот короткий и неполный перечень наиболее популярных программ:
  • pidgin: мульти-протокольный клиент обмена мгновенными сообщениями под Linux, Windows и Mac, совместимый с MSN Messenger, ICQ, IRC и многими другими; смотрите info-страницы или сайт этой программы.
  • xchat: IRC клиент для X Window System:
Рисунок 10.2. X-Chat Программа xchat
  • aMSN: клон MSN.
  • Konversation, kopete, KVIrc и многие другие К-инструменты из пакета KDE.
  • gnomemeeting: программы видеоконференции для UNIX (в настоящее время Ekiga).
  • jabber: программа для обмена мгновенными сообщениями с открытым исходным кодом, совместимая с ICQ, AIM, Yahoo, MSN, IRC, SMTP и другими.
  • psi: клиент для jabber.
  • skype: программа для совершения телефоноподобных звонков через Интернет другим пользователям Skype. Skype является бесплатным, но не открытым.
  • Gizmo: бесплатный (но не открытый) телефон для вашего компьютера

Службы новостей

Запуск сервера Usenet предполагает наличие специальных знаний и тонкой настройки. Есть несколько интересных новостей в comp.* иерархии, которые можно получить с помощью различных текстовых и графических клиентов. Многие почтовые клиенты также поддерживают просмотр новостей, проверьте вашу программу или обратитесь к локальным зеркалам открытого программного обеспечения за такими текстовыми клиентами, как tin, slrnn и mutt,
 или загрузите Mozilla или любой другой графический клиент.


Deja.com хранит архив всех новостей с возможностью поиска, его работа
 обеспечивается Google. Это очень мощный инструмент для получения 
помощи: есть большие шансы, что кто-то уже сталкивался с вашей 
проблемой, нашел решение и отправил его в одну из групп новостей.

Система доменных имен

Все эти приложения пользуются службой DNS для сопоставления IP-адреса с именами хоста и обратно. Сервер DNS не знает всех IP-адресов в мире, но он может отправлять запросы на другие сервера DNS для поиска неизвестного адреса. Большинство систем UNIX могут запускать named, который является частью пакета BIND (Berkeley Internet Name Domain) распространяемого Internet Software Consortium. Он может работать как автономный кэширующий nameserver, что часто делается на системах
 Linux для ускорения доступа к сети.


Ваш основной клиентский файл конфигурации — это /etc/resolv.conf,
 который определяет порядок, в котором происходит соединение с
 Domain Name Servers:


search somewhere.org
nameserver 192.168.42.1
nameserver 193.74.208.137
Более подробную информацию можно найти в info-страницах для named
в файлах /usr/share/doc/bind[-] и на домашней странице проекта Bind.
 DNS HOWTO описывает использование BIND в качестве сервера DNS.


DHCP

DHCP - это протокол динамической настройки хоста, который постепенно
 заменяет старый добрый bootp
 в больших средах. Он используется для контроля жизненно важных 
параметров сетей, таких как IP-адресов и серверов имен хостов. DHCP 
имеет обратную совместимость с bootp. Для настройки сервера следует 
прочитать HOWTO.


DHCP клиентских машин, как правило, конфигурируется с помощью 
графического интерфейса, который настраивает dhcpcd, клиентский демон 
DHCP. Проверьте системную документацию, если вам нужно настроить 
компьютер в качестве клиента DHCP.

Службы проверки подлинности

Традиционный

Традиционно пользователи проходят проверку подлинности локально, 
используя информацию, хранящуюся в /etc/passwd и /etc/shadow
 на каждой системе. Но даже при использовании сетевой службы для 
проверки подлинности, локальные файлы всегда будут присутствовать для 
настройки системных аккаунтов для административного использования, 
такого как учетная запись суперпользователя, аккаунты демонов и других 
программ и целей.


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


bob:~> ls -l /etc/passwd /etc/shadow
-rw-r--r--    1 root     root         1803 Mar 10 13:08 /etc/passwd
-r--------    1 root     root         1116 Mar 10 13:08 /etc/shadow

PAM

Linux может использовать PAM, Pluggable Authentication Module,
 гибкий метод аутентификации в UNIX. Преимущества PAM:



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

Каталог /etc/pam.d содержит конфигурационные
 файлы PAM (используемые /etc/pam.conf).
 Каждое приложение или служба имеют свой собственный файл. 
Каждая строка в файле состоит из четырех элементов:

Модуль:
  • auth: обеспечивает проверку подлинности (запрашивая и сверяя пароль) и устанавливает учетные данные, такие как членство в группе или тикеты Kerberos.
  • account: проверяет для уверенности, что доступ разрешен для пользователя (время учетной записи еще не истекло, что пользователь может войти в это время суток, и так далее).
  • password: используется для установки паролей.
  • session: используется после того как пользователь прошел аутентификацию. Этот модуль выполняет дополнительные задачи, которые необходимы для разрешения доступа (например, монтирование домашней директории пользователя или имеющегося в наличии почтового ящика).
Порядок, в котором расставляются модули такой, 
чтобы могли использоваться несколько модулей; это является важным.


Control Flags: сообщают PAM, какие действия предпринять в случае ошибки
 или удачи. Значения могут быть required, requisite,
 sufficient или optional.
Module Path: путь к подключаемый модуль, который будет использоваться,
 обычно в /lib/security.
Arguments: информация для модулей.
Файлы теневых паролей автоматически обнаруживаются PAM. Более подробную информацию можно найти на man-страницах pam или домашней
 странице проекта.

LDAP

Lightweight Directory Access Protocol является клиент-серверной системой для доступа к глобальной или локальной службам каталогов по сети. В Linux используется реализация OpenLDAP. Она включает в себя slapd,
 отдельный сервер; slurpd,
 автономный сервер репликации LDAP; библиотеки, реализующие протокол 
LDAP, а также ряд утилит, инструментов и примеров клиентов.


Главным преимуществом использования LDAP является консолидация 
отдельных видов информации в пределах организации. Например, все разные 
списки пользователей в вашей организации могут быть объединены в один 
LDAP-каталог. Этот каталог может быть запрошен любым LDAP-приложением, 
которому необходима эта информация. Она также может быть доступна 
пользователям.


Другие преимущества LDAP или X.500 Lite заключаются в его простоте 
реализации (по сравнению с X.500) и его четко определенном Application 
Programming Interface (API), что означает, что число LDAP-приложений с 
поддержкой LDAP и шлюзов увеличиться в будущем.


Однако есть и другая сторона. Если вы хотите использовать LDAP, вам 
потребуются LDAP-приложения или возможность использования LDAP-шлюзов. 
Хотя использование LDAP должно только возрастать, в настоящее время 
существует не так много LDAP-приложений для Linux. Кроме того, хотя LDAP
 поддерживает некоторый контроль доступа, он не обладает теми многими 
функциями безопасности, как X.500.


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


Посмотрите вашу системную информацию и man-страницы связанных команд,
 таких как ldapmodify и ldapsearch
 для выяснения деталей. Более подробную информацию можно найти в LDAP 
Linux HOWTO, в котором обсуждается установка, настройка, запуск и 
обслуживание LDAP-сервера на Linux. 

Азы linux (для детей) урок 42

Глава 10. Сеть


Когда речь идет о сети, то часто выбор падает на операционные системы на базе Linux. Это связано не только с тем, что сеть тесно интегрирована в самой ОС и существует большой набор бесплатных инструментов и приложений. Также это связано с надежностью системы при высоких нагрузках, что было достигнуто после многих лет ее отладки и тестирования в проекте Open Source.
Книжные полки полны информацией, написанной о Linux и сетях, мы же постараемся в этой главе дать краткий обзор. После ее завершения, вы будете знать больше о
  • Поддерживаемых сетевых протоколах
  • Конфигурационных файлах сети
  • Командах настройки и исследования сети
  • Демонах и клиентских программах, запускающих различные сетевые приложения
  • Разделении доступа к файлам и печати
  • Удаленном выполнении команд и приложений
  • Основах сетевого взаимодействия
  • Безопасном выполнении удаленных приложений
  • Брандмауэрах и обнаружении вторжений

Модель OSI

Протокол - это, проще говоря, набор правил для общения.
Для того, чтобы передать данные по сети, например, электронную почту с вашего компьютера на какой-нибудь компьютер в другом конце мира, должны вместе работать множество различных аппаратных и программных средств.
Все эти элементы железа и различного ПО "говорят на разных языках". Представьте, вашу программу для E-mail: она в состоянии обмениваться информацией с операционной системой компьютера через специальный протокол, но не в состоянии "говорить" с компьютерной техникой. Нам нужны специальные программы в операционной системе, которые выполняли бы эту функцию. В свою очередь, компьютер должен быть в состоянии соединяться с телефонной линией или другой аппаратурой для подключения к Интернет. А за кулисами сетевое оборудование должно быть в состоянии соединяться, чтобы передать вашу почту от одного устройства к другому, вплоть до конечного компьютера.
Все эти разные виды протоколов связи подразделяются на 7 уровней, которые известны как модель Open Systems Interconnection Reference (модель взаимодействия открытых систем), или, сокращенно, модель OSI. Для облегчения понимания, эта модель сводится к четырёхуровневому описанию протоколов, как показано в таблице ниже:
Таблица. Упрощенная модель OSI
Название уровня Протоколы уровня
Уровень приложений HTTP, DNS, SMTP, POP, ...
Транспортный TCP, UDP
Сетевой IP, IPv6
Уровень доступа к сети PPP, PPPoE, Ethernet
Каждый уровень может использовать функциональность только уровня, расположенного ниже; каждый уровень может предоставлять функциональность уровню, расположенному выше. Другими словами: уровни взаимодействуют только со своими соседями. Возьмем пример сообщения электронной почты: вы вводите его через прикладной уровень. В вашем компьютере оно спускается до транспортного и сетевого уровня. Ваш компьютер выкладывает его в сеть через уровень доступа к сети. Это уровень, который будет перемещать сообщение по всему миру. В месте назначения принимающий компьютер примет сообщение через свой сетевой уровень, и далее оно будет предоставлено получателю через транспортный и прикладной уровни.
В действительности все гораздо сложнее.
Вам рано или поздно придется столкнуться с некоторыми сетевыми терминами; эти разделы дадут вам ряд отправных точек, когда вам захочется узнать о деталях.

Некоторые популярные сетевые протоколы

Linux поддерживает много разных сетевых протоколов. Перечислим только наиболее важные:

TCP/IP

Transport Control Protocol и Internet Protocol являются наиболее популярными способами соединения в Интернете. Множество приложений, таких как браузер и программа для электронной почты, построены в первую очередь на этом наборе протоколов.
Если уж совсем просто говорить, то IP обеспечивает отправку пакетов информации от одной машины к другой, в то время как TCP гарантирует правильную последовательность пакетов, так что пакеты различных приложений не путаются, и будут доставлены получателю в правильном порядке.
Хорошей отправной точкой для получения дополнительной информации о TCP и IP являются следующие документы:
  • man 7 ip: описание реализации протокола IPv4 на Linux (версия 4 в настоящее время наиболее широко распространенный вариант протокола IP).
  • man 7 tcp: реализация протокола TCP.
  • RFC793, RFC1122, RFC2001 для TCP, и RFC791, RFC1122 и RFC1112 для IP.
Документы содержат описания сетевых стандартов, протоколов, приложений и реализации. Эти документы находятся под управлением Internet Engineering Task Force, международной общественности, заинтересованной в бесперебойной работе Интернет и развитии его архитектуры.

TCP/IPv6

Никто не ожидал, что Интернет разрастется так быстро. В IP нашлись некоторые недостатки, связанные с большим количеством компьютеров в сети, наиболее серьезный из которых - наличие уникальных адресов, назначаемых каждому компьютеру в сети. Таким образом, IP версии 6 был способен удовлетворить потребности современного Интернет.
К сожалению, не все приложения и службы пока поддерживают IPv6. В настоящее время миграция осуществляется во многих средах, которые могут получить выгоду от обновления до IPv6. Для некоторых приложений, старый протокол все еще используется, для приложений, которые были переработаны, новая версия уже действует. Так проверка конфигурации сети иногда может быть немного запутанной, так как могут быть приняты всевозможные меры, чтобы скрыть один протокол от другого, чтобы не перепутать два соединения.
Более подробную информацию можно найти в следующих документах:
  • man 7 ipv6: реализация протокола Linux IPv6.
  • RFC1883 описании протокола Ipv6.

PPP, SLIP, PLIP, PPPOE

Ядро Linux имеет встроенную поддержку PPP (Point-to-Point-Protocol), SLIP (Serial Line IP), PLIP (Parallel Line IP) и PPPP Over EThernet. PPP - наиболее популярный способ для индивидуальных пользователей получать доступ к их ISP (Internet Service Provider), хотя в густонаселенных районах часто используется PPPOE, протокол, используемый для ADSL (Asymmetric Digital Subscriber Line) соединений.
Большинство дистрибутивов Linux предоставляют легкий в использовании инструмент для настройки Интернет-соединения. Единственное, что вам понадобится - это имя пользователя и пароль для подключения к вашему провайдеру (ISP), и номер телефона в случае PPP. Эти данные вводятся в окно для настройки, которое, вероятно, также позволит запускать и разрывать соединение с вашим провайдером.

ISDN

Ядро Linux имеет встроенные возможности ISDN. Isdn4linux управляет картами ISDN PC и может эмулировать модем с набором команд Hayes ("AT" команды). Возможности от просто использования терминальной программы до полного подключения к Интернет.
Посмотрите системную документацию.

AppleTalk

Appletalk - это название межсетевого стека Apple. Он делает возможным сетевую модель peer-to-peer, которая обеспечивает основные функциональные возможности, такие как к разделение файлов и принтеров. Каждая машина может одновременно выступать в качестве клиента и сервера, а необходимые программы и аппаратное обеспечение включены в каждый компьютер Apple.
Linux полностью поддерживает сети AppleTalk. Netatalk является реализация на уровне ядра набора протоколов AppleTalk, первоначально это было только для BSD-подобных систем. Включает поддержку маршрутизации AppleTalk, обслуживание файловых систем UNIX и AFS, использующих AppleShare, а также обслуживание принтеров UNIX и доступ к принтерам AppleTalk.

SMB/NMB

Для совместимости с MS Windows пакет Samba, включающий поддержку протоколов NMB и SMB, может быть установлен на любой UNIX-подобной системе. Протокол Server Message Block (также называемый Session Message Block, NetBIOS или протокол LanManager) используется на MS Windows 3.11, NT, 95/98, 2K и XP для доступа к дискам и принтерам.
Основными функциями пакета Samba являются: разделение дисков Linux с машинами Windows, доступ к SMB частям из машин Linux, совместное использование принтеров Linux с машин Windows и совместное использование принтеров Windows с машин Linux.
Большинство дистрибутивов Linux поставляются с пакетом samba, который делает большую часть работы при установке сервера и запускает smbd, сервер Samba, и nmbd, netbios имени сервера, загрузочное время по умолчанию. Samba можно настроить графически, с помощью веб-интерфейса или через командную строку, а также текстовые конфигурационные файлы. Демоны заставляют машину Linux представляться как хост Windows в сетевом окружении Windows; разделяемые ресурсы компьютера с Linux будут неотличимы от любого другого компьютера в среде MS Windows.
Более подробную информацию можно найти в следующих местах:
  • man smb.conf: описывает формат основного конфигурационного файла Samba.
  • Samba Project Documentation (или проверьте локальные зеркала samba.org) содержит подробное руководство об установке и тестировании, в котором также объясняется, как настроить сервер Samba в качестве основного контроллера домена. Все man-страницы также доступны здесь.

Смешанные протоколы

Linux также имеет поддержку для Amateur Radio, сетей WAN (X25, Frame Relay, ATM), InfraRed и других беспроводных соединений, но, поскольку эти протоколы обычно требуют специального оборудования, мы не будем обсуждать их в данном документе.

Конфигурация сетевых интерфейсов

Все большие дружелюбные дистрибутивы Linux поставляются с различными графическими инструментами, которые позволяют легко подключить компьютер к локальной сети, поставщику услуг Интернета или настроить беспроводное соединение. Эти инструменты могут быть запущены из командной строки или из меню:
  • Настроить Ubuntu можно так: Система → Администрирование → Сеть.
  • RedHat Linux поставляется с redhat-config-network, который имеет как графический интерфейс, так и работает в текстовом режиме.
  • YAST Suse или YaST2 представляет собой инструмент настройки "все-в-одном".
  • Mandrake/Mandriva поставляется с мастером настройки сети и Интернет, который обычно запускается из Центра управления Mandriva.
  • В системах Gnome - gnome-network-preferences.
  • В системах KDE - knetworkconf.
Системная документация содержит множество советов и информации о наличии и использовании этих программ.
Информация, которую вам необходимо предоставить:
  • Для подключения к локальной сети, например, с домашних компьютеров или на работе: имена хоста, домена и IP-адрес. Если вы хотите установить собственную сеть, лучше всего сначала почитать что-нибудь еще. На работе эту информацию компьютер может получать автоматически при загрузке. Если вы сомневаетесь, то лучше ничего не указывать, чем прописывать неизвестно что.
  • Для подключения к Интернет: имя пользователя и пароль для вашего провайдера, номер телефона при использовании модема. Ваш провайдер обычно автоматически назначает вам IP-адрес и все остальное, что необходимо для работы ваших интернет-приложений.

Сетевые конфигурационные файлы

Графические программы-помощники редактируют определенный набор конфигурационных файлов сети, используя несколько основных команд. Точные имена конфигурационных файлов и их расположение в файловой системе в значительной степени зависит от вашего дистрибутива и его версии. Тем не менее, несколько сетевых конфигурационных файлов можно найти на всех UNIX-системах:

/etc/hosts

Файл /etc/hosts всегда содержит локальный IP-адрес 127.0.0.1, который используется для связи между процессами. Никогда не удаляйте эту строку! Иногда содержит адреса дополнительных хостов, с которыми можно соединиться без использования внешней службы имен, такой как DNS (Domain Name Server).
Пример файла хостов для небольшой домашней сети:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost
192.168.52.10	tux.mylan.com		tux
192.168.52.11	winxp.mylan.com		winxp
Дополнительная информация содержится в man hosts.

/etc/resolv.conf

В файле /etc/resolv.conf настраивается доступ к DNS-серверу. Этот файл содержит ваши доменные имена и имена сервера(ов) для соединения:
search mylan.com
nameserver 193.134.20.4
Дополнительную информацию можно почерпнуть на man-страницах resolv.conf.

/etc/nsswitch.conf

Файл /etc/nsswitch.conf определяет порядок, в котором происходит связь с различными службами имен. Для использования Интернет, важно, чтобы dns появилась в строке "hosts":
[bob@tux ~] grep hosts /etc/nsswitch.conf
hosts:	files dns
Это указывает компьютеру на поиск имен хостов и IP-адресов сначала в файле /etc/hosts, и связь с сервером DNS, если данный хоста нет в локальном файле hosts. Другими возможными именами сервисов для соединения являются LDAP, NIS и NIS +.
Подробнее в man nsswitch.conf.

Сетевые конфигурационные команды

Команда ip

Специфичные для дистрибутива скрипты и графические инструменты — это надстройки к ip (или ifconfig и route на старых системах) для просмотра и настройки сетевой конфигурации ядра.
Команда ip используется для присвоения IP-адресов интерфейсам, установки маршрутов к Интернет и другим сетям, отображения конфигураций TCP/IP и так далее.
Следующие команды показывают IP-адрес и информацию о маршрутизации:
benny@home benny> ip addr show
1: lo:  mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
    inet6 ::1/128 scope host 
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 100
    link/ether 00:50:bf:7e:54:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.15/24 brd 192.168.42.255 scope global eth0
    inet6 fe80::250:bfff:fe7e:549a/10 scope link 

benny@home benny> ip route show
192.168.42.0/24 dev eth0  scope link 
127.0.0.0/8 dev lo  scope link 
default via 192.168.42.1 dev eth0 
На что стоит обратить внимание:
  • Два сетевых интерфейса даже на системе, которая имеет только одну карту с сетевым интерфейсом: "lo" является локальным узлом, используемым для внутренней сетевой коммуникации; "eth0" является общим названием для реального интерфейса. Никогда не изменяйте конфигурацию локального узла, иначе ваша машина перестанет нормально работать! Беспроводные интерфейсы, как правило, определяется как "wlan0"; модемные интерфейсы как "ppp0", хотя могут быть и другие имена.
  • IP-адреса, отмеченные как "inet": у локального узла всегда 127.0.0.1, физический интерфейс может иметь любую другую комбинацию.
  • Аппаратный адрес вашего интерфейса, который может потребоваться как часть процедуры проверки подлинности для подключения к сети, отмечен как "ether". У локального узла имеется 6 пар из нулей, физический узел состоит из 6 пар шестнадцатеричных символов, из которых первые 3 пары зависят от конкретного производителя.

Команда ifconfig

Хотя ip является самым новым способом настроить систему Linux, по-прежнему популярным является ifconfig. Используйте его без опции для вывода информации о сетевом интерфейсе:
els@asus:~$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:70:31:2C:14
          inet addr:60.138.67.31  Bcast:66.255.255.255  Mask:255.255.255.192
          inet6 addr: fe80::250:70ff:fe31:2c14/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31977764 errors:0 dropped:0 overruns:0 frame:0
          TX packets:51896866 errors:0 dropped:0 overruns:0 carrier:0
          collisions:802207 txqueuelen:1000
          RX bytes:2806974916 (2.6 GiB)  TX bytes:2874632613 (2.6 GiB)
          Interrupt:11 Base address:0xec00
	lo        Link encap:Local Loopback
	  inet addr:127.0.0.1  Mask:255.0.0.0
	  inet6 addr: ::1/128 Scope:Host
	  UP LOOPBACK RUNNING  MTU:16436  Metric:1
	  RX packets:765762 errors:0 dropped:0 overruns:0 frame:0
	  TX packets:765762 errors:0 dropped:0 overruns:0 carrier:0
	  collisions:0 txqueuelen:0
	  RX bytes:624214573 (595.2 MiB)  TX bytes:624214573 (595.2 MiB)
Также отметим наиболее важные аспекты конфигурации интерфейса:
  • IP-адрес отмечен как "inet addr".
  • Аппаратный адрес тегом "HWaddr".
Обе команды (ifconfig и ip) отображают более подробные сведения о конфигурации и ряд статистических данных о каждом интерфейсе и, наверное, самое главное, является ли он "UP" и "RUNNING".

Команды PCMCIA

На вашем ноутбуке, который вы обычно подключаете к корпоративной сети с помощью Ethernet-соединения, но которое вы сейчас настраиваете для dial-in дома или в отеле, возможно необходимо активировать карту PCMCIA. Это делается с помощью утилита управления cardctl, или pccardctl на новых дистрибутивах.
Пример использования:
cardctl insert
Теперь карта может быть настроена с помощью графического или интерфейса командной строки. До извлечения карты используйте следующую команду:
cardctl eject
Тем не менее, хороший дистрибутив должн обеспечить поддержку PCMCIA в инструментах конфигурации сети, предотвращая пользователей от необходимости выполнять команды PCMCIA вручную.

Дополнительная информация

Дальнейшее обсуждение настройки сети выходит за рамки этого документа. Вашим основным источником дополнительной информации будут man-страницы для служб, которые вы хотите установить. Дополнительное чтение:
  • Модем-HOWTO (tldp.org/HOWTO/Modem-HOWTO.html). Поможет с выбором, соединением, настройкой, поиском неисправностей и пониманием аналоговых модемов для ПК.
  • LDP HOWTO Index, раздел 4.4 (tldp.org/HOWTO/HOWTO-INDEX/networking.html). Список HOWTO по категориям об обычных сетях, протоколах, dial-up, DNS, VPNs, мостах, маршрутизации, безопасности и многом другом.
  • На большинстве систем есть версия файла ip-cref (найти его можно с помощью команды locate); формат PS этого файла можно просматривается, например, с помощью gv.

Названия сетевых интерфейсов

На Linux-машине, название устройства lo или локальный узел связано с внутренним адресом 127.0.0.1. Компьютер будет иметь сложности, заставляя ваши приложения работать, если это устройство не будет существовать; так всегда даже на тех компьютерах, которые не объединены в сеть.
Первое ethernet-устройство, eth0, в случае стандартной сетевой картой, указывает на ваш локальный адрес IP-сети. Обычные клиентские машины имеют только одну сетевую карту. Маршрутизаторы (роуторы), связующие сети между собой, имеют по одному сетевому устройству на каждую сеть, которую они обслуживают.
Если вы используете модем для подключения к Интернет, ваше сетевое устройство, скорее всего, будет называться ppp0.
Существует намного больше имен, например, для интерфейса Virtual Private Network (VPN), и множество интерфейсов могут быть активны одновременно, так что вывод команд ifconfig или ip может быть довольно длинным, если не использовать опции. Даже могут быть активны несколько интерфейсов одного и того же типа. В этом случае, они нумеруются последовательно: первый получит номер 0, второй получит суффикс 1, третий 2, и так далее. Так обстоит дело на многих серверных приложениях, на машинах с отказоустойчивой конфигурацией, роутерах, брандмауэрах и многом другом.

Проверка конфигурации хоста с помощью netstat

Кроме команды ip для отображения конфигурации сети, есть команд netstat, которая имеет много опций и, как правило, полезна в любой системе UNIX.
Маршрутизация информация может быть отображена с помощью опции -nr команды netstat:
bob:~> netstat -nr
Kernel IP routing table
Destination  Gateway      Genmask       Flags MSS Window irtt Iface
192.168.42.0 0.0.0.0      255.255.255.0 U      40 0         0 eth0
127.0.0.0    0.0.0.0      255.0.0.0     U      40 0         0 lo
0.0.0.0      192.168.42.1 0.0.0.0       UG     40 0         0 eth0
Это обычный клиентский компьютер в сети IP. У него только одно сетевое устройство, eth0. Интерфейс lo является локальным узлом.
Современный способ
Новый способ получить эту же информацию от вашей системы – использовать команду ip:
ip route show
Когда эта машина пытается соединиться с хостом, находящимся в другой сети, а не ее собственной, обозначаемый линией, начиная с 0.0.0.0, она будет посылать запросы на подключение к маршрутизатору с IP-адресом 192.168.42.1, и будет использовать основной интерфейс, eth0, чтобы сделать это.
Хосты, которые находятся в той же сети, имеют линию, начиная с 192.168.42.0, также будут соединяться через основной сетевой интерфейс, но нет необходимости в маршрутизаторе, данные просто выкладываются в сеть.
Компьютеры могут иметь гораздо более сложные таблицы маршрутизации, с большим количеством различных пар "адресат-шлюз" для подключения к различным сетям. Если у вас есть возможность подключиться к серверу приложений, например, на работе, то ради интереса проверьте информацию о маршрутизации.

Другие хосты

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

Команда host

Для отображения информации о хостах или доменах используется команда host:
[emmy@pc10 emmy]$ host www.eunet.be
www.eunet.be. has address 193.74.208.177

[emmy@pc10 emmy]$ host -t any eunet.be
eunet.be. SOA dns.eunet.be. hostmaster.Belgium.EU.net. 
  2002021300 28800 7200 604800 86400
eunet.be. mail is handled by 50 pophost.eunet.be.
eunet.be. name server ns.EU.net.
eunet.be. name server dns.eunet.be.
Аналогичная информация может быть отображена с помощью команды dig, которая предоставляет дополнительную информацию о том, каким образом записи хранятся на сервере имен.

Команда ping

Чтобы проверить, доступен ли хост, используйте ping. Если ваша система настроена отправлять более одного пакета, ping можно прервать комбинацией клавиш Ctrl + C:
[emmy@pc10 emmy]$ ping a.host.be 
PING a.host.be (1.2.8.3) from 80.20.84.26: 56(84) bytes of data.
64 bytes from a.host.be(1.2.8.3):icmp_seq=0 ttl=244 time=99.977msec
--- a.host.be ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/mdev = 99.977/99.977/99.977/0.000 ms

Команда traceroute

Чтобы проверить маршрут, по которому пакеты следуют к сетевому узлу, используйте команду traceroute:
[emmy@pc10 emmy]$ /usr/sbin/traceroute www.eunet.be
traceroute to www.eunet.be(193.74.208.177),30 hops max,38b packets
1 blob (10.0.0.1)  
       0.297ms  0.257ms  0.174ms
2 adsl-65.myprovider.be (217.136.111.1) 
       12.120ms 13.058ms 13.009ms
3 194.78.255.177 (194.78.255.177)  
       13.845ms 14.308ms 12.756ms
4 gigabitethernet2-2.intl2.gam.brussels.skynet.be (195.238.2.226)
       13.123ms 13.164ms 12.527ms
5 pecbru2.car.belbone.be (194.78.255.118) 
       16.336ms 13.889ms 13.028ms
6 ser-2-1-110-ias-be-vil-ar01.kpnbelgium.be (194.119.224.9)
       14.602ms 15.546ms 15.959ms
7 unknown-195-207-939.eunet.be (195.207.93.49) 
       16.514ms 17.661ms 18.889ms
8 S0-1-0.Leuven.Belgium.EU.net (195.207.129.1) 
       22.714ms 19.193ms 18.432ms
9 dukat.Belgium.EU.net (193.74.208.178) 22.758ms * 25.263ms
На некоторых системах traceroute может быть переименована в tracepath.

Команда whois

Специфичная информация о доменных именах может быть получена с помощью команды whois, которая разъясняется множеством whois серверов, как показано ниже:
[emmy@pc10 emmy]$ whois cnn.com
[whois.crsnic.net]

Whois Server Version 1.3

	$<--snap server message-->

   Domain Name: CNN.COM
   Registrar: NETWORK SOLUTIONS, INC.
   Whois Server: whois.networksolutions.com
   Referral URL: networksolutions.com
   Name Server: TWDNS-01.NS.AOL.COM
   Name Server: TWDNS-02.NS.AOL.COM
   Name Server: TWDNS-03.NS.AOL.COM
   Name Server: TWDNS-04.NS.AOL.COM
   Updated Date: 12-mar-2002
>>> Last update of whois database: Fri, 5 Apr 2002 05:04:55 EST <<<

The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains
and Registrars.

[whois.networksolutions.com]

        $<--snap server message-->

Registrant:
Turner Broadcasting (CNN-DOM)
   1 CNN Center
   Atlanta, GA 30303

   Domain Name: CNN.COM

   Administrative Contact:
        $<--snap contactinfo-->   
   Technical Contact:
        $<--snap contactinfo-->   
   Billing Contact:
	$<--snap contactinfo-->
   Record last updated on 12-Mar-2002.
   Record expires on 23-Sep-2009.
   Record created on 22-Sep-1993.
   Database last updated on 4-Apr-2002 20:10:00 EST.

   Domain servers in listed order:

   TWDNS-01.NS.AOL.COM		149.174.213.151
   TWDNS-02.NS.AOL.COM		152.163.239.216
   TWDNS-03.NS.AOL.COM		205.188.146.88
   TWDNS-04.NS.AOL.COM		64.12.147.120
Для других доменных имен, отличных от .com, .net, .org и .edu, возможно, потребуется указать сервер whois, например, как для этого домена .be:
whois domain.be@whois.dns.be