Файлы rc являются конфигурационными скриптами системы. Эти файлы выполняются скриптом init, который запускается при загрузке системы и в свою очередь запускает основные "демоны" системы (такие как sendmail, cron и т.д.) и конфигурирует параметры сети, устанавливает имя компьютера и т.п. Обычно файлы rc находятся в каталоге /etc/rc.d, однако в некоторых версиях их помещают в каталог /etc. Дистрибутивы Slackware используют файлы rc.inet1 и т.д.\ в каталоге /etc/rc.d, а дистрибутивы RedHat и другие используют набор каталогов.
Далее будут описываться файлы rc, с помощью которых конфигурируется программное обеспечение протокола TCP/IP. Таких файлов два: rc.inet1 и rc.inet2. Файл rc.inet1 служит для конфигурирования основных параметров сети (например, устанавливает IP-адрес и информацию о маршрутах), а файл rc.inet2 запускает демоны TCP/IP (telnetd, ftpd и т.д.).
Во многих версиях системы эти два файла объединяются в один, называемый rc.inet или rc.net. Имя rc-файла не имеет значения; важно, чтобы он правильно исполнял свои функции и запускался во время загрузки скриптом init. Последнее обеспечивается соответствующими строками в файле /etc/inittab (при необходимости этот файл нужно отредактировать, "раскомментировав" строчки, относящиеся к нужным rc-файлам). В худшем случае пользователю придется создавать самому файлы rc.inet1 и rc.inet2 "с нуля" и добавить запускающие их строчки в файл /etc/inittab.
Как уже говорилось выше, файл rc.inet1 производит основное конфигурирование сетевого интерфейса. Сюда входит задание IP-адреса компьютера и информации о таблице маршрутов сети. Таблицы маршрутов используются для того, чтобы направлять входящие в сеть и выходящие из сети датаграммы (datagrams). В самом простом случае имеется всего три маршрута: один для пакетов, посылаемых на данный компьютер, второй -- на другие компьютеры в той же сети, и третий -- на компьютеры вне локальной сети (через шлюз). Для конфигурирования этих параметров используются две программы: ifconfig и route. Обе программы обычно находятся в каталоге /etc.
Программа ifconfig используется для конфигурирования интерфейса сетевых устройств. При этом задаются такие параметры, как IP-адрес, маска, широковещательный адрес и т.п. Программа route используется для создания и изменения элементов в таблице маршрутов.
Для большинства конфигураций файл rc.inet1 может выглядеть примерно следующим образом. Этот пример, разумеется, следует приспособить к конкретному компьютеру и не использовать те IP-адреса, которые указаны в этом примере (они соответствуют некоторым конкретным компьютерам в сети Интернет).
#!/bin/sh
# Это пример файла /etc/rc.d/rc.inet1 - конфигурирование
# интерфейсов TCP/IP
# Сначала конфигурируем сетевую заглушку
HOSTNAME=`host name`
/etc/ifconfig lo 127.0.0.1 # используется маска
# по умолчанию 255.0.0.0
/etc/route add 127.0.0.1 # маршрут к сетевой заглушке
# Теперь конфигурируем устройства Ethernet. Если используются только
# сетевая заглушка и/или SLIP, закомментируйте остальные строки.
# Измените на значения для своего компьютера
IPADDR="128.253.154.32" # ЗАМЕНИТЕ на ВАШ IP-адрес
NETMASK="255.255.255.0" # ЗАМЕНИТЕ на ВАШУ маску
NETWORK="128.253.154.0" # ЗАМЕНИТЕ на адрес ВАШЕЙ сети
BROADCAST="128.253.154.255" # ЗАМЕНИТЕ на широковещательный
# адрес ВАШЕЙ сети, если он есть.
# Если нет, оставьте свободное
# место и продолжайте редактировать
# дальше.
GATEWAY="128.253.154.1" # ЗАМЕНИТЕ на адрес ВАШЕГО шлюза
/etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
# Если у вас нет широковещательного адреса, то замените
# предыдущую строчку на следующую:
# /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK}
/etc/route add ${NETWORK}
# Следующая строчка нужна только в случае, если есть шлюз
# (т.е. сеть связана с внешним миром)
/etc/route add default gw ${GATEWAY} metric 1
# Конец конфигурирования подключения Ethernet
Еще раз отметим, что для конкретной конфигурации компьютера этот файл, возможно, придется в чем-то изменить. Приведенных в данном примере инструкций достаточно для сети простой конфигурации, однако для всех возможных конфигураций этого примера будет определенно недостаточно.
Файл rc.inet2 запускает различные серверы, входящие в обеспечение протокола TCP/IP. Наиболее важным из них является сервер inetd. Этот сервер находится в фоновом режиме и наблюдает за работой сетевых портов. Когда к компьютеру пытаются обратиться через какой-либо порт (например, на этот порт приходит команда telnet), сервер inetd создает для этого порта копию соответствующего демона (в случае прихода команды telnet это будет демон in.telnetd). Это оказывается проще, чем иметь сразу несколько отдельных работающих демонов (т.е. отдельных копий telnetd, ftpd и т.д.). В принятой схеме они запускаются по мере надобности программой inetd.
Демон syslogd -- это демон протоколирования входов (login) в систему. Он собирает сообщения о входах в систему и складывает их в файлы протоколов согласно конфигурации, содержащейся в файле /etc/syslogd.conf. Функции сервера routed -- поддерживать динамическую информацию о маршрутах. Если компьютер пытается послать пакеты сообщений на другую сеть, то для этого ему могут потребоваться дополнительные данные в таблице маршрутов. Заботы о действиях с таблицей маршрутов берет на себя сервер routed, и пользователь может не вмешиваться в этот процесс.
В приведенном ниже примере файл rc.inet2 запускает лишь необходимый минимум серверов. Помимо указанных, существует еще много других серверов, и многие из них относятся к конфигурированию NFS. Однако при попытке конфигурировать программное обеспечение протокола TCP/IP лучше всего начинать с минимальной конфигурации, а более сложные элементы (такие, как NFS) добавлять, когда часть программ уже работает.
Также отметим, что в приведенном ниже файле предполагается, что демоны работы в сетях располагаются в каталоге /etc. Разумеется, для конкретной конфигурации этот файл может быть отредактирован.
#! /bin/sh # Пример файла /etc/rc.d/rc.inet2 # Запуск демона syslogd if [ -f /etc/syslogd ] then /etc/syslogd fi # Запуск сервера inetd if [ -f /etc/inetd ] then /etc/inetd fi # Запуск сервера routed if [ -f /etc/routed ] then /etc/routed -q fi # Готово!
Среди дополнительных серверов, которые могут быть запущены скриптом rc.inet2, имеется сервер named. Это сервер имен в сети, и его функция состоит в том, чтобы преобразовывать (локальные) IP-адреса в имена компьютеров и обратно. Если в сети нет другого сервера имен или если требуется дать (локальные) имена другим компьютерам того же домена, можно воспользоваться этим сервером (однако для большинства конфигураций это оказывается ненужным). Конфигурирование сервера named является довольно сложным и требует предварительного планирования; тем, кому это интересно, можно порекомендовать обратиться к книгам по администрированию сетей TCP/IP.