Дерни за веревочку, дверца и откроется. (C) Бабушка
Вы видите вот тот старый 25-Мгц 386 компьютер? Да-да, правильно, тот, который собирает пыль в углу офиса. На нем уже не запустится Windows 95, но он все еще загружается -- конечно, использовать его в качестве тумбочки еще рановато. В этой серии статей я покажу, как такая скромная коробочка может осуществлять полноценную работу в вашей сети -- предоставляя доступ в Интернет, файловые и принтерные сервисы, и даже защиту сети (firewall protection) - с помощью Линукса. Для начала, давайте установим Линукс и подключим его к сети. Подразумевается, что наши усилия основаны на очень скромном бюджете: простой модемный доступ (dialup account) до ближайшего Интернет-провайдера, безымянный модем, итд.
Остальные части этой статьи содержат следующее:
1. Введение
Если вы еще не знаете, что такое Линукс, вам было бы полезно
прочитать другие статьи на эту тему, а потом вернуться к нашей
статье.
2. Установка
Установка Линукса в настоящее время является несложной задачей -
просто возьмите один из дистрибутивов и запустите программу
установки. Перед тем как мы начнем, тем не менее, мы должны
проверить, существует ли возможность установки Линукса на
конкретную машину.
2.1. Требования к железу
Линукс умереннее в своих требованиях к ресурсам по сравнению с
большинством остальных современных операционных систем (ОС). Любой
Интел 386 или более поздний процессор подойдет. В крайнем случае
нам хватит и 40 мегабайтов жесткого диска. Хотя Линукс будет
работать и на 2 Мб памяти, практически минимальная память для
работы - 4 Мб. Хотя некоторые дистрибутивы (включая Slackware)
могут быть поставлены с такой памятью, все же 8 Мб памяти - это
базовая линия. Линукс поддерживает очень широкий спектр
оборудования, так что большинство компьютеров будут работать без
лишних хлопот. Чтобы выяснить, поддерживается ли конкретное
оборудование (hardware), посмотрите
Linux Hardware HOWTO - список поддерживаемых устройств.
Установка может производиться с дискет, с CDROMa, или через NFS по локальной сети или даже через Интернет. (Можно также поставить с локального жесткого диска, или через ftp - Прим. Пер.)
2.2. Почему я выбрал дистрибутив Slackware
В этой статье, я буду использовать дистрибутив Slackware для моих
примеров. Почему Slackware? Долгое время он был "стандартным"
дистрибутивом. Он остается дистрибутивом, который легче всего
адаптировать к вашим потребностям, если вы, конечно, не боитесь
"замарать руки". Так же в моей практике этот дистрибутив
устанавливался быстрее других. (Линукс постоянно меняется, и
утверждения автора несколько устарели. Вы можете использовать
любой другой дистрибутив с тем же успехом - Прим. Пер.)
2.3. Как установить Slackware
Программа установки Slackware проста и последовательно ведет
пользователя через все стадии установки, и даже осуществляет
некоторую базовую конфигурацию. Вместо того, чтобы просто
описывать, что делает программа установки, шаг за шагом, я
сконцентрируюсь на объяснениии того, что происходит "за сценой".
Однако, сначала вернемся на шаг назад и сделаем boot и root (загрузочная и корневая, соответственно) дискеты. Скорее всего, вы будете это делать из-под DOS (не стоит этого делать из-под Windows в DOS-окне - Прим. Пер.) с помощью программы rawrite.exe, которая есть на CD. Дискеты должны быть предварительно отформатированы под DOS, затем запустите rawrite.exe чтобы записать на дискеты boot и root отображения (images, отображения дискет, хранящиеся в виде файлов на CD)
Перегрузите компьютер с boot дискетой в дисководе "А:" Если все было сделано правильно, Slackware покажет вам приглашение для воода дополнительных параметров. Обычно, просто проигнорируйте это и нажмите Enter. Иногда, однако, вам может быть необходимо передать параметры ядру Линукса чтобы сказать, какой порт воода-вывода использует ваш CD-ROM, например. Полное описание параметров доступно в Linux BootPrompt HOWTO.
Затем ваш компьютер загрузит операционную систему Линукс и по окончании процесса загрузки он предложит заменить дискету boot на root - дискету.
Дискета root содержить изображение базовой root (корневой) файловой системы, минимальной файловой системы, с которой может быть установлен остальной дистрибутив. Как только файловая система смонтирована (mounted), вы можете войти в систему как root (login as root, root - администратор системы) и просто набрать комманду setup для запуска установки системы.
Для начала запустится программаfdisk и вас спросят, сколько партиций (partitions, то что в DOS было дисками C: D: итд. - Прим. Пер.) вы хотите создать, и какого типа они должны быть. В простейшем случае создайте 2 партиции, одну для корневой файловой системы, а вторую - для swap. Swap необходим для машины с 4 Мб памяти, и сильно рекомендован для машин с большим объемом памяти. Грубое правило - swap должен быть в два раза больше физической памяти, но всегда оставляйте себе как минимум 16 Мб общей (физической и виртуальной) памяти.
Более сложная процедура, особенно если компьютер имеет 2 или более дисков, -это создание еще нескольких партиций. Хорошим базовым разделением было бы 5 партиций:/, /usr,/var, /tmp, и swap партиция. Хотя если у вас всего один IDE диск, вы не наметите прибывления производительности. Для нескольких SCSI дисков, однако, это будет более ощутимо, если вы разнесете систему по разным дискам. Больше деталей по оптимизированию дисковых партиций вы найдете в Linux Partition mini-HOWTO.
Когда вы разобрались с партициями, вам предстоит выбрать с чего вы бутете ставить (installation media), и куда будете ставить (destination media). Обычно, это соответственно CD-ROM и жесткий диск, который вы только что разбили на партиции. Однако, вы можете выбрать установку с дискет или с NFS по сети.
Процесс установки форматирует выбранные вами партиции, используя Ext2 файловую систему по умолчанию. Не стоит выбирать другую файловую систему. Форматирование может быть быстрым или полным (с проверкой на плохие сектора); советую выбрать полное форматирование. Время форматирования, конечно, зависит от размера диска, оно немного медленнее, чем форматирование для DOS, но не забывайте что оно создает гораздо более сложную файловую систему.
Когда жесткий диск готов, вы можете выбрать наборы программы (sets
of applications) которые хотите установить. Некоторые из них
обязательны, другие желательны, остальные вы можете установить по
своему желанию. Для наших целей, необходимо установить набор
программ серий "A" и "N". Минимальная установка неплохо уместится
на партиции в 40 Мб, весь дистрибутив займет около 150 Мб (в
настоящее время дистрибутивы заметно расширили наборы программ, и
если информация относительно минимальной установки верна, то
максимальная установка займет места в раза в 3 больше - Прим.
Пер.)
3. Конфигурирование
После копирования Линукса, программа установки Slackware выполняет
несколько простых конфигурационных задач. Ниже приведен их
перечень.
3.1. Установки клавиатуры
Для всех читателей не из США предпочтительна своя раскладка
клавиатуры. Альтернативная раскладка загружается программой
loadkeys(1). Пожалкйста, будьте внимательны - некоторые версии
дистрибутива Slackware предлагают вам поменять раскладку, а затем
спокойненько продолжают использовать стандартную раскладку США!
Это легко изменить: например, чтобы использовать Английскую
клавиатуру, добавьте вот эту строчку в файл /etc/rc.d/rc.local
loadkeys /usr/lib/kbd/keytables/uk.map
Кстати, клавиатура Линукса полностью может менять раскладку. Файлы
*.map - это простые текстовые файлы, которые легко понять и
поменять. В качестве примера, на моей стандартной 102-кнопочной
клавиатуре, я поменял Caps Lock и правый Ctrl. (Я бы посоветовал
вам при начальной установке Линукса использовать раскладку США,
которая предлагается по умолчанию, а потом воспользоваться одним
из способов руссификации консоли, установив, возможно, несколько
русских кодировок - Прим. Пер.)
3.2. Мышка
Линукс поддерживает большинство типов мышек. Хотя мы не собираемся
запускать X-window на этой машине, мышка все равно очень полезна,
так как Линукс поддерживает редактирование вставкой
(cut-and-paste) с помощью мышки между разными виртуальными
консолями. Программа selection(1) создает такую возможность,
работая как демон (daemon, программа, работающая примерно как
резидентные программы в DOS - Прим. Пер.). Установите эту
программу дополнительно в ходе фазы установки. (Более популярна
программа gpm, которая предоставляет такие же возможности - Прим.
Пер.) При конфигурировании создается линк /dev/mouse который
указывает на настоящее устройство, контролирующее последовательный
порт, к которому подключена мышка.
3.3. Модем
Конфигурация модема обычно заключается в создании дополнительного
линка с устройства, к которому реально подключен модем на
/dev/modem. Любой стандатртнаы внутренний или внешний модем должен
работать, возможно, вам придется только выбрать свободное IRQ. Те
немногие модемы, которые основаны на загрузке firmware из-под DOS,
очевидно, будут для вас проблемой. Вам придется загрузить DOS,
запустить firmware, затем перегрузиться в Линукс не выключая
модем.
3.4. Имя хоста (машины)
Дайте машине имя. Наверно, у вас уже есть какие-то машины в
локальной сети, дайте такое имя, которое не будет пересекаться с
другими машинами.
4. Основная конфигурация сети
Информация о сетевых возможностях Линукса представлена в изобилии
в различных источниках, включая
Linux Journal,
NET-3 HOWTO , и
Linux Networking News.
4.1. Ethernet
Конфигурация Ethernet-а проста, и мы уже сконфигурировали сеть
программой установки. Здесь я опишу то, что программа делает "за
сценой".
Есть два скрипта, rc.inet1 и rc.inet2. Первый устанавливает основную сетевую конфигурацию, которую мы рассмотрим здесь, а второй - конфигурирует NFS, который мы рассмотрим позже.
HOSTNAME=hostname
Эта строчка устанавливет имя хоста после запуска hostname(8). Но откуда узнает hostname какое имя машины (если вы понимаете, что я имею в виду)? В Slackware, файл /etc/HOSTNAME нужно отредактировать вручную так, чтобы он содержал полное имя (fully-qualified domain name). Этот файл считывается при загрузке и используется для установки имени хоста программой hostname(8), например так:
/bin/hostname `cat /etc/HOSTNAME`
Далее, мы конфигурируем специальное устройство, называемое "lo", сокращение от "loopback" (обратная петля). Устройство loopback - это псевдо (dummy) сеть, в которой машина говорить сама с собой. У него есть стандартный адрес 127.0.0.1, и его присутствие необходимо. Мы конфигурируем:
/sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0
А сейчас дополнительная часть, которая полезна в случае, когда вы подключены к Интернет через модемную линию, и поэтому непостоянно. Мы не хотим, чтобы интернетовское имя машины было недоступно, когда соединение с Интернет прервано. Специальное устройство "dummmy" под Линуксом было разработано именно для этой цели.
/sbin/ifconfig dummy ourhost /sbin/route add ourhost
Вместо того, чтобы печатать эти значения снова и снова, мы установим их единожды:
IPADDR="192.168.1.1" # ЗАМЕНИТЕ на ВАШ IP адрес. NETMASK="255.255.255.0" # ЗАМЕНИТЕ на ВАШУ маску сети NETWORK="192.168.1.0" # ЗАМЕНИТЕ на ВАШ адрес сети! BROADCAST="192.168.1.255" # ЗАМЕНИТЕ на ВАШ широковещательный # (broadcast) адрес.
4.2. Конфигурация Ethernet устройства:
/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
Добавим маршрут (route) к локальной сети в таблицу маррутизации:
/sbin/route add ${NETWORK}
ВСЕ!
Другой файл конфигурации сети, rc.inet2, не касается нашего случая
сейчас. Однако отметьте, что он запускает несколько демонов,
включая демоны для NFS, rpc.portmapi, и другие. Программа
установки позаботится об этом за вас.
4.3. Служба имен (Name Service)
Несколько файлов в директории /etc определяют, как производится
перевод имен в IP-адреса.
Файл /etc/host.conf order hosts,bind multi on
Этот файл определяет порядок, в котором будет производиться поиск имени. В нашем примере мы определяем, что сначала поиск будет производиться в файле /etc/hosts, а затем, в случае, если имя не найдено - будет использован сервер имен (nameserver) по умолчанию (он определен, в свою очередь, в файле /etc/resolv.conf). Строка "multi on" означает, что можно использовать больше, чем один сервер имен.
Файл /etc/hosts
Этот файл содержит соотношения имен к IP адресам, которые нужны при загрузке, когда сервера имен еще недоступны. Но на самом деле, он может быть использован вместо сервера имен. Типичный минимально возможный файл будет выглядеть римерно так:
# Для loopback (это обязательно) 127.0.0.1 local localhost # Наш хост xxx.xxx.xx.xxx this.hosts # Выход в интернет xxx.xxx.x.xxx the.gateway.to.the.internet
Файл /etc/resolv.conf
nameserver 127.0.0.1 domain mycompany.com
Файл /etc/resolv.conf контролирует, как будет работать
библиотечные функции, определяющие IP адрес по имени (resolver). В
нашем примере мы определили localhost (то есть нашу машину) как
сервер имен, потому что у меня запущен кеширующий сервер имен. В
другом случае, это может быть IP адрес сервера имен вашего
интернет-провайдера -- целый лист серверов может присутствовать в
файле. Если в вашей локальной сети есть сервер имен на другой
машине, укажите его. Параметр domain указывает домен по умолчанию
для сокращенных имен хостов.
4.4. Кешируюший сервер имен
Может быть полезным установить минимальный named. Этот сервер
действует как кеш, то есть запросы проходят по сети только один
раз, после чего адресная информация сохраняется локально, уменьшая
время отклика.
Это не место описывать, как конфигурировать named. Для большей информации, есть хороший источник информации DNS HOWTO. Для более общей информации, вы можете посмотреть the UnixWorld Online "DNS Database Files" tutorial article.
Вы можете захотеть использовать Линукс как сервер имен в локальной сети. Но это уже тема последующих статей.
После того, как инсталляция закончена, необходимо добавить пароль для пользователя root, а так же добавить несколько простых пользователей. Не приучайтесь работать как пользователь root для вашей ежедневной работы. Он слишком мощный, и рано или позно вы сделаете что-то, о чем пожалеете, например, вошедшее в поговорку rm -fr /, которое сотрет ВСЕ! Slackware поставляется с милой маленькой программкой adduser, которая за вас сделает все необходимое. В любом случае, даже вручную добавить нового пользователя несложно: отредактируйте /etc/passwd, этот файл следующего формата:
user name:password:user id:group id:real name:home directory:shell имя пользователя:пароль:идентификатор пользователя:идентификатор группы:настоящее имя:домашняя директория:программная оболочка
Затем, создайте домашнюю директорию пользователя, скопируйте полезные файлы, которые могут быть в /etc/skel (обычно это базовые файлы .profile, .less и .term). Перегрузитесь и наслаждайтесь!
(Автор, к сожалению, дает нехороший совет. Постарайтесь использовать программы типа adduser, которые создают резервные копии файлов паролей. Кроме того, автор забыл переназначить права на домашнюю директорию новому пользователю. Вы можете это сделать командой типа
chown -R username.usergroupname /home/user
Здесь подразумевается что username - имя пользователя,
usergroupname - имя группы, в которую входит пользователь, обычно
users, а /home/user - это расположение его домашней директории. -
Прим. Пер.)
5. Подключение к Интернет
После установки и конфигурации Линукса наш последний шаг -
установить линк (связь) с Интернет.
5.1. Модемный (dialup) линк
Механизм установки модемного линка так сильно зависит от
конкретного Интернет-провайдера, что в статье общего плана не так
много можно сказать о его настройке. Я предпочитаю SLIP (SLIP -
название протокола передачи данных по серийной, т.е. модемной
линии), но многие интернет-провайдеры не предоставляют свободу
выбора. Опять же, я предпочитаю статический (постоянный) IP адрес,
но большинство интернет-провайдеров сейчас используют динамическое
присвоение адреса. Стоить немного больше внимания уделить модемной
или выделенной линии с постоянным IP адресом. В худшем случае, PPP
(название второго протокола) с динамическим адресом, обратитесь к
работе
Linux Dynamic IP mini-HOWTO за детальным описанием.
Пространство слишком ограничено, чтобы копаться в динамической адресации.
В качестве примера, я пробегусь по конфигурации модемного линка с моей излюбленной конфигурацией, SLIP и фиксированным IP. Процедура проста. Скрипт написан, вернее, скопирован откуда-то и затем модифицирован. Вот пример моей программы поддержка модемного IP соединения , которая заботится о установлении и прекращении линка, включая дозвон до удаленного компьютера, добавление маршрутных таблиц итд. Этот скрипт исполняется всегда, когда нужно соединение с интернет, обычно запускается программой cron(8).
Использование PPP весьма схоже. Для этого служит программа pppd, которая обычно установлена в /usr/sbin/pppd. Вот, например, вызов pppd из коммандной строки (поместите это все в скрипт, чтобы не набивать каждый раз), чтобы присоединиться к интернет-провайдеру через PPP:
pppd connect 'chat "" ATDT01716640666 CONNECT "" \ ogin: tiny1 word: duh! ocol: PPP' \ /dev/cua3 115200 -detach debug crtscts modem defaultroute \ 158.152.37.217:158.152.1.222
Где chat это другая программа, вызываемая pppd чтобы реально дозвониться и пррисоединиться к удаленному терминальному серверу.
Аргументами для программы chat являются пары строчек expect-send (жду-посылаю):
""
Ничего не ждать (не ждать приглашения)
ATDT01716640666
Строка дозвона для модема (dial string)
CONNECT
Ждем ответа
"CONNECT"
""
Посылаем RETURN (пустой текст и за ним RETURN)
ogin: tiny1 word: duh! ocol: PPP
Это последовательность строк жду-посылаю, необходимая для присоединения к моему интернет-провайдеру. Вы можете их рассматривать так же как последовательность вопросов-ответов, сначала вопрос (со стороны провайдера), потом ответ ( отвечает программа chat). Заметьте: только несколько последних букв вопроса используется в строчках, как например "word:" вместо полного "password:", это сделано для того, чтобы не обращать внимание, большая или маленькая первая буква слова.
Другие параметры следующие:
/dev/cua3 имя порта, на котором сидит мой модем. 115200 скорость
моего последовательного порта. -detach говорит pppd не работать в
фоновом режиме crtscts говорит использовать аппаратный контроль
(flow control) modem говорит pppd что это устройство - модем и
поэтому надо повесить трубку перед завершением. defaultroute
делает PPP линк маршрутом по умолчанию, (что нам и нужно), и
наконец, 158.152.37.217:158.152.1.222 назначает локальный и
удаленный IP адреса, соответственно. Если вы используете
динамический IP, надо указать опцию noipdefault чтобы запросить
второй IP адрес у удаленной машины.
6. Выделенная линия
Подключение к выделенной линии ерунда, по сравнению с тем, что мы делали перед
этим. Используйте slattach(8) для подключения SLIP интерфейса к устройству, что ниюудь
вроде:
slattach -p slip -s 19200 /dev/ttyS0
Режим -p устанавливает протокол, используемый в линии. По умолчанию используется cslip, т.е. сжатый (compressed) SLIP, PPP (Point-to-Point Protocol) и kiss (протокол AX.25 TNC). Режим -s изменяет скорость обмена в линии.
После этого командами ifconfig и route сконфигурируйте интерфейс и добавьте строку в таблице роутинга, точно также, как конфигурировали интерфейс Ethernet ранее.
/etc/ifconfig sl0 $IPADDR pointtopoint $REMADDR up /etc/route add default gw $REMADDR
7. Заключение
В конце этого процесса мы получили полнофункциональный Интернет хост,
который способен выполнять любую задачу, выполнения которой мы вправе
ожидать от такого хоста. Во время нашего следующего сеанса инсталляции,
мы сконфигурируем Файервол Firewall, который защитит нашу локальную сеть.
Автор
Paul Dunne писатель и консультант, специализирующийся в Линуксе. Он поддерживает интернет страницу, где гораздо детальнее описано то, чем он занимается.