Настройка сетевых служб

Практически в каждом компьютере имеются сетевые устройства. Для их нормальной работы необходимо правильно установить и настроить программное обеспечение поддержки сети. В этой главе описана работа со следующими сетевыми утилитами:

ifconfig– настройка сетевого интерфейса резидентной части ядра;

route– ведение таблицы маршрутов;

netconfig– установление сетевого соединения;

netstat– показывает информацию о текущих сетевых соединениях;

В главе также приведены сведения для работы со следующими конфигурационными файлами:

/etc/rc.d/rc.modules– описание модулей устройств;

/etc/inetd.conf– конфигурирование сетевых служб;

/etc/resolv.conf– описание серверов имен;

/etc/hosts– список компьютеров в сети;

Сетевое оборудование

Подключение компьютера к сети требует наличие специального аппаратного оборудования. Обычно, для подключения к сети используется сетевой адаптер (NIC, Network Interface Card), а для подключения к провайдеру Интернет — модем.

Модули ядра, которые должны быть загружены во время загрузки компьютера, загружаются из файла rc.modules, расположенного в каталоге /etc/rc.d. В стандартном файле rc.modules есть раздел Network device support, в этом разделе после блока if, находится список сетевых устройств, в виде строк, каждая из которых закомментирована. Необходимо найти нужное устройство и раскомментировать соответствующую ему строку, затем — сохранить изменения в файл. Если сценарий rc.modules будет выполнен пользователем root, то драйвер сетевого устройства должен загрузиться (так же, как и все остальные раскомментированные модули). Примечательно, что некоторые модули (такие, как драйвер ne2000) требуют указания параметров, поэтому необходимо убедиться, что выбрана правильная строка.

Сетевые устройства PCMCIA настроить проще, чем остальные. При установке системы в каталоге /etc/rc.d создается файл rc.pcmcia и каталог /etc/pcmcia, а также установятся драйверы в каталог /lib/modules/<версия_ядра>/pcmcia. Ядро автоматически определяет подключение поддерживаемых PCMCIA-устройств. В том случае, если будет вставлено сетевое устройство PCMCIA, то при загрузке необходимого модуля прозвучит звуковой сигнал. При извлечении карты, ее модуль будет автоматически выгружен.

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

Утилита ifconfig

Утилита ifconfig используется для настройки сетевого интерфейса резидентной части ядра.

Если не заданы параметры, то команда ifconfig выводит состояние устройств, активных на данный момент. Если задан только параметр interface, то ifconfig выводит только состояние заданного интерфейса; если задан аргумент -a, то будет выведено состояние всех устройств, в том числе и нефункционирующих. В остальных случаях, команда ifconfig служит для настройки. Утилиту ifconfig лучше всего изучать на примерах. Типичный вариант инициализации интерфейса выглядит следующим образом:

   # ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 netmask \ 255.255.255.0  

Эта строка активирует сетевую карту (eth0 — первый сетевой интерфейс для ethernet; для token ring используется tr0; для ppp — ppp0 и т.д.) с IP-адресом 192.168.1.10, широковещательным адресом 192.168.1.255 и сетевой маской 255.255.255.0.

Утилита route

Утилита route служит для внесения или удаления записей из таблицы маршрутов (как "на лету", так и при начальной загрузке). Команда route -n отобразит таблицу маршрутов с IP-адресами вместо имен, что используется в случае возникновения затруднений с сервером имен.

Утилита netconfig

Утилита netconfig — это часть программы установки, но может быть использована самостоятельно. Утилита netconfig достаточно проста в использовании и обеспечивает установку обычного сетевого соединения. Она может быть особенно полезна, если пользователь недостаточно подготовлен или ему просто не нравится работать с конфигурационными файлами.

Конфигурационные файлы

Файл /etc/inetd.conf

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

Файл настроек для inetd — /etc/inetd.conf. В нем определяется, какая служба, для какого соединения должна быть запущена. Например:

   ftp stream tcp nowait root /usr/sbin/tcpd proftpd -l -i -a  

Эта строка относится к FTP-серверу (File Transfer Protocol, протокол передачи данных). В приведенном примере, для обработки поступающих запросов должна быть запущена программа tcpd, которая расположена в каталоге /usr/sbin/. Эта программа обеспечивает основные требования безопасности для FTP-сервера proftpd.

Как и в большинстве системных файлов, строки в inetd.conf комментируются символом #. Активизировать и (или) остановить службу в inetd можно раскомментировав или закомментировав соответствующие строки в этом файле с последующим перезапуском inetd.

Файл /etc/resolv.conf

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

   domain home     nameserver 192.168.1.1     search home. rpunet.ru  

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

Последняя строка содержит список имен доменов, в которых следует искать сетевые имена компьютеров. Предположим, имеются компьютеры shaman.home и ws.rpunet.ru. Чтобы пропинговать их, можно просто выполнить — ping shaman и ping ws. Программа ping вначале попробует добавить .home к имени shaman, и найдет соответствующий компьютер. Для ws вначале будет опробовано имя ws.home. Соответствующий компьютер не будет обнаружен, и поэтому будет произведен поиск ws.rpunet.ru. Следует отметить, что все домены, перечисленные в search должны заканчиваться на «.», за исключением последнего.

Файл /etc/hosts

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

   127.0.0.1 localhost     192.168.1.32 pc.home pc  

Первая строка должна быть самодостаточной. Второй строки может и не быть. Допускается указывать столько имен и синонимов для одного адреса, сколько необходимо, разделяя их пробелами. В данном случае 192.168.1.32 переводится в pc.home (и наоборот), но синоним pc так же может быть использован, когда нет желания набирать .home.

Файл /etc/rc.d/rc.inet1.conf

Файл rc.inet1.conf содержит настройки для сетевых интерфейсов ethernet.

TODO: Описать синтаксис файла

Файл /etc/rc.d/rc.wireless.conf

Файл rc.wireless.conf содержит настройки для беспроводных сетевых интерфейсов wifi, работающих через ndiswrapper.

TODO: Описать синтаксис файла

Сценарии инициализации сетевых интерфейсов

/etc/rc.d/rc.inet1

Сценарий rc.inet1 читает настройки из файла /etc/rc.d/rc.inet1.conf, используется для сетевой инфраструктуры, он инициализирует устройства и устанавливает адреса и пути.

/etc/rc.d/rc.inet2

Сценарий rc.inet2 относится к другой части — установке служб и демонов и оперирует с настройками сети, обычно представляющими интерес для пользователей. Например, сценарий может содержать следующие блоки строк:

   #Start the NAMED/BIND name server:     if [ -f $NET/named ]; then       echo -n "named"       $NET/named -u daemon -g daemon     fi  

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

/etc/rc.d/rc.wireless

Сценарий rc.wireless читает настройки из файла /etc/rc.d/rc.wireless.conf, инициализирует беспроводные wifi устройства, работающие через ndiswrapper.

Настройка VPN соединения

1. В файле /etc/ppp/chap-secrets нужно заполнить поля:

 # Secrets for authentication using CHAP   # client   server   secret         IP addresses   login   *   password              *                       

2. В файле /etc/ppp/options:

 lock   #mtu 1500   #mru 1500   noauth    nobsdcomp   nodeflate   +mppe-128   debug   defaultroute  

Здесь могут быть изменения следует уточнить у провайдера какое используется шифрование: mtu,mru.

3. Предварительно должно включаться ethernet соединение.

4./etc/resolv.conf

search example.com nameserver DNS_ADRESS

прописываем DNS

После перегрузки проверяем:

# ifconfig eth0 Link encap:

Ethernet HWaddr ХХ:ХХ:ХХ:ХХ:ХХ:ХХ

inet addr:163.10.255.59 Bcast:163.10.255.255 Mask:255.255.255.0

inet6 addr: fe80::111:2wff:f9аe:5bf3/64 Scope

:Link UP BROADCAST RUNNING MULTICAST MTU:1500

Metric:1 RX packets:261 errors:0 dropped:0 overruns:0 frame:0

TX packets:329 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:28792 (28.1 KiB) TX bytes:39334 (38.4 KiB) Interrupt:20 Base address:0x400

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:256 errors:0 dropped:0 overruns:0 frame:0

TX packets:256 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0

RX bytes:17643 (17.2 KiB) TX bytes:17643 (17.2 KiB)

Сеть paботает,теперь подключаемся к VPN:

 # /usr/bin/pptp GW_ADRESS user (ваш логин)  

Чтобы убить соединение набираем

 #killall pppd  

TODO: Дописать автоподключение к VPN и проверить всё. ВНИМАНИЕ!!! Руководство по VPN не проверена. Используйте осторожно!

Cетевая файловая система

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

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

Первая часть выполняется установкой пакета tcpip-*-*-*.tgz (из раздела N) и добавкой разрешения выполнения для сценария rc.inet2.

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

   /var/media/images   pc.home(ro)  

Теперь, чтобы на компьютере pc.home подключить каталог образов к локальному каталогу /mnt возможно задать команду:

   #mount -t nfs battlecat.home:/var/media/images /mnt   

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

   /var/media/images   pc.home(rw,no_root_squash)  

Параметр rw (чтение-запись) указывает, что пользователям с pc.home разрешается запись в разделяемый каталог.

Система безопасности tcp_wrappers

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

Правила, определенные в этих файлах, могут быть довольно сложными. Вот простой пример файла /etc/hosts.deny:

   ALL: pyramid.home  

Смысл этой строки должен быть очевиден: она перекрывает доступ pyramid.home ко всем службам на данном компьютере, которые защищены при помощи tcpd.

Система tcp_wrappers гибка в настройках, а также очень полезна и эффективна. Более подробную информацию можно найти в man-страницах tcpd(8), hosts_access(5) и hosts_options(5).