Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Linux образца 2007 года на домашнем компьютере

(С) В.А.Костромин, 7 марта 2008 г.

ASP Linux 12 Carbon. Часть 4. Еще одна попытка настроить сеть

Предыдущая заметка

Пока я собирался купить и установить новую сетевую карту, пришел очередной выпуск журнала LinuxFormat и на прилагаемом диске я нашел версию 10.3 дистрибутива openSUSE, которую и решил опробовать на своей аппаратной конфигурации. Однако результат в части выхода в сеть получился примерно такой же, как и на ASPLinux 12 (вы можете прочитать об этом в отдельной заметке).

Между тем мое общение с Л.Кантером продолжалось, узнав о моих очередных неудачах, он написал мне следующее:

В общем, у меня есть глубокое ощущение, что пакеты не уходят с десктопа потому, что у него стоит маршрут по умолчанию на него же. Такакя настройка в корне неверна. Default route должен быть установлен на тот узел, где действительно есть шлюз во внешние сети. При этом, обратите внимание, на том узле, где действительно есть шлюз, default route будет направлен не на его же интерфейс во внутренней сети, а на ближайший узел во внешней сети! Иначе, если шлюз и интерфейс совпадают, это приведет к зацикливанию пакетов, что похоже у вас и наблюдается. А зацикливание происходит потому, что в ядре Linux включен ICMP redirect, который та же XP вообще не поддерживает. Его можно выключить командами
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
и
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
В общем уберите этот default route через утилиту настройки сети, если руками не получается, и/или запишите нули в эти два файла в /proc, и должно полегчать. ---
С уважением,
Леонид Кантер
Начальник отдела разработки дистрибутива ASPLinux
Я решил, что буду проверять способы решения проблем по одной и для начала задам разные адреса для компьютера и шлюза.

Переустанавливаю систему еще раз. Новая сетевая карта определилась уже на этапе инсталляции (старая, естественно, снова не определилась) и программа инсталляции предложила настроить сеть (рис.35).


Рис.35. (увеличить)

Вначале я попытался оставить поле "Шлюз" незаполненным, задал только адреса серверов DNS (рис.35). Это вызвало появление сообщения об ошибке (рис.36).


Рис.36. (увеличить)

Вернулся и прописал адрес компьютера как 192.168.1.3, а адрес шлюза - 192.168.1.1. На этапе выбора пакетов убрал xsane (нет сканера), добавил установку mplayer, веб-сервера и сервера Samba, еще что-то добавлял и убирал, думаю, что для читателя это несущественно.

Проверка зависимостей выбранных пакетов шла довольно долго, минут 5. Установка пакетов (включая форматирование разделов) началась в 19:45, закончилась - в 20:38, то есть только собственно установка программ на жесткий диск заняла 53 минуты. За это время было установлено 1000 пакетов (что-то плохо я отбраковал ненужные мне пакеты, за что и поплатился долгим ожиданием на этапе установки пакетов).

Установка загрузчика, поздравление, перезагрузка и появляется экран первоначальной настройки. Соглашаюсь с лицензионным соглашением, межсетевой экран отключаю, SELinux тоже, создаю простого пользователя, проверяю звук (работает только встроенная карта) и я снова в ASP Linux 12 Carbon!

Запускаю Firefox и задаю URL своего сайта. УРА! На сей раз сразу открывается знакомая страница. По-видимому, проблема состояла как раз в совпадении IP-адресов компьютера и шлюза. А я из-за этого забраковал несколько дистрибутивов! Придется еще раз вернуться к рассмотрению каждого из них, чтобы потом попытаться дать их сравнительный анализ. И теперь продолжу рассмотрение ASPLinux 12 Carbon с точки зрения того, как он удовлетворяет мои потребности.

Снова вернусь к настройке сети. Теперь у меня два сетевых интерфейса, надо оживить старую плату и соединить через нее свой десктоп с ноутбуком. Подключаю к компьютеру флешку, на которой у меня сохранен драйвер hp100.ko. К моему сожалению, автоматически флешка не определяется. Приходится запустить терминал и смонтировать ее "вручную" (от имени root-а). После этого копирую модуль hp100.ko в каталог /lib/modules/2.6.22.9-91.0.120asp/kernel/drivers/net/ и запускаю команду /sbin/depmod -a. Но результат отрицательный - пинг на ноутбук не идет, обратно - тоже.

Состояние с настройками сети в этот момент предсталено на рисунках 37 и 38.


Рис.37. (увеличить)


Рис.38.

Следуя советам Л.Кантера выполняю команду
/sbin/route del default
Перезапускаю компьютер (причем флешку из разъема не вынимал). Пока идет процесс перезагрузки, соображаю, что сделал это совершенно напрасно, надо было лучше заняться настройками сети и иницировать (активировать) вторую плату.

Так оно и оказывается. Запускаю настройку сети. Создаю новое устройство, активирую. Вроде бы все получается нормально. Появляется предложение либо перезапустить сетевые службы, либо перезагрузить компьютер. Перезагружаюсь.

Среди потока сообщений, появляющихся на экране во время загрузки системы, замечаю такое: "Определяется информация IP для eth1", причем в этот момент имеет место длительная задержка процесса. Как оказалось полсе завершения загрузки, IP-адрес у интерфейса eth1 сбит - то есть вообще отсутствует (это показал вывод команды /sbin/ifconfig).

Поднимаю интерфейс командой
/sbin/ifconfig eth1 192.168.1.4 up
после чего снова выполняю команду
/sbin/route del default
Эффект нулевой - ноутбук не пингуется. К тому же и доступ в Интернет пропал. Снова добавляю маршрут по умолчанию:
/sbin/route add default gw 192.168.1.1 eth0
Связь с Интернет восстановилась.
Выполняю еще один совет Л.Кантера, выполняю команды
echo 0 /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 /proc/sys/net/ipv4/conf/all/send_redirects 
что должно отключить ICMP redirect в ядре Линукс. В ответ на команду
ping 192.168.1.2
получаю все то же - пинги не идут. И только выполнив команду
/sbin/route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0
я добился нужного результата. При это таблица маршрутизации приняла следующий вид:


Рис.40.

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

Уже в процессе загрузки вижу, что снова "слетела" настройка интерфейса eth1, потому что снова возникла задержка при появлении сообщения "Определяется информация IP для eth1". Как показал вывод команды /sbin/ifconfig, действительно у eth1 отсутствует IP-адрес. Пришлось снова выполнять команду
/sbin/ifconfig eth1 192.168.1.4 up

Но таблица маршрутизации осталась нетронутой. И компьютеры видят друг друга. Теперь запускаю утилиту настройки сети (Главное меню - Система - Сеть) и вижу странную картину (рис. 41):


Рис.41.

Ну ладно, устройство, помеченное как .bak, возможно и не очень влияет на работу сети. Хуже то, что для этого устройства указано получение адреса по DHCP (рис.42):


Рис.42.

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

На сей раз интерфейс eth1 поднялся с заданным адресом 192.168.1.4, зато таблица маршрутизации сбита - для сети 192.168.1.0 прописны два маршрута - и на eth0 (в первой строке) и на eth1 (во второй строке). Естествено, что пинг снова не идет, ибо eth0 у меня смотрит в Интернет, а не на ноутбук. Приходится снова использовать консольные команды (рис.43)


Рис.43.

Обратите, кстати внимание на то, как прописан маршрут для сети 169.254.0.0. Я его нигде не задавал, а он все время присутствует и, причем, указывает то на eth0, то на eth1. Короче, живет своей, непонятной жизнью.

В общем, мне, видимо, придется выполнять команды, изображенные на рис. 43, при каждом запуске компьютера. Ну ладно, с этим можно мириться (если со временм не найду другого решения), а пока закончу эксперименты с настрйкой сети и буду знакомиться собственно с системой (или дистрибутивом) ASPLinux 12 Carnbon.

Для начала отмечу, что в процессе неоднократных перезагрузок системы я не отключал свою флешку. Оказалось, что при загрузке системы с подключенной флешкой на рабочем столе появляется таки значок "Съемный носитель". Но при попытке смонтировать флешку через контекстное меню этого значка появляется сообщение, изображенное на рис. 44:


Рис.44.

Так что все равно приходится монтировать флешку обычной командой mount из окна терминала, запущенного от имени root-а. Неудобно..

Но исправить работу системы с флеш-диском оказывается несложно, достаточно удалить пакет kdeutils-addons (смотри вторую заметку об ASPLinux 12). После этого при подключении флеш-диска к USB-разъему на рабочем столе появляется значок, изображенный на рис.24, и открывается окно с предложением открыть содержимое диска в новом окне. Можно отказаться здесь что-либо делать, а диск смонтировать с помощью контекстного меню. Размонтирование тоже производится из того же меню, в котором имеется и пункт "Безопасно извлечь". Кстати сказать, в этом случае я получил возможность производить и запись на этот диск от обычного пользователя.

Следующий момент, который меня достаточно сильно раздражал, когда я начал набирать текст этой заметки с помощью редактора Kate, - это переключатель раскладки клавиатуры. Во второй заметке этой серии я писал, что задействовал для переключения раскладок Центр управления KDE. Здесь я применил другой подход. Дело в том, что без каких либо дополнительных манипуляций с моей стороны еще в процессе установки я обнаружил, что переключение раскладок осуществляется двумя клавишами Shift. Я же давно привык пользоваться для этих целей комбинацией Alt-LeftShift. Поскольку переключатель раскладок KDE я не задействовал, это означало, что работает переключатель от Xorg. Поэтому я решил сменить комбинацию клавиш для переключения раскладки путем редактирования файла /etc/X11/xopg.conf. Поменял в этом файле строку
Option	"XkbdOptions" "grp:shifts_toggle,grp_led:scroll"
на строку
Option	"XkbdOptions" "grp:alt_shift_toggle,grp_led:scroll"
После этого перезапустил X-ы и получил желаемый результат - теперь мои пальцы автоматически попадают на привычную комбинацию Alt-Shift, которая дает нужный эффект.

----------------------

Следующая заметка