Различия между версиями 1 и 28 (по 27 версиям)
Версия 1 от 2008-07-03 22:03:13
Размер: 8618
Редактор: eSyr
Комментарий:
Версия 28 от 2008-07-12 17:10:21
Размер: 15774
Редактор: VsevolodKrishchenko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
== Настройка сетевых интерфейсов и DHCP == == Автоматическая настройка сетевых интерфейсов ==
Строка 3: Строка 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}}}.
Строка 5: Строка 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}}}. Обычно изменять в ней что-либо нет необходимости.
Строка 7: Строка 20:
(про переименование интерфейсов) Рассмотрим подробнее настройки сетевого интерфейса на примере каталога {{{/etc/net/ifaces/eth0}}}. Во-первых, в нем уже имеется файл {{{options}}}, где указывается, включен ли интерфейс и получает ли он адрес автоматически:
{{{
$ cat /etc/net/ifaces/eth0/options
BOOTPROTO=dhcp-ipv4ll
DISABLED=no
}}}
Строка 9: Строка 27:
Помимо тог, чтоetcnet хорошо документирован, он содержит дикое колоичество примеров, можно сказать, например, rpm -ql etcnet С помощью опции {{{BOOTPROTО}}} можно управлять механизмом получения IP-адресов. Обычно указано, что {{{BOOTPROTO=dhcp}}}. Для статической настройки необходимо указать {{{BOOTPROTО=static}}}. Если указано {{{BOOTPROTO=ipv4ll}}}, то для машины будет выбран не использующийся в сети IP-адрес (обычно это означает, что интерфейс не будет нормально функционировать). Возможны и комбинированные значения: например,если написать {{{BOOTPROTO=dhcp–ipv4ll}}}, то в случае, если по протоколу DHCP настройки получить не удастся, они будут получены по ipv4ll сетевой службой Avahi.
Строка 11: Строка 29:
Теперь о недстатках: единственное, чего нет в etcnet --- нет простых примеров. Например, для того, чтобы догадаться, что для организации NAT над прописать одну строчку, надо догадаться. Отметим, что файл {{{/etc/resolv.conf}}} с адресами серверов DNS не относится к etcnet. Однако, в etcnet существует возможность изменять данный файл в зависимости от используемого сетевого интерфейса. Обычно в этом нет потребности, потому что если интерфейс настраивается по протоколу DHCP, то DHCP-клиент автоматически запишет полученые адреса DNS-серверов, а если в системе единственный интерфейс и он настраивается статически, то можно отредактировать файл {{{/etc/resolv.conf}}} и вручную.
Строка 13: Строка 31:
=== DHCP === Указав {{{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
}}}
Строка 15: Строка 38:
Мы возвращаемся к началу нашего сегодняшнего занятия, а именно к протоколу уровня приложений. Откуда вообще всё это возникло. Во многих ОС есть кнопочка "настроить всё автоматически". Лектор очень не любит такую кнопочку, потоу что не знает, что такое всё, и что такое автоматически. Но протсо опльзователь некоторый может не очень хорошо разбираться в сети, но у него моожет возникнуть желания воткнуться и подклюбчиться к сети, крое того, у администратора нет желания раздавать полотна с указаниями, где что прописать, более того, пользователя это и не касается. Для решения всех этих проблем есть служба DHCP. По команде {{{man etcnet}}} можно увидеть все настройки etcnet. После сделанных изменений можно остановить сетевой сервис, выполнив команду {{{ 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
}}}
Строка 17: Строка 45:
Как работает DHCP? Довольно хитро, так как она предназначена даже для машин, у которых даже ip нет, поэтому можно разложить на части процедуру настройки по DHCP. Ккие настр. можно выдать по DHCP:
 * IP-адрес. Есть протоколо ARP, который по ip позволяет узнать MAC. В случае, когда есть MAC и нет IP, взникает ситуация обратная. Посылается широковещаетльный Eth-фрейм, который принимается компьютером, на этом компьютере должна быть уст. стевая служба, которая разд. ip, и, обращаясь к таблице соотв. ip и mac, и по этому маку он выдаёт ip. Таких протокоолов, которые преобр. делают, штуки две: RARP и BOOTP. И если rarp предназначен только для одной задачи, то bootp блее комплексный, по нему кроме сетевого адреса можно получить имя файла, который надо скачать по tftp, чтобы его загрузить и выполнить. Но в обоих случаях должен быть сервер, колторый это разруливает и это выдаёт.
Стоит отметить, что система etcnet крайне мощная, она позволяет практически любую проблему решить при помощи изменения своей конфигурации. Например, в ней есть human-readable синтаксис (нечто похожее на ipfw), его можно выключить и работать непосредственно в синтаксисе iptables.
Строка 20: Строка 47:
Про DHCP. Это комплексный протокол, который позволяет получать сотни нстроек В частности, 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:
Строка 23: Строка 63:
 * Маршрутизатор по умолчанию, вообще вся таблица маршрутизации
 * ...
Идея состоит в том, что получить её можно по DHCP, и испю она на разных уровнях.
 * Адрес DNS-сервера
 * Маршрутизатор по умолчанию и вся таблица маршрутизации
 * Если это сетевая загрузка, адрес файла, который надо закачать, адрес сервера, с которого надо его закачать, а потом ещё некоторые настройки. Идея состоит в том, что получить её можно по DHCP, и используется она на разных уровнях.
Строка 27: Строка 67:
Чтобы настроить авт. настр. сети в etcnet, достаточно поставить у интерфейса в options BOOTPROTO=dhcp. Чтобы сделать автоматическую настройку сети в etcnet, достаточно поставить у интерфейса в options BOOTPROTO=dhcp.
Строка 29: Строка 69:
Фича etcnet. Профили. === Профили в etcnet ===
Строка 31: Строка 71:
В вашем каталоге 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 }}}

 Настройка сети завершена.
Строка 39: Строка 99:
|| 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.

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

Указав 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

По команде man etcnet можно увидеть все настройки etcnet. После сделанных изменений можно остановить сетевой сервис, выполнив команду  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 крайне мощная, она позволяет практически любую проблему решить при помощи изменения своей конфигурации. Например, в ней есть human-readable синтаксис (нечто похожее на ipfw), его можно выключить и работать непосредственно в синтаксисе 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 (последним исправлял пользователь VsevolodKrishchenko 2008-10-04 10:55:19)