Differences between revisions 1 and 27 (spanning 26 versions)
Revision 1 as of 2008-07-03 19:03:13
Size: 8618
Editor: eSyr
Comment:
Revision 27 as of 2008-07-12 13:59:09
Size: 15514
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== Настройка сетевых интерфейсов и DHCP == == Автоматическая настройка сетевых интерфейсов ==
Line 3: Line 3:
Речь о том, как на самом деле подсистема в альте, где она находит настройки сети, и как она из применяет. Мы сегодня утром достаточно долго настраивали сеть: настраивали сетевую карту, ip-адрес, dns. Перейдём в /etc/net и посмотри, что в нём находится. В sysctl.conf находятся параметры ядра. Нам как пользователям школьного дистр., этот файл без надобности, за одним исключением. В случае, если вы сбираетесь делать сервер, который занимается маршрутизацией, переменная net.ipv4.ip_forvard должна быть равна 1. В разделе scripts лежат всевозможные программы на шелле, которые вып. различ. функции. Обычно их запускать рукаим не надо. Это подситема упр. сетевыми настройками, которая занимается следующим: она читает конф. файлы и по опр. алгоритмам вызывает эти сценарии. В самом деле, туда смотреть не надо. А куда смотреть? Например, в ifaces/. В директории интерфейсов описаны сетевые интерфейсы, которые предн. для подключения к сети. Тут мы видим eth0, lo. Кроме этого есть default и unknown, которые применяются ко всем или к не указанным здесь интерфейсам. Можно перейти в иректорию интерфейса и сказать, например, ipv4address. Кроме этого, есть options, в котором находятся настр. интерфейса. Обычн там указано, что BOOTPROTO=dhcp. Для статической настройки необх поменять на static. Для указания адреса необх. в ipv4address указать адрес, а в ipv4route указать default gateway --- default via 192.168.200.1. Если посмотреть man etcnet, то можно узреть мног других команд. После этого можно становить сетевой сервис --- service network stop, убедиться, что оба интерфейса опущен --- ip a, после этого можно запустить service network start. После этого можно увидеть в ip r, что всё настроилось. Рассмотрим теперь, как работает система настройки сетевых адресов etcnet в нашем дистрибутиве, как она получает настройки сети и как она их применяет. Для этого перейдём в каталог настроек /etc/net, где находятся три подкаталога ({{{ifaces}}}, {{{options.d}}} и {{{ifaces}}}) и файл {{{sysctl.conf}}}.
Line 5: Line 5:
Система /etc/net крайне мщная, она позвалаяет практически всё решить конфигурацией. Для разных любителей ...  * В файле {{{/etc/net/sysctl.conf}}} находятся параметры ядра Linux, относящиеся к сетевой подсистеме. Нам, как пользователям школьного дистрибутива, этот файл обычно не нужен, за одним исключением: если нам необходимо настроить машину, работающую IP-маршрутизатором, то нужно присвоить отвечающей за маршрутизацию переменной значение 1: {{{
$ grep forward /etc/net/sysctl.conf
#IPv4 packet forwarding.
net.ipv4.ip_forward = 1
}}}
Теперь рассмотрим каталоги, где находятся настройки самого 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 7: Line 20:
(про переименование интерфейсов) Рассмотрим подробнее настройки сетевого интерфейса на примере каталога {{{/etc/net/ifaces/eth0}}}. Во-первых, в нем уже имеется файл {{{options}}}, где указывается, включен ли интерфейс и получает ли он адрес автоматически:
{{{
$ cat /etc/net/ifaces/eth0/options
BOOTPROTO=dhcp-ipv4ll
DISABLED=no
}}}
Line 9: Line 27:
Помимо тог, чтоetcnet хорошо документирован, он содержит дикое колоичество примеров, можно сказать, например, rpm -ql etcnet С помощью опции {{{BOOTPROTО}}} можно управлять механизмом получения IP-адресов. Обычно указано, что {{{BOOTPROTO=dhcp}}}. Для статической настройки необходимо указать {{{BOOTPROTО=static}}}. Если указано {{{BOOTPROTO=ipv4ll}}}, то для машины будет выбран не использующийся в сети IP-адрес (обычно это означает, что интерфейс не будет нормально функционировать). Возможны и комбинированные значения: например,если написать {{{BOOTPROTO=dhcp–ipv4ll}}}, то в случае, если по протоколу DHCP настройки получить не удастся, они будут получены по ipv4ll сетевой службой Avahi.
Line 11: Line 29:
Теперь о недстатках: единственное, чего нет в etcnet --- нет простых примеров. Например, для того, чтобы догадаться, что для организации NAT над прописать одну строчку, надо догадаться. Отметим, что файл с указанием серверов DNS {{{/etc/resolv.conf}}} не относится к etcnet. Однако, в etcnet существует возможность изменять данный файл в зависимости от используемого сетевого интерфейса. Обычно в этом нет потребности, потому что если интерфейс настраивается по протоколу DHCP, то DHCP-клиент автоматически запишет полученые адреса DNS-серверов, а если в системе единственный интерфейс и он настраивается статически, то можно отредактировать файл {{{/etc/resolv.conf}}} и вручную.
Line 13: Line 31:
=== DHCP === Теперь отредактируем файл {{{/etc/net/ifaces/eth0/ipv4address}}}, который по умолчанию отсутствует. Для указания адреса необходимо в ipv4address указать собственно адрес, а в ipv4route указать default gateway - default via 192.168.200.1. Если сделать {{{ man etcnet }}}, то можно увидеть множество других команд. Например, можно задать настройку для IP. После этого можно остановить сетевой сервис, сделав {{{ service network stop }}}, убедиться, что оба интерфейса выключены - {{{ ip a }}}, после этого можно запустить их: {{{service network start}}}. После этого, сделав {{{ ip r}}}, убедимся, что всё настроено.
Line 15: Line 33:
Мы возвращаемся к началу нашего сегодняшнего занятия, а именно к протоколу уровня приложений. Откуда вообще всё это возникло. Во многих ОС есть кнопочка "настроить всё автоматически". Лектор очень не любит такую кнопочку, потоу что не знает, что такое всё, и что такое автоматически. Но протсо опльзователь некоторый может не очень хорошо разбираться в сети, но у него моожет возникнуть желания воткнуться и подклюбчиться к сети, крое того, у администратора нет желания раздавать полотна с указаниями, где что прописать, более того, пользователя это и не касается. Для решения всех этих проблем есть служба DHCP. Стоит отметить, что система /etc/net крайне мощная, она позволяет практически любую проблему решить при помощи изменений конфигурации. Например, в ней есть human-readable синтаксис (нечто похожее на ipfv), его можно выключить и работать непосредственно в синтаксисе iptables.
Line 17: Line 35:
Как работает DHCP? Довольно хитро, так как она предназначена даже для машин, у которых даже ip нет, поэтому можно разложить на части процедуру настройки по DHCP. Ккие настр. можно выдать по DHCP:
 * IP-адрес. Есть протоколо ARP, который по ip позволяет узнать MAC. В случае, когда есть MAC и нет IP, взникает ситуация обратная. Посылается широковещаетльный Eth-фрейм, который принимается компьютером, на этом компьютере должна быть уст. стевая служба, которая разд. ip, и, обращаясь к таблице соотв. ip и mac, и по этому маку он выдаёт ip. Таких протокоолов, которые преобр. делают, штуки две: RARP и BOOTP. И если rarp предназначен только для одной задачи, то bootp блее комплексный, по нему кроме сетевого адреса можно получить имя файла, который надо скачать по tftp, чтобы его загрузить и выполнить. Но в обоих случаях должен быть сервер, колторый это разруливает и это выдаёт.
В частности, etcnet’ом уже год поддерживается freename - это технология переименования интерфейсов буквально на лету. Для чего это нужно? В какой-то момент, когда создатели GNU/Linux-дистрибутивов перешли не просто на 26-е ядро, а отказались от /dev’а, перейдя на udev, возникла следующая ситуация: модуль,загрузившийся первым, получает нулевой номер. Соответственно, тот, который загрузится вторым, получает первый номер. Если бы это делалось последовательно, они бы всегда загружались в правильном порядке, потому что сетевые карты на сетевой шине, как правило, нумеруются одинаково. Но поскольку два модуля загружаются одновременно, часто бывает так, что сегодня, скажем, у нас первой загрузилась нижняя карточка, а второй верхняя, а завтра --- наоборот. Существует несколько вариантов решения этой проблемы; в нашем случае механизм достаточно прост: при установке дистрибутива считываются MAC-адреса сетевых карт, формируется ftab, и потом всегда происходит переименование.
Line 20: Line 37:
Про DHCP. Это комплексный протокол, который позволяет получать сотни нстроек Помимо того, что etcnet хорошо документирован, он содержит огромное количество примеров. Чтобы убедиться в этом, можно выполнить, например, {{{rpm -ql etcnet}}}.

Теперь о недостатках: единственное, чего нет в etcnet --- простых примеров. Например, единственный способ узнать, что для организации NAT надо прописать одну строчку --- догадаться.

=== Настройка сервера DHCP ===

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

Как работает DHCP? Это достаточно сложный процесс, так как он предназначен даже для машин, у которых даже IP-адреса нет. Поэтому можно разложить на части процедуру настройки по DHCP. Итак, основной настройкой, которую можно выдать по DHCP, является IP-адрес. Существует протокол ARP, который по IP-адресу позволяет узнать MAC-адрес. В случае, когда мы знаем MAC и не знаем IP, возникает обратная ситуация. Посылается широковещательный (если нет адреса конкретного сервера) Ethernet-фрейм, который принимается компьютером, на котором установлена сетевая служба, которая раздаёт IP согласно таблице соответствий IP- и MAC-адресов. Протоколов, которые производят подобные преобразования, два: RARP и BOOTP. RARP находится между сетевым и интерфейсным уровнем; он предназначен для преобразования одного типа адресов в другой. Протокол BOOTP более комплексный, при помощи него кроме сетевого адреса можно получить имя файла, который надо скачать по tftp, чтобы его загрузить и выполнить. Но в обоих случаях должен существовать сервер, который принимает запросы и выдаёт необходимую информацию. Особенно cложной является ситуация, когда таких серверов два в одной локальной сети, и каждый думает по-своему. Таким образом, DHCP --- это комплекс настроек, который позволяет получить все сетевые настройки, про которые было сказано выше.

По протоколу DHCP машина может получить несколько сотен настроек, в том числе такие, у которых имени нет, а есть только номер. Например, настройка 318. Какая? Какую придумаем, такая и будет. Итак, основные настройки, выдаваемые по DHCP:
Line 23: Line 51:
 * Маршрутизатор по умолчанию, вообще вся таблица маршрутизации
 * ...
Идея состоит в том, что получить её можно по DHCP, и испю она на разных уровнях.
 * Адрес DNS-сервера
 * Маршрутизатор по умолчанию и вся таблица маршрутизации
 * Если это сетевая загрузка, адрес файла, который надо закачать, адрес сервера, с которого надо его закачать, а потом ещё некоторые настройки. Идея состоит в том, что получить её можно по DHCP, и используется она на разных уровнях.
Line 27: Line 55:
Чтобы настроить авт. настр. сети в etcnet, достаточно поставить у интерфейса в options BOOTPROTO=dhcp. Чтобы сделать автоматическую настройку сети в etcnet, достаточно поставить у интерфейса в options BOOTPROTO=dhcp.
Line 29: Line 57:
Фича etcnet. Профили. === Профили в etcnet ===
Line 31: Line 59:
В вашем каталоге eth0 может лежать несколько файлов ...#имяпрофиля. Каждый такой файл может содерж. настройки к опр. профилю. Например, компьютер исп. дома и в офисе. Никаких доп. сущносетй за иск. имени файла, не нужно. У службы network есть не только стандвртные команды, но и доп. команды, которые позв. выбрать, какой профиль будет исп. при включении сети. В каталоге eth0 может лежать несколько файлов типа apv4adress#имяпрофиля. Каждый такой файл содержит настройки к определенному профилю. Например, компьютер используется дома и в офисе. Никаких дополнительных сущностей за исключением имени файла, не нужно. Более того, у службы network есть не только стандартные команды, но и дополнительные вида start with, которые позволяют выбрать, какой профиль будет использован при включении сети.

Теперь проиллюстрируем на практике сказанное выше относительно etcnet и профилей. Создадим настройки сети.
Для этого сделаем следующее:
 * Переходим в /etc/net/
 * Создаём файл options#mpgu.
Пишем:
{{{
ONBOOT=yes
DISABLED=no
BOOTPROTO=static
}}}
 * Напишем: {{{ mv ipv4address ipv4address\#mpgu }}}
 * Напишем здесь:
{{{
search mpgu.edu.ru
nameserver 194.190.241.162
}}}
 * Сделаем {{{ service network restartwith mpgu }}}

 Настройка сети завершена.
Line 39: Line 87:
|| 0 || 1 || 1 || 1 || || 1 || ConstantinYershow, ОльгаТочилкина || || || || 55 || 1 || 1 || 1 || || 1 || ConstantinYershow, ОльгаТочилкина, VsevolodKrishchenko || || ||

Автоматическая настройка сетевых интерфейсов

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

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

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

Теперь рассмотрим каталоги, где находятся настройки самого 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.

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

Теперь отредактируем файл /etc/net/ifaces/eth0/ipv4address, который по умолчанию отсутствует. Для указания адреса необходимо в ipv4address указать собственно адрес, а в ipv4route указать default gateway - default via 192.168.200.1. Если сделать  man etcnet , то можно увидеть множество других команд. Например, можно задать настройку для IP. После этого можно остановить сетевой сервис, сделав  service network stop , убедиться, что оба интерфейса выключены -  ip a , после этого можно запустить их: service network start. После этого, сделав  ip r, убедимся, что всё настроено.

Стоит отметить, что система /etc/net крайне мощная, она позволяет практически любую проблему решить при помощи изменений конфигурации. Например, в ней есть human-readable синтаксис (нечто похожее на ipfv), его можно выключить и работать непосредственно в синтаксисе iptables.

В частности, etcnet’ом уже год поддерживается freename - это технология переименования интерфейсов буквально на лету. Для чего это нужно? В какой-то момент, когда создатели GNU/Linux-дистрибутивов перешли не просто на 26-е ядро, а отказались от /dev’а, перейдя на udev, возникла следующая ситуация: модуль,загрузившийся первым, получает нулевой номер. Соответственно, тот, который загрузится вторым, получает первый номер. Если бы это делалось последовательно, они бы всегда загружались в правильном порядке, потому что сетевые карты на сетевой шине, как правило, нумеруются одинаково. Но поскольку два модуля загружаются одновременно, часто бывает так, что сегодня, скажем, у нас первой загрузилась нижняя карточка, а второй верхняя, а завтра --- наоборот. Существует несколько вариантов решения этой проблемы; в нашем случае механизм достаточно прост: при установке дистрибутива считываются MAC-адреса сетевых карт, формируется ftab, и потом всегда происходит переименование.

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

Теперь о недостатках: единственное, чего нет в etcnet --- простых примеров. Например, единственный способ узнать, что для организации NAT надо прописать одну строчку --- догадаться.

Настройка сервера DHCP

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

Как работает DHCP? Это достаточно сложный процесс, так как он предназначен даже для машин, у которых даже IP-адреса нет. Поэтому можно разложить на части процедуру настройки по DHCP. Итак, основной настройкой, которую можно выдать по DHCP, является IP-адрес. Существует протокол ARP, который по IP-адресу позволяет узнать MAC-адрес. В случае, когда мы знаем MAC и не знаем IP, возникает обратная ситуация. Посылается широковещательный (если нет адреса конкретного сервера) Ethernet-фрейм, который принимается компьютером, на котором установлена сетевая служба, которая раздаёт IP согласно таблице соответствий IP- и MAC-адресов. Протоколов, которые производят подобные преобразования, два: RARP и BOOTP. RARP находится между сетевым и интерфейсным уровнем; он предназначен для преобразования одного типа адресов в другой. Протокол BOOTP более комплексный, при помощи него кроме сетевого адреса можно получить имя файла, который надо скачать по tftp, чтобы его загрузить и выполнить. Но в обоих случаях должен существовать сервер, который принимает запросы и выдаёт необходимую информацию. Особенно cложной является ситуация, когда таких серверов два в одной локальной сети, и каждый думает по-своему. Таким образом, DHCP --- это комплекс настроек, который позволяет получить все сетевые настройки, про которые было сказано выше.

По протоколу DHCP машина может получить несколько сотен настроек, в том числе такие, у которых имени нет, а есть только номер. Например, настройка 318. Какая? Какую придумаем, такая и будет. Итак, основные настройки, выдаваемые по DHCP:

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

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

Профили в etcnet

В каталоге eth0 может лежать несколько файлов типа apv4adress#имяпрофиля. Каждый такой файл содержит настройки к определенному профилю. Например, компьютер используется дома и в офисе. Никаких дополнительных сущностей за исключением имени файла, не нужно. Более того, у службы network есть не только стандартные команды, но и дополнительные вида start with, которые позволяют выбрать, какой профиль будет использован при включении сети.

Теперь проиллюстрируем на практике сказанное выше относительно etcnet и профилей. Создадим настройки сети. Для этого сделаем следующее:

  • Переходим в /etc/net/
  • Создаём файл options#mpgu.

Пишем:

ONBOOT=yes
DISABLED=no
BOOTPROTO=static
  • Напишем:  mv ipv4address ipv4address\#mpgu 

  • Напишем здесь:

search mpgu.edu.ru
nameserver 194.190.241.162
  • Сделаем  service network restartwith mpgu  Настройка сети завершена.


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

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

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

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

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

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

Level

Maintainer

Start date

End date

55

1

1

1

1

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


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