воскресенье, 30 мая 2010 г.

Недостатки инициализации сети в CentOS

На днях пытался настроить сеть в CentOS по образу и подобию того, как я делал это ранее в статьях Два VPN-подключения к Уфанет и VPN-подключение к Уфанет и локальные ресурсы через Ethernet. Попробовал и понял: приличных средств для реализации такой настройки нет.

Для начала - у меня на компьютере имеются два интерфейса Ethernet, определились они под именами eth0 и eth1, как и положено. Только вот мне вдруг невтерпёж захотелось их поменять именами. Сказано - сделано, в RedHat и им подобным (включая CentOS) для привязки интерфейса к MAC-адресу кошерно использовать не udevd, а опцию HWADDR. Прописал необходимое значение этой опции в файлах /etc/sysconfig/network-scripts/ifcfg-eth0 и /etc/sysconfig/network-scripts/ifcfg-eth1. Попытки применить настройки скриптами инициализации сети и udev ни к чем не привели, поэтому пришлось перезагрузиться. После перезагрузки интерфейсы получили необходимые имена.

К слову, смена MAC-адреса на сетевой карте осуществляется с помощью опции MACADDR, но совместное использование HWADDR и MACADDR не допускается, т.к. может привести к непредсказуемым последствиям. То ли дело в Debian, где привязки имён интерфейсов к MAC-адресам осуществляются автоматически с помощью udev, а для смены привязок достаточно отредактировать уже имеющиеся правила. Для смены MAC-адреса в файле /etc/network/interfaces можно прописать опцию hwaddress ether XX:XX:XX:XX:XX:XX, а для надёжности, чтобы udevd не присвоил интерфейсу с этим MAC-адресом другое имя интерфейса, скопипастить одно правило udevd, прописав в него новый MAC-адрес, так что интерфейс с этими MAC-адресами будет иметь одно и то же имя.

Далее, хотел отключить прописывание маршрута по умолчанию, полученного по DHCP с помощью опции DHCLIENT_IGNORE_GATEWAY=yes. Игнорировать маршрут от DHCP? Отвечаем "да". Как бы не так. Я не сразу понял, почему оно не работает, а не работает оно из-за бага: /sbin/dhclient-script gets DHCLIENT_IGNORE_GATEWAY test backwards, который зарепорчен аж 16 февраля 2010 года, да ещё и актуальной в тот момент версией CentOS была 5.4, а я обнаружил этот баг в 5.5. Может не хотят исправлять ради сохранения совместимости с Enterprise-системой от Red Hat? Это, дескать, не баг, а фича.

Далее. Для настройки собственных маршрутов и правил маршрутизации можно создавать файлы /etc/sysconfig/network-scripts/route-* и /etc/sysconfig/network-scripts/rule-*. При чём для файла маршрутов есть два формата: устаревший и актуальный. Устаревшим считается формат, в котором можно было прописывать команды ip route, а новым - жалкие пронумерованные по порядку переменные ADDRESSn, NETMASKn, GATEWAYn. Захотел в новом формате удалить или закомментировать какой-нибудь маршрут из середины, как перед тобой встаёт выбор: либо все следующие маршруты перестанут работать, либо тебе нужно перенумеровать все оставшиеся маршруты так, чтобы их нумерация не прерывалась и шла строго по порядку.

Казалось бы - наплюй на этот новый формат, да воспользуйся вменяемым старым. Но нет! Я хотел написать нечто такое:
81.30.176.0/20 via $GATEWAY dev $DEVICE src $IPADDR table main

а в правила - нечто такое:
from $IPADDR table lunlim

думая, что переменные $GATEWAY, $IPADDR, $DEVICE должны быть определены и взяты либо из файла /etc/sysconfig/network-scripts/ifcfg-eth0, либо получены по DHCP. Нет! Этих переменных там нет!

Ну что я могу сказать? Это Enterprise, детка. Для настройки маршрутов используются графические конфигурялки, баги признают фичами, а в скриптах не допускается самодеятельность, дабы не ввести в заблуждение железобетонную логику системы. Всё как у военных - строго по уставу, не важно что квадратное приходится катать, а круглое таскать.

Может среди прочитавших эту заметку попадутся знатоки Red Hat, CentOS и Fedora? Люди, будьте добры, подскажите, можно ли сделать то, что я хочу, какими-нибудь простыми средствами?

Видимо придётся воспользоваться для настройки маршрутов всё теми-же нестандартными скриптами dhcp-клиента и скриптами /etc/ppp/ip-up.local и /etc/ppp/ip-down.loclal.

Источники:
1. Interface Configuration Files
2. Files in /etc/sysconfig
3. Как избежать неправильной нумерации сетевых карт в системах Red Hat Enterprise Linux с несколькими сетевыми интерфейсами?
4. Как настроить дополнительные маршруты в Red Hat Enterprise Linux?
5. Настройка сети в Linux через конфиг-файлы, ч.1

Дополнение от 30 мая 2010.

При попытке настроить нестандартный скрипт dhclient наступил на selinux, ударивший меня в лоб: он запрещал dhclient'у обращаться к каким-то левым, по мнению selinux, файлам. Разбираться с политиками selinux я не стал и просто отключил его. dhclient после этого сработал нормально. Прописал все настройки pptp, скрипты для добавления и удаления маршрутов. Попытался поднять соединение и обломился: про pptp-клиент я-то забыл. Ну, думаю, сейчас из репов поставлю и всё нормально. Поискал в репах, а pptp-клиента нет! Вот чёрт, опять Enterprise...

12 комментариев:

lvccgd комментирует...

после работы в CentOS по настоящему начинаеш любить Debian. Понимаю пользователей Slackware или ArchLinux, но пользователей аля RH понять не могу. хотя на вкус и цвет товраща нет.

morbo комментирует...

>пользователей аля RH понять не могу

Я лично захотел попробовать CentOS потому, что теоретически он должен быть хорош для серверов: ядро со стабильным ядерным API, бэкпортируемые обновления ядра на весь период поддержки (а значит - поддержка свежего оборудования), обновления пакетов с закрытием дыр без смены версии программы на весь период поддержки, наконец - долгая поддержка.

Минусы - похоже, что нет официальных образов DVD, малое количество программ в репозитории, отсутствие мягких зависимостей, и вот эта вот дребедень с сетью.

Вдобавок наткнулся на отсутствие рекомендуемых зависимостей. В инсталляторе отказался от установки рабочего стола, а потом поставил Gnome yum'ом из репозитория. Gnome'у понадобилось доставить ещё несколько пакетов, прежде чем он наконец запустился: пакет со шрифтами, X-сервер и Session Manager от Gnome'а. Это, конечно, специально так сделано: на сервере терминалов шрифты и X-сервер не обязательны. После всего этого Gnome запустился, но не отображались некоторые пиктограммы - видимо нужно ещё какой-то пакет доставить.

После всего этого дальше пробовать CentOS мне резко расхотелось.

Gasenvagen комментирует...

Добрый день!

А можно с вами договориться на счет обмена ссылками?
у меня совсем молодой админский сайтик.

хочется привлечь читателей и писателей =)

morbo комментирует...

>А можно с вами договориться на счет обмена ссылками?

Если на вашем сайте встретится интересный мне материал и я им воспользуюсь, я обязательно на него сошлюсь.

>хочется привлечь читателей и писателей =)

Да, но зачем? Вы собираетесь зарабатывать на нём деньги? Тогда я вам в этом не помощник.

Gasenvagen комментирует...

Я хочу привлечь людей, которые заинтересованы в том, что я публикую, потому как писать хочется верить в то, что пишу я это не только для себя и что это будет кому-то полезно.

пока с трудом представляю как привлечь их =)

Gasenvagen комментирует...

в догонку адрес =)

http://gas-station.ru

я вообще начинающий в этом деле... и масса сомнений и опасений.

и дизайн не устраивает и структура пока не продумана. стараюсь наполнять по мере появления свободного времени.

morbo комментирует...

Определитесь с целью. Вы хотите поделиться с людьми чем-то полезным или привлечь внимание к своей персоне или не хотите потерять свои наработки?

Я пишу о том, о чём мне хотелось бы узнать самому, но чего я не нашёл в сети. Или пишу об интересных случаях на работе. Или в поисках чего-то, например нужной мне программы, в конце поиска делаю краткое резюме с результатами.

Т.о. в первую очередь я пишу для себя, но публикую на blogger.com, чтобы не потерять свои наработки, чтобы они были доступны мне из любого места. Храня статьи на своём компьютере, я бы не всегда смог бы получить к ним доступ и не был бы уверен в том, что в случае какой-нибудь поломки компьютера я бы их не потерял.

Далее - мои заметки являются и информацией обо мне для потенциальных работодателей: посетив блог они смогут оценить общий уровень профессионализма. К сожалению, он в большинстве случаев оставляет желать лучшего.

И уж в последнюю очередь я пишу для того, чтобы это кому-то пригодилось. Хотя, конечно, бывает приятно взглянуть на растущую посещаемость.

Gasenvagen комментирует...

Цель проста - создать полезный ресурс, содержащий ту информацию, которую приходилось долго искать самому или с которой приходилось ковыряться сутками чтобы что-то из этого получилось.

Своего рода справочник.

А привлечение людей для общения больше - всегда приятно обсудить те или иные вещи со специалистами в этой области.

morbo комментирует...

>в догонку адрес =)

>http://gas-station.ru

Весьма типичный сайт. Много я видел подобных сайтов-однодневок. Человеку первое время прикольно ковыряться в настройках апача, ставить разные CMS, прикручивать nginx или lighttpd в качестве реверс-прокси, тюнить MySQL. Энтузиазм кипит, самомнение растёт. Через некоторое время он решает купить домен и хостинг, не имея интересных и уникальных материалов для размещения.

В первые недели рыщет по всему инету в поисках интересного и размещает это на своём сайте. В лучшем случае переписывает мелкие заметки сам, в худшем - цельнотянет чужие статьи.

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

По-настоящему задумываться о собственном сайте стоит тогда, когда у вас имеется большое количество уникальных материалов. Некоторые люди делают шикарные переводы иностранных материалов (например, Иван Пёсин или Михаил Сгибнев), некоторые - очень хорошо разбираются в какой-то специальной области (например, в Common Lisp'е - Андрей Москвитин) и т.д. Их читать интересно, они заслуживают своего сайта. А очередные "специалисты" широкого профиля, как правило, никому не интересны, т.к. теряются среди себе подобных. Например, я себя отношу именно к этой категории.

Gasenvagen комментирует...

Не знаю как вам, но мне тырить чужие статьи как-то нет необходимости.

morbo комментирует...

>Цель проста - создать полезный ресурс, содержащий ту информацию, которую приходилось долго искать самому или с которой приходилось ковыряться сутками чтобы что-то из этого получилось.

>Своего рода справочник.

Да, но "зачэм"? Ведь есть же уже opennet.ru!

>А привлечение людей для общения больше - всегда приятно обсудить те или иные вещи со специалистами в этой области.

Да, но "зачэм" же? Ведь есть же уже и анонимный разум с экспертами по всему на linux.org.ru и горстка хомячков, пыжащихся перед друг другом на сайте Я умный^W^W habrahabr.ru.

morbo комментирует...

>Не знаю как вам, но мне тырить чужие статьи как-то нет необходимости.

Я рад за вас. Я не обвинял вас в воровстве, а лишь описал типичную картину.