Компания IBM
Опубликован: 22.06.2005 | Доступ: свободный | Студентов: 26775 / 4668 | Оценка: 4.27 / 3.93 | Длительность: 26:36:00
ISBN: 978-5-9556-0029-1
Лекция 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 >
Helgisbox Helgisbox
Helgisbox Helgisbox

Лекция 9, там где говорится "[methody@localhost methody]$ cat | hexdump -C Теперь Ctrl+V, Ctrl+C, enter и Ctrl+D^C"

вывод должен быть таким:

cat | hexdump -C
^C
00000000  03 0a                                             |..|
00000002

Даже в тексте говорится про то, что оборажаются именно коды 03 0a, а скопирован кусок текста описания.

Александр Савин
Александр Савин

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

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Максим Виноградов
Максим Виноградов
Россия, Москва