Где находится файл конфигурации для inetd

Обновлено: 03.07.2024

(1) существует ли стандарт/соглашение относительно размещения в файлах конфигурации? Для системы или квази-система программ, они, кажется, обычно где-то в /etc. Это кажется менее ясным для простых прикладных программ или pgms, которые с недостаточными привилегиями для /etc.

(2)Существует несколько способов предоставления информации программе, например переменные среды, параметры командной строки, ini-файлы и т. д. При обработке параметров программы существует стандартная иерархия того, что имеет приоритет? Е. Г. ли параметр командной строки переопределить файл инициализации? Наоборот? Или это полностью зависит от разработчика?

  1. обычно system / global config хранится где-то под /etc.
  2. пользовательский config хранится в домашнем каталоге пользователя, часто как скрытый файл, иногда как скрытый каталог, содержащий не скрытые файлы (и, возможно, больше подкаталогов).

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

ваше приложение должно хранить и загружать файлы данных и конфигурации в / из каталогов, указанных следующими переменными среды:

  • $XDG_DATA_HOME (по умолчанию: "$HOME/.local/share" ): пользовательские данные.
  • $XDG_CONFIG_HOME (по умолчанию: "$HOME/.config" ): пользовательские файлы конфигурации.
  • $XDG_DATA_DIRS (по умолчанию: "/usr/local/share/:/usr/share/" ): приоритет-упорядоченный набор каталогов данных системы.
  • $XDG_CONFIG_DIRS (по умолчанию: "/etc/xdg" ): приоритет-упорядоченный набор каталогов конфигурации системы.
  • $XDG_CACHE_HOME (по умолчанию: "$HOME/.cache" ): пользовательские файлы несущественных данных.

вы должны сначала определить, если файл в вопрос есть:

  1. файл конфигурации ( $XDG_CONFIG_HOME:$XDG_CONFIG_DIRS );
  2. файл данных ( $XDG_DATA_HOME:$XDG_DATA_DIRS ) или
  3. несущественный (кэш) файл ( $XDG_CACHE_HOME ).

рекомендуется, чтобы ваше приложение помещало свои файлы в подкаталог вышеуказанных каталогов. Обычно, что-то вроде $XDG_DATA_DIRS/<application>/filename или $XDG_DATA_DIRS/<vendor>/<application>/filename .

при загрузке сначала попробуйте загрузить файл из пользовательских каталогов ( $XDG_*_HOME ) и, если не удалось, из системных каталогов ( $XDG_*_DIRS ). При сохранении сохраняйте только в пользовательских каталогах (поскольку пользователь, вероятно, не будет иметь доступа на запись в системные каталоги).

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

Новые Приложения

/.config/yourapp/* может быть INF, JSON, YML или любой формат плавает вашу лодку и любые файлы. yourapp должно соответствовать вашему исполняемому имени или быть пространством имен с вашей организацией/компанией/именем пользователя/дескриптором

Старые Приложения

конфигурация для каждого пользователя, обычно прямо в вашем домашнем каталоге.

/.yourapp/ для нескольких файлов + данные, как правило, в

глобальные конфигурации, как правило, в /etc/appname файл или .

глобальные данные приложения: /var/lib/yourapp/

кэширование данных: /var/cache/

данные журнала: /var/log/yourapp/

в структура каталогов Linux и других Unix-подобных систем и деталей каталога.

в Windows почти все программы устанавливают свои файлы (все файлы) в каталог с именем: "Program Files" в Linux это не так. Система каталогов классифицирует все установленные файлы. Все файлы конфигурации находятся в /etc , все двоичные файлы находятся в /bin или /usr/bin или /usr/local/bin . Здесь вся структура каталогов вместе с тем, что они содержат:

/ - корень каталог, который образует основу файловой системы. Все файлы и каталоги логически содержатся в корневом каталоге независимо от их физического расположения.

/bin - содержит исполняемые программы, которые являются частью операционной системы Linux. Многие команды Linux, такие как cat, cp, ls, more и tar, находятся в /bin

/boot - содержит ядро Linux и другие файлы, необходимые менеджерам загрузки LILO и GRUB.

/dev - Содержит все файлы устройств. Linux рассматривает каждое устройство как специальный файл. Все такие файлы находятся в /dev .

/etc - содержит большинство файлов конфигурации системы и скрипты инициализации в /etc/rc.d поддиректории.

/home - домашний каталог является родительским для домашних каталогов пользователей.

/lib - содержит файлы библиотеки, включая загружаемые модули драйверов, необходимые для загрузки системы.

/lost+found - каталог потерянный файл. Каждый раздел диска имеет потерянный + найденный каталог.

/media - каталог для монтажа файловых систем на съемных носителях, таких как диски CD-ROM, дискеты и Zip-накопители.

/mnt - каталог для временно смонтированных файловых системах.

/opt - дополнительные программные пакеты копировать / устанавливать файлы здесь.

/proc - специальный каталог в виртуальной файловой системе. Он содержит информацию о различных аспектах Linux система.

/root - домашний каталог пользователя root.

/sbin - содержит административные двоичные файлы. Такие команды, как mount, shutdown, umount, находятся здесь.

/sys - специальный каталог, который содержит информацию об устройствах, как видно из ядра Linux.

/tmp - временный каталог, который можно использовать в качестве scratch directory (хранилище для временных файлов). Содержимое этого каталога очищается при каждой загрузке системы.

/usr - содержит подкаталоги для многих программ, таких как X Window System.

/usr/bin - содержит исполняемые файлы для многих команд Linux. Он не является частью ядра операционной системы Linux.

/usr/include - содержит заголовочные файлы для языков программирования C и c++

/usr/lib - содержит библиотеки для Языками программирования C и C++.

/usr/local - содержит локальные файлы. Он имеет аналогичные каталоги в /usr содержит.

/usr/sbin - содержит административные команды.

/usr/share - содержит общие файлы, такие как файлы конфигурации по умолчанию, изображения, документация и т. д.

/usr/src - содержит исходный код ядра Linux.

/var - содержит различные системные файлы, такие как журнал, почтовые каталоги, спулеров печати и т. д. которые имеют тенденцию меняться в количестве и размере с течением времени.

/var/cache - помещение для хранения кэшированных данных для приложений.

/var/lib - содержит информацию, касающуюся текущего состояния приложений. Программы изменяют это при запуске.

/var/lock - содержит файлы блокировки, которые проверяются приложениями, чтобы ресурс мог использоваться только одним приложением.

/var/log - содержит файлы журнала для различных приложения.

/var/mail - содержит электронные письма пользователей.

/var/opt - содержит переменные данные для пакетов, хранящихся в директории /opt.

/var/run - содержит данные, описывающие систему с момента ее загрузки.

/var/spool - содержит данные, которые ожидают какой-то обработки.

/var/tmp - содержит временные файлы, которые сохраняются между перезагрузками системы.

Основной конфигурационный файл для xinetd — это /etc/xinetd.conf. В нем описываются настройки по умолчанию для запускаемых сервисов и директория, в которой будут находиться конфигурационные файлы, влияющие на работу конкретных сервисов. Рассмотрим по листингу 5.3 содержимое этого файла.

Листинг 5.3. Файл конфигурации /etc/xinetd.conf

logotype = SYSLOG authpriv

log_on_success = HOST PID

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

Последняя строка подключает директорию /etc/xinet.d:

В этом каталоге для каждой службы есть собственный конфигурационный файл, где можно изменить параметры. Имена файлов соответствуют названиям сервисов, а содержимое — похоже на /etc/xinetd.conf. В листинге 5.4 приведено содержимое конфигурационного файла /etc/xinet.d/telnet для сервиса Telnet.

Листинг 5.4. Конфигурационный файл для сервиса Telnet

Рассмотрим основные параметры, которые можно изменять:

? disable — если этот параметр установить в true, то сервис будет запрещен для исполнения;

? flags — атрибуты выполнения сервиса;

? socket_type — тип используемого сокета. Для протокола TCP здесь должно быть значение stream, а для протокола UDP — dgram;

? protocol — используемый для передачи данных протокол (TCP или UDP);

? server — полный путь к запускаемой программе;

? user — права доступа. В большинстве случаев можно увидеть имя пользователя root. Это нормально, потому что в ОС Linux для работы с номерами портов менее 1024 необходимы права администратора. В настоящее время большинство сервисов понижают свои права в соответствии с установками;

? instances — максимальное количество одновременно работающих экземпляров программы;

? log_type — запись событий будет производиться в указанный файл или системный журнал;

? log_on_success и log_on_failure — информация, которая будет сохраняться в журнале при удачном и неудачном входе в систему соответственно, Здесь можно указывать значения: PID, HOST или USER;

? per_source — максимальное количество соединений от одного пользователя. Их может быть несколько, потому что юзеры любят максимально нагружать каналы и повышать скорость работы с помощью создания нескольких одновременно работающих соединений;

? server_args — аргументы, с которыми будет запускаться сервер.

При рассмотрении параметра user я упомянул о необходимости прав администратора для доступа к портам с номером менее 1024. Это действительно так, но зачем это нужно? Не имея прав root, пользователь не сможет запустить сервер, который работает с портом от 1 до 1024. Такая защита необходима, потому что в данном диапазоне функционируют очень важные сервисы, и их нельзя запускать простому пользователю.

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

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Конфигурирование

Конфигурирование В качестве обобщения всего сказанного выше в заключение этого очерка я размещаю свой конфигурационный файл

/.zshrc, прокомментированный, по мере сил, подробно. Этот конфиг существует с 2001 года, кочуя с машина на машину, из системы в систему, постоянно

5.4. Демон inetd/xinetd

5.4. Демон inetd/xinetd Для того чтобы сервер смог обрабатывать запросы клиентов, программа должна быть постоянно загружена и связана с определенным портом. В этом нет ничего сложного, но зачем постоянно держать программу в памяти, особенно если она слишком большая, а работает

5.4.3. Недостатки xinetd

5.4.3. Недостатки xinetd У любой технологии есть недостатки, и inetd/xinetd не являются исключением. При подключении пользователя к одному из портов вашего сервера программа inetd (или xinetd) просматривает таблицу портов, чтобы найти сервис, который необходимо запустить, и передать ему

Использование xinetd

Использование xinetd Традиционно inetd был основным суперсервером, использовавшимся в системе Linux. Однако в 2000 г. наметилась тенденция перехода к альтернативному суперсерверу xinetd. Условно xinetd можно представить себе как сочетание inetd и TCP Wrappers. Но между этими программами

Формат файла /etc/xinetd.conf

Формат файла /etc/xinetd.conf Поскольку возможности нового суперсервера расширены по сравнению с inetd, формат конфигурационного файла также отличается от inetd. Настройка xinetd производится с помощью файла /etc/xinetd.conf. Следует заметить, что файл xinetd.conf, поставляемый в составе

8.1. Суперсерверы inetd и xinetd

8.1. Суперсерверы inetd и xinetd В данной главе пойдет речь об общей настройке Интернет-суперсерверов inetd и xinetd, а также о настройке сервера xinetd для работы с протоколом IPv6.Для начала все же определимся, почему inetd(xinetd) называется суперсервером? Да потому, что он отвечает за

8.1.5. Настройка xinetd

8.1.6. Параметры запуска xinetd

8.1.6. Параметры запуска xinetd Я надеюсь, что с настройкой более-менее все понятно. Если же мои надежды не оправдались, то в разделе 8.1.7 вы найдете пример файла /etc/xinetd.conf. Сейчас же займемся запуском только что откомпилированного и настроенного суперсервера. А запускать его

8.1.7. Пример файла конфигурации /etc/xinetd

8.1.7. Пример файла конфигурации /etc/xinetd Теперь, как и обещал, привожу пример файла конфигурации (см. листинг 8.5). В этом листинге перечислены наиболее часто используемые сервисы с оптимальными параметрами (атрибутами). Конечно же, вам предстоит решить: какие сервисы вы будете

11.3. Суперсервер xinetd

11.3. Суперсервер xinetd 11.3.1. Установка суперсервера xinetd Суперсервер xinetd появился в дистрибутивах давно (например, в Red Hat начиная еще с 7 версии) и стал достойной заменой inetd, использовавшемуся до него. Суперсервер xinetd обычно устанавливается по умолчанию во время установки

11.3.1. Установка суперсервера xinetd

11.3.1. Установка суперсервера xinetd Суперсервер xinetd появился в дистрибутивах давно (например, в Red Hat начиная еще с 7 версии) и стал достойной заменой inetd, использовавшемуся до него. Суперсервер xinetd обычно устанавливается по умолчанию во время установки системы. Одним из

11.3.2. Настройка суперсервера xinetd

11.3.2. Настройка суперсервера xinetd Все настройки суперсервера xinetd сосредоточены в файле /etc/xinetd.conf. В составе дистрибутивов Red Hat и Mandrake уже имеется такой готовый файл, но в нем содержится лишь минимальный набор установок. В него включена строка, которая указывает

11.3.3. Запуск xinetd

11.3.3. Запуск xinetd Я надеюсь, что с настройкой все более-менее понятно. Если нет, то немного ниже вы найдете пример файла /etc/xinetd.conf. Сейчас же займемся запуском только что откомпилированного и настроенного суперсервера. А запускать его можно с ключами, самые нужные из которых

11.3.3.1. Защита xinetd

11.3.3.2. Пример файла конфигурации /etc/xinetd

11.3.3.2. Пример файла конфигурации /etc/xinetd Теперь, как и обещал, привожу пример файла конфигурации. В этом листинге перечислены чаще всего используемые сервисы с оптимальными атрибутами. Конечно же, вам предстоит решить, какие сервисы вы будете использовать, а какие нет.

inetd (8) называют также ``супер-сервером Интернет'', потому что он управляет соединениями к нескольким даемонам. Программы, которые предоставляют сетевые услуги, называют даемонами. inetd выступает в качестве управляющего сервера для других даемонов. Когда inetd принимает соединение, он определяет, для какого даемона предназначено соединение, вызывает соответствующий даемон и предоставляет ему сокет. Запуск одного экземпляра inetd уменьшает общую нагрузку на систему по сравнению с запуском каждого даемона индивидуально в выделенном режиме.

В первую очередь inetd используется для вызова других даемонов, но несколько простых протоколов, таких, как chargen, auth и daytime, обслуживаются непосредственно.

Этот раздел посвящен основам настройки inetd посредством его параметров командной строки и его конфигурационного файла, /etc/inetd.conf.

19.14.2 Настройки

inetd инициализируется посредством системы /etc/rc.conf. Параметр inetd_enable по умолчанию установлен в ``NO'', однако часто включается утилитой sysinstall при выборе профиля среднего уровня безопасности. Указание

или в файле /etc/rc.conf может задать или запретить запуск inetd во время загрузки.

Кроме того, через inetd_flags даемону inetd могут быть переданы различные параметры командной строки.

19.14.3 Параметры командной строки

Формат вызова inetd:

inetd [-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname] [-p filename] [-R rate] [configuration file]

Включение отладочной информации.

Включение регистрации успешных соединений.

Включение механизма TCP Wrapping для внешних служб (по умолчанию включено).

Включение механизма TCP Wrapping для внутренних служб, которые встроены в inetd (по умолчанию включено).

Определение максимального числа одновременных запусков каждой службы; по умолчание не ограничено. Может быть переопределено индивидуально для каждой службы при помощи параметра max-child .

Определение по умолчанию максимального количества раз, которое служба может быть вызвана с одного IP-адреса в минуту; по умолчанию не ограничено. Может быть переопределено для каждой службы параметром max-connections-per-ip-per-minute .

Определяет максимальное количество раз, которое служба может быть вызвана в минуту; по умолчанию 256. Частота, равная 0, не ограничивает число вызовов.

Задает один IP-адрес, к которому делается привязка. Альтернативно может быть указано имя хоста, и в этом случае используется соответствующий этому имени хоста адрес IPv4 или IPv6. Обычно имя хоста задается, когда inetd запускается в окружении jail (8) , и в этом случае имя хоста соответствует этому jail (8) -окружению.

Если используется формат с именем хоста и требуется привязка как для IPv4, так и для IPv6, то для каждой привязки требуется запись с соответствующим типом протокола для каждой службы в файле /etc/inetd.conf. К примеру, службе на основе TCP потребуется две записи, в одной для протокола используется ``tcp4'', а в другой используется ``tcp6''.

Задает альтернативный файл для хранения ID процесса.

Эти параметры могут быть переданы в inetd при помощи inetd_flags в файле /etc/rc.conf. По умолчанию значение inetd_flags установлено в ``-wW'', что включает механизм TCP wrapping для внутренних и внешних служб inetd. Новичкам эти параметры изменять и даже задавать их в файле /etc/rc.conf не нужно.

Note: Внешняя служба является даемоном вне inetd, который запускается при получении соединения к нему. С другой стороны, внутренней службой является услуга, которую inetd предоставляет сам.

19.14.4 inetd.conf

Настройка inetd управляется через файл /etc/inetd.conf.

Если в файле /etc/inetd.conf делались изменения, то inetd можно заставить считать его конфигурационный файл повторно, послав сигнал HangUP процессу inetd, как показано здесь:

Example 19-4. Посылка сигнала HangUP процессу inetd

Пример записи для даемона ftpd, использующего IPv4:

Это имя сервиса, предоставляемого конкретным даемоном. Оно должно соответствовать сервису, указанному в файле /etc/services. Здесь определяется, какой порт должен обслуживать inetd. При создании нового сервиса он должен помещаться сначала в файл /etc/services.

stream , dgram , raw либо seqpacket . stream должен использоваться для ориентированных на соединение даемонов TCP, когда как dgram используется для даемонов, использующих транспортный протокол UDP.

Одно из следующих:

Протокол Описание
tcp, tcp4 TCP IPv4
udp, udp4 UDP IPv4
tcp6 TCP IPv6
udp6 UDP IPv6
tcp46 TCP как для IPv4, так и для v6
udp46 UDP как для IPv4, так и для v6

wait|nowait определяет, может ли даемон, вызванный из inetd, работать с собственным сокетом, или нет. Сокеты типа dgram должны использовать параметр wait, когда как даемоны с потоковыми сокетами, которые обычно многопоточны, должны использовать nowait . wait обычно передает много сокетов одному даемону, когда как nowait порождает даемон для каждого нового сокета.

Максимальное число порожденных даемонов, которых может создать inetd, может быть задано параметром max-child . Если нужно ограничение в десять экземпляров некоторого даемона, то после параметра nowait нужно задать /10 .

Кроме max-child , может быть задействован другой параметр, ограничивающий максимальное число соединений от одного источника. max-connections-per-ip-per-minute служит именно для этого. Здесь значение, равное десяти, будет ограничивать любой заданный IP-адрес на выполнение десяти попыток подключения к некоторому сервису в минуту. Это полезно для предотвращения намеренного или ненамеренного расходования ресурсов и атак типа Denial of Service (DoS) на машину.

В этом поле wait или nowait обязательны. max-child и max-connections-per-ip-per-minute опциональны.

Многопоточный даемон типа stream без ограничений max-child или max-connections-per-ip-per-minute будет определен просто вот так: nowait

Тот же самый даемон с ограничением в максимум десять даемонов будет определен так: nowait/10

Наконец, та же конфигурация с ограничением в двадцать соединений на IP-адрес в минуту и общим ограничением в максимум десять порожденных даемонов выглядит так: nowait/10/20

Эти параметры, используемые все со значениями по умолчанию даемоном fingerd, имеют такой вид:

Поле user является именем пользователем, под которым должен работать соответствующий даемон. Чаще всего даемоны работают как пользователь root. Для обеспечения безопасности некоторые серверы запускаются как пользователь daemon или как пользователь с минимальными правами nobody.

Полный маршрут к даемону, который будет выполняться при установлении соединения. Если даемон является сервисом, предоставляемым самим inetd, то нужно задать ключевое слово internal .

Этот параметр работает вместе с параметром server-program , задавая параметры, начиная с argv[0], передаваемые даемону при запуске. Если в командной строке задано mydaemon -d, то mydaemon -d будет являться значением для server program arguments . И снова, если даемон является внутренней службой, то здесь нужно использовать internal .

19.14.5 Безопасность

Некоторые даемоны не заботятся о безопасности и имеют большие таймауты для соединений или вообще их не имеют. Это позволяет атакующему неспешно устанавливать соединения к конкретному даемону, истощая имеющиеся ресурсы. Может оказаться полезным задать для некоторых даемонов ограничения ip-per-minute и max-child .

По умолчанию механизм TCP wrapping включен. Обратитесь к справочной странице по hosts_access (5) для получения более подробной информации о задании ограничений TCP для различных даемонов, запускаемых посредством inetd.

19.14.6 Разное

daytime, time, echo, discard, chargen и auth все являются услугами, предоставляемыми самим inetd.

Сервис auth предоставляет идентификационные сетевые услуги (ident, identd) и поддается настройке.

Обратитесь к справочной странице по inetd (8) для получения более подробной информации.

Как и большинство наиболее интересных вещей, которые вы можете делать с компьютером, подключение его к сети требует специального аппаратного оборудования. Возможно вам понадобится NIC (Network Interface Card - карта сетевого интерфейса), для подключения к LAN, возможно модем для подключения к провайдеру интернет, а может быть и оба (или несколько каждых из выше перечисленных, а может и ни одного).

При настройке удобно разделить аппаратные средства на скажем, PCMCIA (для laptop-ов) и не-PCMCIA категории. Суть этого разделения в том, что сейчас PCMCIA оборудование не поддерживается стандартной поставкой ядра, но поддерживается отдельным пакетом, включающим необходимые драйвера (как модули ядра) и некоторые программы для настройки и управления PCMCIA устройствами. Всё остальное, конечно, управляется стандартной поставкой ядра 16 .

netmods

Драйвера сетевых устройств, поддерживаемых ядром, включены в пакет netmods ( slakware/n3/netmods.tgz ) 17 . Если вы ещё не установили этот пакет, то сейчас самое время установить его. (См. раздел 5.9, для получения информации о том, как устанавливать отдельные пакеты программ.)

Ниже, после блока ''if'', находится список сетевых устройств и modprobe строчек, каждая из которых прокомментированна. Найдите ваше устройство и раскомментируйте соответствующую modprobe строчку, не забудьте сохранить изменения в файл. Если вы выполните, как root пользователь, rc.modules , то драйвер вашего устройства должен загрузиться (так же, как и все остальные откомментированные модули). Обратите внимание, что некоторые модули (такие, как драйвер ne2000) требуют указания параметров; убедитесь, что вы выбрали правильную строчку.

Сетевые устройства PCMCIA

К сожалению, если вы обновите ядро, вам скорее всего понадобится перекомпилировать pcmcia-cs, чтобы обновить драйвера. Естественно, исходный текст поставляется с дистрибутивом; поищите в /source/a/pcmcia каталоге исходники, сценарии и загляните в документацию.

4.2.2 Сетевые утилиты

ifconfig

Ну вот, ваше ядро уже умеет общаться с сетевым оборудованием. Теперь надо научить программы указывать ядру куда передавать информацию, и наоборот. Нам надо настроить интерфейс. Нам нужен ifconfig(8).

ifconfig лучше всего изучать на примерах; вы можете захотеть просто заглянуть в ваш rc.inet1 файл (описанный в разделе 4.2.4), чтобы посмотреть, как программа запускается оттуда. Типичный вариант выглядит следующим образом:

Эта строчка поднимает eth0 (первый сетевой интерфейс; для token ring используется tr0, для ppp - ppp0, и т.д.), с IP адресом 192.168.1.10, широковещательным адресом 192.168.1.255 (вся подсеть 192.168.1.) и сетевой маской 255.255.255.0 (показывает, что три первых части IP адреса относятся к сети, а .10 относится к вашему хосту). До тех пор, пока вы не делаете что-то очень неординарное, вы можете почти всегда использовать широковещательный адрес, состоящий из первых трёх блоков вашего IP, и завершающийся числом 255. Так же, почти всегда вы можете пользоваться маской сети 255.255.255.0. Если вы делаете что-то неординарное, вы наверное знаете достаточно, и эта часть книги вам вовсе не понадобится.

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

route

Для того, чтобы знать, какую куда посылать информацию, ядро использует роутинговую таблицу (routing table). Я не собираюсь углубляться в подробности, но вы можете просмотреть эту таблицу при помощи /sbin/route(8). route -n выдаст вам таблицу IP адресов вместо имён; это полезно в случае возникновения затруднений с вашим сервером имён или если вы просто не интересуетесь иллюзорным миром доменных имён. К счастью, если вам надо настроить простую сеть (как и большинству людей), то 2.2 ядро автоматически создаст роутинговую таблицу за вас.

netconfig

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

Затем вам предложат ввести имя хоста и домена вашего компьютера. Скорее всего вы можете ввести просто что-нибудь, если конечно вы не настраиваете сервер, которым будут пользоваться много народа. Затем вас спросят, будете ли вы использовать статический IP, динамический DHCP, или же просто loopback.

Если вы не будете подключены к сети, выберите loopback. Если вы настраиваете компьютер, который будет подключён к университетской или большой офисной сети, то наиболее вероятно, вам придётся выбрать DHCP. Иначе выбирайте статичный адрес. Если вы не выбрали статичный адрес, то на этом программа завершиться. Если же вы выбрали статичный адрес, то вам будет необходимо указать IP вашего компьютера, маску сети, широковещательный адрес и адрес сервера имён. netconfig подскажет вам, как выяснить все эти параметры.

pppsetup

В Slackware есть pppsetup - утилита для настройки dialup соединения к ISP (Internet Server Provider). Она находится в ppp.tgz пакете из раздела программ N. pppsetup использует такой же интерфейс, как и программа установки. Если вы не помните, как пользоваться этим интерфейсом, то вернитесь к разделу 3.1.2, для получения справки. pppsetup задаст вам много вопросов и установит несколько конфигурационных файлов в /etc/ppp . Как root запустите pppsetup; давайте пройдёмся по списку вопросов.

Phone number Здесь вам следует указать номер вашего ISP, с указанием в качестве префикса, типа набора номера. Для большинства людей тональный набор будет правильным выбором 18 . Если номер вашего провайдера 555-1013 и вы используете тональный набор, то вам надо ввести atdt5551013 19 . Если на вашей телефонной линии есть call waiting (ожидание звонка) и вы хотите отключить этот режим во время работы с провайдером, то введите что-то вроде atdt*70,5551013. Запятая необходима. Она вставляет 1,5 секундную паузу после *70, чтобы отключить режим ожидания звонка. Без запятой это не сработает.

Modem device Здесь вам следует выбрать, куда подключён ваш модем. Если вы знаете на каком COM порте он был под Windows, то вы можете выбрать из списка эквивалент. Иначе вам придётся поэкспериментировать. Наиболее логично начать с ttyS0 и пройтись по списку.

Modem baud rate Подберите baud rate, который наиболее близок вашему модему. Если вы не знаете baud rate, обратитесь к документации вашего модема.

Callback Теперь вам понадобится вся информация, предоставленная вам вашим ISP. Очень немногие ISP используют callback, так что скорее всего, вы можете спокойно ответить ''No'' на этот вопрос. Callback, это когда вы вначале звоните ISP, а затем они перезванивают на ваш номер, и только тогда вы можете войти в сеть. Если вам надо использовать callback, то ответьте ''Yes'' на этот вопрос. Тогда вам будет предложено ввести номер вашего телефона, login и пароль. Возможно, вам не понадобится вводить ваши начальные логин и пароль. Ну и наконец, последний вопрос: какую из схем идентификации (authentication) использует ваш провайдер. Если это CHAP или PAP, то ответьте ''Yes''. Позже вам необходимо будет настроить это. Смотрите ниже, как это сделать. Если они не пользуются вышеперечисленными методами, то ответьте ''No'' и смотрите раздел ''Chat script'' ниже.

Modem init string Если у вас не какой-то необычный модем, то вам скорее всего можно просто нажать ввод, чтобы выбрать строку инициализации модема по умолчанию (''AT&FH0''). Иначе, смотрите документацию вашего модема. И найдите там строку инициализации, рекомендованную для вашего модема.

DNS IP address Ваш ISP должен предоставить вам IP адрес их сервера имён. Если он у вас есть, введите его тут. Иначе обратитесь к ISP, чтобы узнать его 20 .

Authentication method Вам необходимо узнать у ISP, пользуются ли они CHAP, PAP, или ни одним из них при идентификации пользователя. Проще всего узнать это, позвонив вашему ISP. Тем не менее, если после набора номера вы увидите приглашение login и password после соединения, то наиболее вероятно, вам следует воспользоваться ''SCRIPT''. Иначе, обратитесь к ISP, чтобы выяснить, каким методом пользоваться.

4.2.3 Файлы /etc

/etc/inetd.conf

Для операционной системы, ориентированной на сетевое использование, вполне нормальным является запуск различных сетевых сервисов. Обычно для каждого из сервисов должна существовать программа, которая будет сидеть и слушать запросы по соединениям. Что может стать обременительным для системы, если в ней запущенно слишком много различных сервисов. Для уменьшения загрузки системы была создана программа inetd. inetd - это ''интернет-суперсервер''. Эта программа слушает запросы по многим socket-ам, и когда поступает запрос, inetd передаёт управление соответствующему серверу, для обработки запроса. Таким образом вместо нескольких ожидающих серверов, запущен только один.

Файл настроек для inetd - /etc/inetd.conf . В нём определяется, какой сервер должен быть запущен для какого соединения. В man страничке для inetd(8) вы, конечно, можете найти больше информации о использовании программы. Давайте быстренько пробежимся по основным сервисам:

ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -l -i -a

Эта строчка относится к ftp серверу. Обратите внимание, вначале идёт имя протокола - ''ftp'', а в конце - программа, которая должна быть запущена для ответа на запрос. В приведённом примере, программа, которая должна быть запущена для ответа на поступивший запрос соединения - это /usr/sbin/tcpd ; это программа ''wraper'', которая обеспечивает основные требования безопасности для того сервера, для которого она запущена. wu.ftp фактически и есть наш ftp сервер 21 , но tcpd запускает его для вас. Больше информации вы можете найти в разделе 4.2.7.

/etc/resolv.conf

Этот файл сообщает всей основной системе, откуда брать DNS информацию. Все серверы имён, которыми вы пользуетесь, перечислены здесь, так же и имя домена вашего хоста. Вот вам пример этого фала (с laptop-а на котором я печатаю всё это - ninja.tdn):

Первая строчка описывает имя домена для ninja; это всё что идёт после имени домена в моём адресе. Вторая - DNS сервер в нашей домашней сети. Вы можете прописать их столько, сколько захотите; они будут обработаны в том порядке, в котором записаны, когда какой-то программе необходимо найти IP адрес, соответствующий какому-то доменному имени.

/etc/hosts

Файл hosts позволяет осуществить простейший способ поиска хостов в домене. Он представляет собой список хостов и соответствующих им IP адресов. Это полезно в небольших сетях, где использование DNS не оправдано, так же этот файл используется во время загрузки системы, когда сервер имён ещё не доступен. Мой выглядит следующим образом:

127.0.0.1 localhost
192.168.1.32 ninja.tdn ninja

Первая строчка должна быть само-достаточной. Вторая может и не быть. Вы можете указать столько имён и синонимов для одного адреса, сколько захотите, разделяя их пробелами. Итак, у меня ''192.168.1.32'' переводится в ''ninja.tdn'' (и наоборот), но синоним ''ninja'' так же может быть использован, когда мне лень набирать ''.tdn'' (как обычно и происходит).

4.2.4 rc.inet1

/etc/rc.d/rc.inet1 это файл, используемый для сетевой ''инфраструктуры'' - он инициализирует устройства и устанавливает адреса и пути. rc.inet1 , поставляемый Slackware, достаточно подробно прокомментирован, так что мы повторимся если повторим всё это здесь.

4.2.5 rc.inet2

Файл /etc/rc.d/rc.inet2 относится к другой части сети: установке сервисов и демонов 22 и оперирует со всеми интересными настройками сети. Давайте рассмотрим блок для примера:

Важна здесь четвёртая строчка, которая запускает named(8). Всё остальное лишь дополнения: ''if'' проверяет существует ли named программа там, где она должна быть, а echo строчка выдаёт на экран, что программа named запускается, при загрузке системы. Большинство серверов, запускаемых из rc.inet2 , загружаются блоками вроде этого; простая проверка того, есть ли какие-то серьёзные причины, чтобы не запускать их, вывод информации о том, что они запускаются, и затем команды, загрузки самих сервисов. Опять таки, rc.inet2 достаточно подробно прокомментирован; погрузитесь в него на какое-то время, и вы найдёте много полезной и интересной информации.

4.2.6 NFS (Сетевая Файловая Система)

Сетевая Файловая Система используется в основном, чтобы разделять файлы в сети для общего использования. Здорово в NFS то, что она разработана таким образом, что одна машина может монтировать разделяемые ресурсы другой и обходиться с ними, как с локальными файлами.

Для настройки NFS необходимо проделать несколько действий. Первым делом соответствующие сервисы должны быть запущенны на сервер-машине: potmap(8), nfsd(8) и mountd(8). Второе - сервер должен соответствующим образом ''экспортировать'' дерево файловой системы клиенту, что осуществляется через exports(5) файл из /etc .

Первая часть выполняется установкой tcpip1.tgz пакета (из N раздела) и добавкой разрешения выполнения для rc.inet2 . /etc/exports немного более забавен.

Предположим, у нас есть каталог с образами на battlecat.tdn, который мы хотим подключить к ''ninja.tdn''. На battlecat, нам нужна строчка в /etc/exports которая выглядит следующим образом:

/var/media/images ninja.tdn(ro)

Теперь на ninja мы можем просто задать команду:

чтобы подключить каталог образов к локальному каталогу /mnt. К сожалению, я запретил сам себе запись в разделяемый каталог - указанием параметра ''(ro)'' в фале /etc/exports машины battlecat, который означает ''только для чтения''. Все такие параметры следует указывать после имени клиента, в скобках, разделённые запятыми. Например:

/var/media/images ninja.tdn(rw,no_root_squash)

''rw'' означает ''чтение-запись'' (см.exports(8) man страницу для получения подробностей), пользователям с ninja разрешается запись в разделяемый каталог. Мне не нравится squash, так что я думаю, что оставлю его вам для самостоятельного изучения через его man страницу; если вы планируете много работать с NFS, то exports(8) станет вашим лучшим другом.

4.2.7 tcp_wrappers

tcp_wrappers - это основная система предотвращения (а так же разрешения) доступа к сервисам со специфических хостов. Он работает следующим образом: inetd (интернет суперсервер) запускает много серверов, большинство из которых ''окутаны'' (от английского wrap) программой tcpd. Другими словами, tcpd на самом деле запускает эти серверы, но inetd не знает этого (или, точнее его это не интересует). tcpd логирует попытки соединения, и затем проверяет фалы /etc/hosts.allow и /etc/hosts.deny , чтобы проверить, разрешать ли доступ к запрашиваемому сервису.

Правила, определённые в этих файлах могут быть довольно сложными, но давайте предположим, что pyramid.tdn действительно насаждает и не хочет оставить бедную маленькую машину mojo.tdn в покое. На mojo.tdn можно прописать следующую строчку в /etc/hosts.deny :

ALL: pyramid.tdn

Смысл этой строчки должен быть очевиден: она перекрывает доступ хосту pyramid ко всем сервисам на mojo, которые защищены при помощи tcpd. Если меня в добавок к pyramid раздражает весь домен .annoying.domain, я могу записать строчку:

ALL: pyramid.tdn, .annoying.domain

Подождите! Мой друг Hobbes застрял за компьютером в этой .annoying.domain, и я хочу предоставить ему доступ к моему компьютеру (но только не его раздражающим меня дружкам). Это достаточно просто. Оставим hosts.denny в покое, и обратимся к hosts.allow. Следующая строчка откроет Hobbes-у доступ:

ALL: hobbes.annoying.domain

Для подробностей смотрите tcpd(8), hosts_access(5) и hosts_options(5). Система tcp_wrappers гораздо более гибка в настройках, чем приведённые примеры, и очень полезна и эффективна при более подробном изучении.

Читайте также: