Differences between revisions 14 and 44 (spanning 30 versions)
Revision 14 as of 2008-07-07 08:52:38
Size: 13584
Comment:
Revision 44 as of 2008-10-04 07:55:19
Size: 17908
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
=== (по Г.К.: Автоматическая настройка сетевых подключений) ===
Line 4: Line 3:
Рассмотрим теперь, как работает подсистема в альте, где она находит настройки сети и как она их применяет.Для этого перейдём в /etc/net и увидим, что здесь находятся три подкаталога и настроечный файл. Рассмотрим теперь, как работает система настройки сетевых адресов etcnet в нашем дистрибутиве, как она получает настройки сети и как она их применяет. Для этого перейдём в каталог настроек /etc/net, где находятся три подкаталога ({{{ifaces}}}, {{{options.d}}}, {{{scripts}}}) и файл {{{sysctl.conf}}}.
Line 6: Line 5:
 * В sysctl.conf находятся параметры ядра. Нам как пользователям школьного дистрибутива, этот файл в принципе не нужен, за одним исключением. В случае, если нам необходимо создать сервер, который занимается маршрутизацией, нужно дать переменной net.ipv4.ip_forvard значение 1.
 * В разделе scripts лежат всевозможные программы, написанные на Shell'e, которые выполняют различные функции. Обычно нет необходимости запускать их вручную. С помощью этих программ подсистема управляет сетевыми настройками. На деле она выполняет следующее: читает конфигурационные файлы и по определённым алгоритмам вызывает соответствующие сценарии.
 * В разделе ifaces (директории интерфейсов) описаны сетевые интерфейсы, которые предназначены для подключения к сети. Тут мы видим eth0, lo. Кроме того, есть default и unknown, которые применяются ко всем или к не указанным здесь интерфейсам. Можно перейти в директорию интерфейса и сказать, например, ipv4address.
 * Наконец, есть директория options, в которой находятся настройки интерфейса. Обычно там указано, что BOOTPROTO=dhcp. Для статической настройки необходимо поменять dhcp на static. Dhcp–ipv4ll – это Авахе так вызывается. То есть если dhcp отказывается, через некоторое время после того как таймаут от dhcp приходит, что никакого dhcp нет, он запускает это самое авахе которое присваивает себе какой- нибудь адрес. Тут всё.
 * В файле {{{/etc/net/sysctl.conf}}} находятся параметры ядра Linux, относящиеся к сетевой подсистеме. Нам, как пользователям школьного дистрибутива, этот файл обычно не нужен, за одним исключением: если нам необходимо настроить машину, работающую IP-маршрутизатором, то нужно присвоить отвечающей за маршрутизацию переменной значение 1: {{{
$ grep forward /etc/net/sysctl.conf
#IPv4 packet forwarding.
net.ipv4.ip_forward = 0
}}}
##по умолчанию она 0, не так ли?
Line 11: Line 12:
Теперь отредактируем ipv4address. Для указания адреса необходимо в ipv4address указать собственно адрес, а в ipv4route указать default gateway - default via 192.168.200.1. Если сделать {{{ man etcnet }}}, то можно увидеть множество других команд. Например, можно задать настройку для IP. После этого можно остановить сетевой сервис, сделав {{{ service network stop }}}, убедиться, что оба интерфейса опущен - ip a, после этого можно запустить service network start. После этого, сделав {{{ ip r}}}, убедимся, что всё настроено. Теперь рассмотрим каталоги, где находятся настройки самого etcnet.
 * В каталоге {{{/etc/net/scripts}}} лежат всевозможные программы, написанные на языке программирования Shell, которые выполняют различные функции. Обычно нет необходимости запускать их вручную и изменять. С помощью этих программ подсистема etcnet управляет сетевыми подключениями, запуская их в зависимости от своих параметров настройки.
 * В каталоге {{{/etc/net/ifaces}}} находятся подкаталоги, в которых описаны параметры сетевых интерфейсов. Каждому сетевому интерфейсу соответствует свой каталог:
 {{{
 $ ls /etc/net/ifaces
 default eth0 lo eth1 lo unknown
 }}}
 Кроме того, здесь находятся каталоги {{{default}}} и {{{unknown}}}. Настройки из первого из них применяются ко всем интерфейсам, а настройки из второго --- к не указанным в {{{/etc/net/ifaces}}} интерфейсам. Можно перейти в директорию интерфейса и создать, например, файл ipv4address.
 * Наконец, есть директория {{{/etc/net/options.d}}}, в которой находятся общие настройки системы etcnet и пути к используем программам, например к {{{ip}}}. Обычно изменять в ней что-либо нет необходимости.
Line 13: Line 22:
Стоит отметить, что система /etc/net крайне мощная, она позволяет практически любую проблему решить при помощи изменений конфигурации. Например, там есть human-readable синтаксис (нечто похожее на ipfv), его можно выключить и работать непосредственно в синтаксисе iptables. Рассмотрим подробнее настройки сетевого интерфейса на примере каталога {{{/etc/net/ifaces/eth0}}}. Во-первых, в нем уже имеется файл {{{options}}}, где указывается, включен ли интерфейс и получает ли он адрес автоматически:
{{{
$ cat /etc/net/ifaces/eth0/options
BOOTPROTO=dhcp-ipv4ll
DISABLED=no
}}}
Line 15: Line 29:
В частности, etcnet’ом уже год поддерживается freename - это технология переименования интерфейсов буквально на лету. Для чего это нужно ? В какой-то момент, когда создатели линукс-дистрибутивов перешли не просто на 26-е ядро, а отказались от /dev’а, перейдя на udev, возникла следующая ситуация: какой модуль первый загрузится, тот и получит нулевой номер. Соответственно, тот, который загрузится вторым, получит первый номер. Если бы это делалось последовательно, они бы всегда загружались в правильном порядке, потому что сетевые карты на сетевой шине, они, как правило, нумеруются все одинаково. Но поскольку два модуля грузятся одновременно, часто бывает так, что сегодня, скажем, у нас первой загрузилась нижняя карточка, а второй верхняя. Существует несколько вариантов решения этой проблемы; в нашем случае механизм достаточно прост: при установке дистрибутива считываются MAC-адреса сетевых карт, формируется ftab, и потом всегда происходит переименование. С помощью опции {{{BOOTPROTО}}} можно управлять механизмом получения IP-адресов. Обычно указано, что {{{BOOTPROTO=dhcp}}}. Для статической настройки необходимо указать {{{BOOTPROTО=static}}}. Если указано {{{BOOTPROTO=ipv4ll}}}, то для машины будет выбран не использующийся в сети IP-адрес (обычно это означает, что интерфейс не будет нормально функционировать). Возможны и комбинированные значения: например,если написать {{{BOOTPROTO=dhcp–ipv4ll}}}, то в случае, если по протоколу DHCP настройки получить не удастся, они будут получены по ipv4ll сетевой службой Avahi.
Line 17: Line 31:
Помимо того, что etcnet хорошо документирован, он содержит огромное количество примеров, можно сказать, например, {{{rpm -ql etcnet}}}. Отметим, что файл {{{/etc/resolv.conf}}} с адресами серверов DNS не относится к etcnet. Однако, в etcnet существует возможность изменять данный файл в зависимости от используемого сетевого интерфейса, для чего достаточно создать файл с тем же именем {{{resolv.conf}}} к каталоге интерфейса, например {{{/etc/net/ifaces/eth0/resolv.conf}}}. Обычно в этом нет потребности, потому что если интерфейс настраивается по протоколу DHCP, то DHCP-клиент автоматически запишет полученые адреса DNS-серверов.
Line 19: Line 33:
Теперь о недостатках: единственное, чего нет в etcnet --- простых примеров. Например, единственный способ узнать, что для организации NAT надо прописать одну строчку --- догадаться. Указав {{{BOOTPROTО=static}}} в файле {{{options}}}, настроим интерфейс вручную. Для указания адреса необходимо в файле {{{ipv4address}}} указать собственно IP-адрес и маску, а в файле {{{ipv4route}}} --- адрес маршрутизатора по умолчанию:
{{{
# cd /etc/net/ifaces/eth0
# echo '192.168.200.100/24' > ipv4address
# echo 'default via 192.168.200.1' > ipv4route
}}}
Line 21: Line 40:
=== DHCP === После сделанных изменений можно остановить сетевой сервис, выполнив команду {{{ service network stop }}} и убедиться, что оба интерфейса выключены командой {{{ ip a }}}. После этого можно запустить их: {{{service network start}}}. После этого, сделав {{{ ip r}}}, убедимся, что всё настроено:
{{{
# ip r
192.168.200.100/24 dev eth0 proto kernel scope link src 192.168.200.100
default via 192.168.200.1 dev eth0
}}}
Line 23: Line 47:
Обратимся снова к протоколу уровня приложений. В ситуации, когда пользователь не очень хорошо разбирается в настройке сетей, но у него возникла необходимость подключиться к сети, кроме того, у администратора нет желания раздавать полотна с указаниями, где что прописать, более того, пользователя это и не касается. Для решения всех этих проблем есть служба DHCP. Стоит отметить, что система etcnet крайне мощная, она позволяет практически любую проблему решить при помощи изменения своей конфигурации. По команде {{{man etcnet}}} можно увидеть все настройки etcnet. Помимо того, что etcnet хорошо документирован, он содержит огромное количество примеров. Чтобы убедиться в этом, можно выполнить, например, {{{rpm -ql etcnet}}}.
Line 25: Line 49:
Как работает DHCP? Довольно хитро, так как она предназначена даже для машин, у которых даже ip нет, поэтому можно разложить на части процедуру настройки по DHCP. Настройки, которые можно выдать по DHCP: Системой etcnet поддерживается технология ifrename. Она позволяет переименовывать сетевые интерфейсы буквально на лету. Для чего это нужно? В современном ядре GNU/Linux возможна следующая ситуация: модуль,загрузившийся первым, получает нулевой номер интерфейса (eth0), тот, который загрузится вторым, получает первый номер (eth1) и так далее. Если бы это делалось последовательно, они бы всегда загружались в одинаковом порядке, потому что сетевые карты на сетевой шине, как правило, нумеруются одинаково. Но поскольку модули сетевых карт загружаются одновременно, часто бывает так, что сегодня первой загрузилась нижняя карточка, а второй верхняя, а завтра --- наоборот. Существует несколько вариантов решения этой проблемы, в нашем случае механизм достаточно прост: при установке дистрибутива считываются MAC-адреса сетевых карт, формируется файл {{{/etc/iftab}}} с соответствием имен интерфейсов и MAC-адресов, и затем всегда происходит переименование. При замене в компьютере с несколькими сетевыми картами одной из них данный файл желательно отредактировать вручную.
Line 27: Line 51:
 * IP-адрес. Существует протокол ARP, который по IP-адресу позволяет узнать MAC-адрес. В случае, когда мы знаем MAC и не знаем IP, возникает обратная ситуация. Посылается широковещательный (если нет адреса конкретного сервера) Ethernet-фрейм, который принимается компьютером, на котором установлена сетевая служба, которая раздаёт IP, согласно таблице соответствий IP- и MAC-адресов. Протоколов, которые производят подобные преобразования, два: RARP и BOOTP. RARP находится между сетевым и интерфейсным уровнем; он предназначен для преобразования одного типа адресов в другой. Протокол BOOTP более комплексный, при помощи него кроме сетевого адреса можно получить имя файла, который надо скачать по tftp, чтобы его загрузить и выполнить. Но в обоих случаях должен существовать сервер, который это принимает запросы и выдаёт необуходимую информацию. Особенно cложной является ситуация, когда таких серверов два в одной локальной сети, и каждый думает по-своему. Таким образом, DHCP --- это комплекс настроек, который позволяет получить все сетевые настройки, про которые было сказано выше. === Протокол DHCP и настройка DHCP-клиента ===
Line 29: Line 53:
(Кстати, когда лектор говорил про xml, он забыл сказать, что resolv.conf не задавали. Он просто лежит в /etc. В принципе, есть возможность подсовывать resolv.conf в зависимости от используемого интерфейса. Вопрос в том, что это обычно не надо, потому что если он настраивается dhcp, dhcp сам его редактирует, а если он настраивается статически, он там один.) Обратимся снова к протоколу уровня приложений DHCP. Для того, чтобы упростить настройку и подключение к сети для пользователя и администратора, существует служба DHCP, которая позволяет DHCP-клиентам получать от DHCP-сервера IP-адрес и маску сети, маршрутизатор по умолчанию, адреса DNS-серверов и другие настройки. Протокол DHCP работает предназначен даже для машин, у которых нет даже IP-адреса. Поэтому лучше разложить на части процедуру настройки по DHCP. Итак, основной настройкой, которую можно выдать и получить по DHCP, является IP-адрес. Существует протокол ARP, который по IP-адресу позволяет узнать MAC-адрес. В случае, когда мы знаем свой MAC-адрес и не знаем свой IP-адрес, возникает обратная ситуация, для ее разрешения изначально существовал протокол RARP (''Reverse Address Resolution Protocol''). В настоящее время протоколов, которые производят подобные преобразования, три: RARP, BOOTP (''Bootstrap Protocol'') и DHCP (''Dynamic Host Configuration Protocol''). Протокол RARP находится между сетевым и интерфейсным уровнем; он предназначен для преобразования своего MAC-адреса в IP-адрес. Протокол BOOTP более сложный, чем RARP, при помощи него кроме сетевого адреса можно получить имя файла, который надо скачать по tftp, что позволяет создавать бездисковые рабочие станции, загружающиеся по сети. Протокол DHCP является развитием BOOTP и очень широко используется.
 
Во всех случаях должен существовать сервер, который принимает запросы и выдаёт необходимую информацию. Крайне нежелательной является ситуация, когда таких серверов в одной локальной сети более одного, и каждый думает по-своему. Клиентом посылается широковещательный (если нет адреса конкретного DHCP-сервера) Ethernet-фрейм, который принимается компьютером с установленной сетевой службой DHCP, которая раздаёт IP согласно таблице соответствий IP и MAC-адресов и высылает клиенту Ethernet-фрейм с ответом. Таким образом, протокол DHCP --- позволяет получить все сетевые настройки, про которые было сказано выше. Кроме того, по протоколу DHCP машина может получить несколько сотен настроек, в том числе такие, у которых имени нет, а есть только номер. Например, настройка номер 318. Какая? Какую придумаем, такая и будет, лишь бы клиент понимал, что с нею делать дальше. Итак, основные настройки, выдаваемые по DHCP:
 * IP-адрес;
 * маска сети;
 * адрес DNS-сервера;
 * маршрутизатор по умолчанию и вся таблица маршрутизации;
 * если это сетевая загрузка, то адрес файла, который надо закачать, и адрес сервера, с которого надо его закачать;
 * ряд дополнительных настроек.
Line 31: Line 63:
По протоколу DHCP машина может получить несколько сотен настроек, в том числе такие, у которых имени нет, есть только номер. Например, настройка 318. Какая? Какую придумаешь, такая и будет. Итак, основные настройки, выдаваемые по DHCP: Чтобы сделать автоматическую настройку сети в etcnet, достаточно задать в каталоге интерфейса в файле {{{options}}} параметр {{{BOOTPROTO=dhcp}}} и перезагрузить сетевую службу следующей командой:
{{{
# service network restart
}}}.
Line 33: Line 68:
 * IP
 * Маска
 * Адрес DNS-сервера
 * Маршрутизатор по умолчанию и вся таблица маршрутизации
 * Если это сетевая загрузка, адрес файла, который надо закачать, адрес сервера, с которого надо его закачать, а потом ещё какие-то настройки. Идея состоит в том, что получить её можно по DHCP, и используется она на разных уровнях.
=== Сетевые профили в системе etcnet ===
Line 39: Line 70:
Чтобы сделать автоматическую настройку сети в etcnet, достаточно поставить у интерфейса в options BOOTPROTO=dhcp. В каталоге {{{/etc/net/ifaces/eth0}}} может лежать несколько файлов с именами вида {{{options#имяпрофиля}}}, {{{ipv4adress#имяпрофиля}}}, {{{ipv4route#имяпрофиля}}}. Каждый такой файл содержит настройки к определенному сетевому профилю. Это удобно, например, когда компьютер используется и дома и в офисе, а протокол DHCP не используется хотя бы в одном из мест работы. Никаких дополнительных сущностей, за исключением имени файла, для настройки не нужно. Более того, у службы network есть не только стандартные команды, но и дополнительные вида {{{service network startwith home}}}, которые позволяют выбрать, какой профиль будет использован при включении сети.
Line 41: Line 72:
=== Профили в etcnet === Теперь проиллюстрируем на практике сказанное выше относительно профилей etcnet. Создадим следующие настройки для интерфейса eth0: в профиле home система получает настройки вручную, а по умолчанию с помощью DHCP.
Line 43: Line 74:
В каталоге eth0 может лежать несколько файлов apv4adress#имяпрофиля. Каждый такой файл содержит настройки к определенному профилю. Например, компьютер используется дома и в офисе. Никаких дополнительных сущностей за исключением имени файла, не нужно. У службы network есть не только стандартные команды, но и дополнительные команды вида start with, которые позволяют выбрать, какой профиль будет использован при включении сети. Для этого сделаем следующее.
 * Переходим в каталог интерфейса:
 {{{
 # cd /etc/net/ifaces/eth0
 }}}
 * Открываем в текстовом редакторе файл {{{options}}}, например командой {{{mcedit options}}}, заполняем его следующим содержимым:
 {{{
 ONBOOT=yes
 DISABLED=no
 BOOTPROTO=dhcp
 }}}
 * Открываем в текстовом редакторе файл {{{options#home}}}, например командой {{{mcedit options#home}}}, заполняем его следующим содержимым:
 {{{
 DISABLED=no
 BOOTPROTO=static
 }}}
 * Задаем вручную IP-адрес, адреса маршрутизатора по умолчанию и DNS-сервера для профиля home:
 {{{
 # echo '192.168.0.4/24' > ipv4address#home
 # echo 'default via 192.168.0.1' > ipv4route#home
 # echo 'nameserver 192.168.0.1' > resolv.conf#home
 }}}
Line 45: Line 97:
Теперь проиллюстрируем на практике сказанное выше относительно etcnet и профилей. Создадим настройки сети.
Для этого сделаем следующее:
 * Переходим в /etc/net/
 * Создаём файл options#mpgu.
Пишем:
Настройка сети завершена, теперь при команде
Line 51: Line 99:
ONBOOT=yes
DISABLED=no
BOOTPROTO=static
}}}
 * mv ipv4address ipv4address\#mpgu
 * Напишем здесь:
{{{
search mpgu.edu.ru
nameserver 194.190.241.162
}}}
 * service network restartwith mpgu
# service network restartwith home
}}} будет грузится профиль home со статическими настройками, а при команде {{{
# service network restart
}}} будет загружен профиль по-умолчанию с получением настроек по DHCP.
Line 69: Line 110:
|| 35 || 1 || 1 || 1 || || 1 || ConstantinYershow, ОльгаТочилкина || || || || 90 || 1 || 1 || 1 || || 1 || ConstantinYershow, ОльгаТочилкина, VsevolodKrishchenko || || ||

Настройка сетевых интерфейсов

Рассмотрим теперь, как работает система настройки сетевых адресов etcnet в нашем дистрибутиве, как она получает настройки сети и как она их применяет. Для этого перейдём в каталог настроек /etc/net, где находятся три подкаталога (ifaces, options.d, scripts) и файл sysctl.conf.

  • В файле /etc/net/sysctl.conf находятся параметры ядра Linux, относящиеся к сетевой подсистеме. Нам, как пользователям школьного дистрибутива, этот файл обычно не нужен, за одним исключением: если нам необходимо настроить машину, работающую IP-маршрутизатором, то нужно присвоить отвечающей за маршрутизацию переменной значение 1:

    $ grep forward /etc/net/sysctl.conf
    #IPv4 packet forwarding.
    net.ipv4.ip_forward = 0

Теперь рассмотрим каталоги, где находятся настройки самого etcnet.

  • В каталоге /etc/net/scripts лежат всевозможные программы, написанные на языке программирования Shell, которые выполняют различные функции. Обычно нет необходимости запускать их вручную и изменять. С помощью этих программ подсистема etcnet управляет сетевыми подключениями, запуская их в зависимости от своих параметров настройки.

  • В каталоге /etc/net/ifaces находятся подкаталоги, в которых описаны параметры сетевых интерфейсов. Каждому сетевому интерфейсу соответствует свой каталог:

     $ ls  /etc/net/ifaces
     default eth0 lo eth1 lo unknown

    Кроме того, здесь находятся каталоги default и unknown. Настройки из первого из них применяются ко всем интерфейсам, а настройки из второго --- к не указанным в /etc/net/ifaces интерфейсам. Можно перейти в директорию интерфейса и создать, например, файл ipv4address.

  • Наконец, есть директория /etc/net/options.d, в которой находятся общие настройки системы etcnet и пути к используем программам, например к ip. Обычно изменять в ней что-либо нет необходимости.

Рассмотрим подробнее настройки сетевого интерфейса на примере каталога /etc/net/ifaces/eth0. Во-первых, в нем уже имеется файл options, где указывается, включен ли интерфейс и получает ли он адрес автоматически:

$ cat /etc/net/ifaces/eth0/options
BOOTPROTO=dhcp-ipv4ll
DISABLED=no

С помощью опции BOOTPROTО можно управлять механизмом получения IP-адресов. Обычно указано, что BOOTPROTO=dhcp. Для статической настройки необходимо указать BOOTPROTО=static. Если указано BOOTPROTO=ipv4ll, то для машины будет выбран не использующийся в сети IP-адрес (обычно это означает, что интерфейс не будет нормально функционировать). Возможны и комбинированные значения: например,если написать BOOTPROTO=dhcp–ipv4ll, то в случае, если по протоколу DHCP настройки получить не удастся, они будут получены по ipv4ll сетевой службой Avahi.

Отметим, что файл /etc/resolv.conf с адресами серверов DNS не относится к etcnet. Однако, в etcnet существует возможность изменять данный файл в зависимости от используемого сетевого интерфейса, для чего достаточно создать файл с тем же именем resolv.conf к каталоге интерфейса, например /etc/net/ifaces/eth0/resolv.conf. Обычно в этом нет потребности, потому что если интерфейс настраивается по протоколу DHCP, то DHCP-клиент автоматически запишет полученые адреса DNS-серверов.

Указав BOOTPROTО=static в файле options, настроим интерфейс вручную. Для указания адреса необходимо в файле ipv4address указать собственно IP-адрес и маску, а в файле ipv4route --- адрес маршрутизатора по умолчанию:

# cd /etc/net/ifaces/eth0
# echo '192.168.200.100/24' > ipv4address 
# echo 'default via 192.168.200.1' > ipv4route

После сделанных изменений можно остановить сетевой сервис, выполнив команду  service network stop  и убедиться, что оба интерфейса выключены командой  ip a . После этого можно запустить их: service network start. После этого, сделав  ip r, убедимся, что всё настроено:

# ip r
192.168.200.100/24 dev eth0 proto kernel scope link src 192.168.200.100
default via 192.168.200.1 dev eth0 

Стоит отметить, что система etcnet крайне мощная, она позволяет практически любую проблему решить при помощи изменения своей конфигурации. По команде man etcnet можно увидеть все настройки etcnet. Помимо того, что etcnet хорошо документирован, он содержит огромное количество примеров. Чтобы убедиться в этом, можно выполнить, например, rpm -ql etcnet.

Системой etcnet поддерживается технология ifrename. Она позволяет переименовывать сетевые интерфейсы буквально на лету. Для чего это нужно? В современном ядре GNU/Linux возможна следующая ситуация: модуль,загрузившийся первым, получает нулевой номер интерфейса (eth0), тот, который загрузится вторым, получает первый номер (eth1) и так далее. Если бы это делалось последовательно, они бы всегда загружались в одинаковом порядке, потому что сетевые карты на сетевой шине, как правило, нумеруются одинаково. Но поскольку модули сетевых карт загружаются одновременно, часто бывает так, что сегодня первой загрузилась нижняя карточка, а второй верхняя, а завтра --- наоборот. Существует несколько вариантов решения этой проблемы, в нашем случае механизм достаточно прост: при установке дистрибутива считываются MAC-адреса сетевых карт, формируется файл /etc/iftab с соответствием имен интерфейсов и MAC-адресов, и затем всегда происходит переименование. При замене в компьютере с несколькими сетевыми картами одной из них данный файл желательно отредактировать вручную.

Протокол DHCP и настройка DHCP-клиента

Обратимся снова к протоколу уровня приложений DHCP. Для того, чтобы упростить настройку и подключение к сети для пользователя и администратора, существует служба DHCP, которая позволяет DHCP-клиентам получать от DHCP-сервера IP-адрес и маску сети, маршрутизатор по умолчанию, адреса DNS-серверов и другие настройки. Протокол DHCP работает предназначен даже для машин, у которых нет даже IP-адреса. Поэтому лучше разложить на части процедуру настройки по DHCP. Итак, основной настройкой, которую можно выдать и получить по DHCP, является IP-адрес. Существует протокол ARP, который по IP-адресу позволяет узнать MAC-адрес. В случае, когда мы знаем свой MAC-адрес и не знаем свой IP-адрес, возникает обратная ситуация, для ее разрешения изначально существовал протокол RARP (Reverse Address Resolution Protocol). В настоящее время протоколов, которые производят подобные преобразования, три: RARP, BOOTP (Bootstrap Protocol) и DHCP (Dynamic Host Configuration Protocol). Протокол RARP находится между сетевым и интерфейсным уровнем; он предназначен для преобразования своего MAC-адреса в IP-адрес. Протокол BOOTP более сложный, чем RARP, при помощи него кроме сетевого адреса можно получить имя файла, который надо скачать по tftp, что позволяет создавать бездисковые рабочие станции, загружающиеся по сети. Протокол DHCP является развитием BOOTP и очень широко используется.

Во всех случаях должен существовать сервер, который принимает запросы и выдаёт необходимую информацию. Крайне нежелательной является ситуация, когда таких серверов в одной локальной сети более одного, и каждый думает по-своему. Клиентом посылается широковещательный (если нет адреса конкретного DHCP-сервера) Ethernet-фрейм, который принимается компьютером с установленной сетевой службой DHCP, которая раздаёт IP согласно таблице соответствий IP и MAC-адресов и высылает клиенту Ethernet-фрейм с ответом. Таким образом, протокол DHCP --- позволяет получить все сетевые настройки, про которые было сказано выше. Кроме того, по протоколу DHCP машина может получить несколько сотен настроек, в том числе такие, у которых имени нет, а есть только номер. Например, настройка номер 318. Какая? Какую придумаем, такая и будет, лишь бы клиент понимал, что с нею делать дальше. Итак, основные настройки, выдаваемые по DHCP:

  • IP-адрес;
  • маска сети;
  • адрес DNS-сервера;
  • маршрутизатор по умолчанию и вся таблица маршрутизации;
  • если это сетевая загрузка, то адрес файла, который надо закачать, и адрес сервера, с которого надо его закачать;
  • ряд дополнительных настроек.

Чтобы сделать автоматическую настройку сети в etcnet, достаточно задать в каталоге интерфейса в файле options параметр BOOTPROTO=dhcp и перезагрузить сетевую службу следующей командой:

# service network restart

.

Сетевые профили в системе etcnet

В каталоге /etc/net/ifaces/eth0 может лежать несколько файлов с именами вида options#имяпрофиля, ipv4adress#имяпрофиля, ipv4route#имяпрофиля. Каждый такой файл содержит настройки к определенному сетевому профилю. Это удобно, например, когда компьютер используется и дома и в офисе, а протокол DHCP не используется хотя бы в одном из мест работы. Никаких дополнительных сущностей, за исключением имени файла, для настройки не нужно. Более того, у службы network есть не только стандартные команды, но и дополнительные вида service network startwith home, которые позволяют выбрать, какой профиль будет использован при включении сети.

Теперь проиллюстрируем на практике сказанное выше относительно профилей etcnet. Создадим следующие настройки для интерфейса eth0: в профиле home система получает настройки вручную, а по умолчанию с помощью DHCP.

Для этого сделаем следующее.

  • Переходим в каталог интерфейса:
     # cd /etc/net/ifaces/eth0
  • Открываем в текстовом редакторе файл options, например командой mcedit options, заполняем его следующим содержимым:

     ONBOOT=yes
     DISABLED=no
     BOOTPROTO=dhcp
  • Открываем в текстовом редакторе файл options#home, например командой mcedit options#home, заполняем его следующим содержимым:

     DISABLED=no
     BOOTPROTO=static
  • Задаем вручную IP-адрес, адреса маршрутизатора по умолчанию и DNS-сервера для профиля home:
     # echo '192.168.0.4/24' > ipv4address#home
     # echo 'default via 192.168.0.1' > ipv4route#home
     # echo 'nameserver 192.168.0.1' > resolv.conf#home

Настройка сети завершена, теперь при команде

# service network restartwith home

будет грузится профиль home со статическими настройками, а при команде

# service network restart

будет загружен профиль по-умолчанию с получением настроек по DHCP.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

90

1

1

1

1

ConstantinYershow, ОльгаТочилкина, VsevolodKrishchenko


PspoClasses/080703/04EtcNetAndDHCP (last edited 2008-10-04 07:55:19 by VsevolodKrishchenko)