Size: 15480
Comment:
|
Size: 15514
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 41: | Line 41: |
=== DHCP === | === Настройка сервера DHCP === |
Автоматическая настройка сетевых интерфейсов
Рассмотрим теперь, как работает система настройки сетевых адресов 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 |
|
|