Опубликован: 22.06.2005 | Уровень: для всех | Доступ: платный | ВУЗ: Компания IBM
Лекция 15:

Сетевые и серверные возможности

< Лекция 14 || Лекция 15: 12345 || Лекция 16 >
Аннотация: В первой части лекции описана настройка сетевых параметров Linux и даны примеры того, как реализованы постоянные сетевые настройки в некоторых дистрибутивах. Кроме этого, описаны основные системные службы, имеющие отношение к настройке сети: служба автоматической настройки и межсетевой экран. Вторая часть лекции представляет собой краткий обзор основных сетевых служб и описание различных серверов Linux, которые можно использовать для организации таких служб.

Настройка сети

Итак, с работой сети в Linux Мефодий немного ознакомился, однако как эту сеть использовать для личных нужд, понятнее не стало. Прежде всего: как приучить имеющийся компьютер пользоваться имеющейся локальной сетью?

Настройка вручную

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

Задать IP-адреса интерфейсам eth0 и lo можно уже известной командой ifconfig:

[root@sakura root]# ifconfig
[root@sakura root]# ifconfig eth0 inet 192.168.102.125 netmask
255.255.255.0\
broadcast 192.168.102.255
[root@sakura root]# ifconfig lo inet 127.0.0.1 netmask 255.0.0.0\
broadcast 127.255.255.255
[root@sakura root]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:56:C1:36
inet addr:192.168.102.125 Bcast:192.168.102.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6765 (6.6 Kb) TX bytes:8753 (8.5 Kb)
Interrupt:17 Base address:0x1080
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@sakura root]# ping -c1 192.168.102.1
PING 192.168.102.1 (192.168.102.1) 56(84) bytes of data.
64 bytes from 192.168.102.1: icmp_seq=1 ttl=64 time=0.613 ms
--- 192.168.102.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.613/0.613/0.613/0.000 ms
Пример 15.1. Настройка сетевых интерфейсов

Заметим, что вместе с IP-адресом необходимо указывать и сетевую маску, и широковещательный адрес сети. Теперь пакеты доходят до любого абонента локальной сети, но не дальше, поскольку не задан ни один маршрутизатор. Добавить маршрутизатор можно командой route add:

[root@sakura root]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.102.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
[root@sakura root]# ping 209.173.53.26
connect: Network is unreachable
[root@sakura root]# route add default gw 192.168.102.1
[root@sakura root]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.102.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.102.1 0.0.0.0 UG 0 0 0 eth0
[root@sakura root]# ping 209.173.53.26
64 bytes from 209.173.53.26: icmp_seq=1 ttl=114 time=166 ms
. . .
Пример 15.2. Добавление маршрутизатора по умолчанию

Мефодий заметил, что две записи уже были в таблице маршрутизации до выполнения команды route add: относительно локальных сетей 192.168.102.0/24 и 127.0.0.0/8. Эти записи появились там в результате настройки сетевых интерфейсов: для пополнения таблицы достаточно было адреса и сетевой маски. Не хватало только явного указания маршрутизатора. Ключевое слово default заменило параметр -net 0.0.0.0 (из предыдущей лекции известно, что сети 0.0.0.0/0 в таблице маршрутизации принадлежит любой адрес), а параметр gw означает "gateway", т. е. маршрутизатор.

Тем не менее, служба доменных имен пока не работает: необходимо заполнить файл /etc/resolv.conf:

[root@sakura root]# ping www.ru
ping: unknown host www.ru
[root@sakura root]# cat /etc/resolv.conf
[root@sakura root]# cat > /etc/resolv.conf
domain nipponman.ru
nameserver 192.168.102.1
[root@sakura root]# ping www.ru
PING www.ru (194.87.0.50) 56(84) bytes of data.
64 bytes from www.ru (194.87.0.50): icmp_seq=1 ttl=55 time=84.3 ms
. . .
[root@sakura root]# update_chrooted conf
Пример 15.3. Определение домена и DNS-сервера

Последнюю команду присоветовал Гуревич. Дело в том, что подсистему, работающую с DNS, нередко "сажают в песочницу", то есть переносят в отдельный каталог, в котором выполняется chroot. Как сказано в лекции 12, в такой "песочнице" должны быть все нужные для работы файлы – и уж конечно процедурам DNS необходим свой файл-копия /etc/resolv.conf. Информация о том, кому и что нужно копировать при изменении профиля системы, обычно хранится централизованно и управляется несложными сценариями. В данном дистрибутиве команда update_chrooted conf как раз и копирует все изменившиеся конфигурационные файлы по "песочницам".

Настройка при установке или загрузке системы

Мефодий очень обрадовался заработавшей сети и немедленно принялся сочинять простейший стартовый сценарий, который выполнял бы все нужные команды автоматически. Выяснилось, что такой сценарий уже есть в любом дистрибутиве Linux, хотя называться он может по-разному – как правило, /etc/init.d/network или networking. Как и полагается стартовому сценарию, с параметром start он настраивает сеть, а с параметром stop – "выключает" сетевые настройки.

Безусловно, ни список сетевых интерфейсов, ни параметры их настройки не указаны в самом стартовом сценарии, как хотел сделать Мефодий. Всевозможные сетевые настройки хранятся в /etc отдельно, как правило, в специальном подкаталоге. В разных дистрибутивах Linux применяются различные схемы размещения настроек. Система, установленная на компьютере Мефодия, использует общий подкаталог /etc/sysconfig для хранения большинства настроек, используемых не службами, а самими стартовыми сценариями, в том числе и network:

[root@sakura root]# ls -F /etc/sysconfig/
acpi framebuffer init network-scripts/ vlan
apmd harddisk/ keyboard* nfs xfs
autologin* harddisks keyboard.rpmnew pcmcia* xinetd
bootsplash hotplug klogd rawdevices xinitrc
clock* hwconf kudzu syslogd
console/ i18n* mouse* system*
consolefont* i18n.rpmnew network* usb
Пример 15.4. Каталог /etc/sysconfig

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

За сеть непосредственно отвечают файл /etc/sysconfig/network и содержимое подкаталога /etc/sysconfig/network-scripts:

[root@sakura root]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sakura.nipponman.ru
DOMAINNAME=nipponman.ru
GATEWAY=192.168.102.1
Пример 15.5. Настройка сети по умолчанию

Файл network оказался очень простым: в нем в формате shell определяются основные настройки сети: имя компьютера и домена, а также маршрутизатор по умолчанию. По-видимому, этот файл "втягивается" командой "." из самого сценария network:

[root@sakura root]# ls -F /etc/sysconfig/network-scripts/
README@ ifdown-ppp* ifup-ipv6* ifup-sl*
ifcfg-eth0* ifdown-pre* ifup-ipx* net_cnx_pg*
ifcfg-lo* ifdown-sit* ifup-plip* net_prog.default*
ifdown@ ifdown-sl* ifup-plusb* net_resolv.default
ifdown-aliases* ifup@ ifup-post* network-functions*
ifdown-iptun* ifup-aliases* ifup-ppp* network-functions-ipv6*
ifdown-ipv6* ifup-ctc* ifup-routes*
ifdown-post* ifup-iptun* ifup-sit*
Пример 15.6. Каталог network-scripts

Каталог network-scripts содержит множество сценариев на все случаи сетевой жизни. В файле README описано, для чего какой сценарий нужен и что означают поля в каждом из них (часто этот файл хранится в /usr/share/doc/net-scripts, а не в /etc ):

[root@sakura root]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.102.125
NETMASK=255.255.255.0
NETWORK=192.168.102.0
BROADCAST=192.168.102.255
ONBOOT=yes
Пример 15.7. Настройка интерфейса по умолчанию

А вот и настройки интерфейса eth0, которые Мефодию приходилось применять вручную. Таким образом, стоит только подать команду service network stop, как все сетевые интерфейсы "пропадут" (деактивизируются), а после service network start – снова появятся.

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

В некоторых дистрибутивах используется схема ifupdown, основанная на технологии ".d":

debian!shogun$ ls -F /etc/network
if-down.d/ if-pre-up.d/ ifstate.hotplug interfaces
if-post-down.d/ ifstate if-up.d/ options
Пример 15.8. Настройка сети с применением схемы ".d"

Настройка сетевых интерфейсов и маршрутизатора по умолчанию хранится в одном файле (считается, что редактировать его автоматически – просто). Тонкая настройка сети – в файле options. Каталоги if-preup.d, if-up.d, if-down.d и if-post-down.d предназначены для служб, которые хотят производить какие-то действия, соответственно, перед тем, как сетевой интерфейс будет активизирован ("поднят"), после успешной активизации интерфейса, перед тем как сетевой интерфейс будет деактивизирован ("опущен") и после этого.

< Лекция 14 || Лекция 15: 12345 || Лекция 16 >
Тимур Булатов
Тимур Булатов

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

дмитрий шремзер
дмитрий шремзер

В поле PPID (" p arent p rocess id entificator") указан идентификатор родительского процесса, т. е. процессапородившего данный. Для ps это – bash, а для bash, очевидно, login

А что тогда находится в поле CMD?

Гузель Фахретдинова
Гузель Фахретдинова
Россия
Алексей Маряскин
Алексей Маряскин
Россия