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








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

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

Приемы работы в Ubuntu.
Глава 4: Мобильная Ubuntu

Оригинал: "Ubuntu Hacks: Chapter 4 - Mobile Ubuntu"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: сентябрь 2010 г.

Совет # 43: Настройте ноутбук для подключения в роуминге к вашей сети

Используйте программу laptop-net для конфигурирования настроек, которые будут меняться в случаях, когда вы подключаетесь к различным сетям. Сделайте настройки, которыми вы будете пользоваться на работе, и настройки, которыми вы будете пользоваться дома.

Когда вы используете ноутбук в качестве вашей основной системы, вы начинаете замечать, в частности, что большинство систем ориентированы на работу в качестве настольного компьютера. Прежде всего предполагается, что все ваши настройки не будут меняться независимо от того, где вы находитесь. Тем не менее, если вы возите ноутбук на работу и обратно, то знаете, что это не так. Мало того, что настройки сети часто другие, но и от того, где вы находитесь, часто зависят настройки принтеров, общие файлы и всякие другие системные особенности. Как пользователю ноутбука, вам бы было, безусловно, удобно, если бы существовал способ иметь группы настроек, которые бы применялись в зависимости от того, где вы находитесь. К счастью для вас обо всем этом и о многом другом позаботится пакет laptop-net.

В программе laptop-net есть целый ряд возможностей, но основное ее назначение — позволить вам запускать конкретные скрипты и применять конкретные настройки в зависимости от того, какой в настоящее время в интерфейсе используется IP адрес. Хотя у вас дома, на вашей работе, дома у ваших друзей могут использоваться вполне определенные диапазоны IP адресов, схемы их назначения, вероятно, могут слегка отличаться и, что более важно, в зависимости от того, в какой сети вы находитесь, вам будут назначаться различные IP адреса или диапазоны IP адресов. При наличии пакета laptop-net вы можете сказать: "Всякий раз, когда я имею этот IP адрес, следует запускать эти программы и применять эти настройки". Из-за особенностей пакета laptop-net все, что вы можете делать, ограничено исполнением скриптов. В этом разделе мы покажем как интегрировать пакет laptop-net в систему Ubuntu и расскажем вам о некоторых наиболее часто встречающихся схемах конфигурирования.

Установка пакета laptop-net

Первым шагом является установка пакета laptop-net. Используйте менеджер пакетов, которым вы предпочитаете пользоваться, и установите пакеты laptop-net и laptop-net-doc. Как только все будет установлено, вам нужно будет переконфигурировать пакет laptop-net:

$ sudo dpkg-reconfigure laptop-net

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

Как только будет запущена программа конфигурирования laptop-net, не забудьте ей указать, что собираетесь использовать DHCP в вашей сети и что у вас Ethernet адаптер, который не поддерживает режим MII, даже в случае, если он это делает.

Поскольку пакет laptop-net самостоятельно ничего не делает, когда поднимается какой-нибудь интерфейс, вам следует добавить в директорий /etc/dhcp3/dhclient-exit-hooks.d специальный скрипт. Скрипты в этом директории выполняются в том случае, когда в dhclient происходят изменения (в частности, когда работает скрипт /etc/dhcp3/dhclient-script и выполняется функция exit_with_hooks). Имя приведенного ниже файла должно быть /etc/dhcp3/dhclient-exit-hooks.d/laptop-net:

if [ $reason = 'BOUND' ]; then
   /usr/share/laptop-net/profile-change $interface
fi
if [ $reason = 'RELEASE' ]; then
   /usr/share/laptop-net/profile-change $interface down
fi

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

Мы заметили ошибку в нашем варианте пакета, в котором не создавался директорий /var/run/laptop-net/ и из-за этого не изменялись профили. Чтобы это исправить, мы добавили в файл /etc/init.d/laptop-net дополнительную строку. Найдите в этом файле следующий фрагмент:

case "${1}" in
    ("start")
        [ $# -eq 1 ] || usage
        clean_state
        start_ifd
    ;;

и измените его следующим образом:

case "${1}" in
    ("start")
        [ $# -eq 1 ] || usage
        mkdir -p /var/run/laptop-net
        clean_state
        start_ifd
    ;;

Теперь перезапустите пакет laptop-net:

$ sudo /etc/init.d/laptop-net restart

Конфигурирование профилей в пакете laptop-net

Пакет laptop-net выполняет большую часть работы по конфигурированию с помощью различных профилей, которые вам нужно настроить. Эти профили находятся в директории /etc/laptop-net/profiles и содержат сведения о конфигурации конкретных режимов и сетей, к которым вы можете подключиться. В директорий /etc/laptop-net/profiles, в конечном итоге, будет по одному поддиректорию для каждого нового профиля, который вы захотите сконфигурировать. В самом профиле, обрабатываемом пакетом laptop-net, могут быть ряд конфигурационных файлов и скриптов (подробности смотрите в /usr/share/laptop-net-doc/). Ниже приведен список основных файлов:

patterns

В этом файле находится список шаблонов адресов IP или состояний, с которыми выполняется сравнение. Если пакет laptop-net найдет совпадение с шаблоном, имеющемся в этом файле, то он выберет соответствующий профиля.

files.d/

В этом директории указывается подмножество ваших корневых файловых систем. Когда выбирается конкретный профиль, пакет laptop-net будет копировать все файлы, которые он здесь найдет, в соответствующий системный директорий, перезаписывая файлы, имеющие одинаковые имена. Например, если вы добавите файл в директорий files.d/etc/fstab, то когда этот профиль будет выбран, файл будет скопирован в системный директорий /etc/fstab.

after-select

Это необязательный шелл скрипт, который будет выполнен пакетом laptop-net после того, как будет выбран профиль. Если необходимы какие либо хитрые настройки или нужно перезапустить сервисы, вы можете поместить их в этот файл.

before-deselect

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

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

Конфигурирование профиля работы вне сети

Чтобы сконфигурировать профиль работы для случая, когда вы не подключены к сети, создайте в директории /etc/laptop-net/profiles новый директорий и перейдите в этот директорий:

greenfly@ubuntu:~$ sudo mkdir /etc/laptop-net/profiles/offline
greenfly@ubuntu:~$ cd /etc/laptop-net/profiles/offline
greenfly@ubuntu:/etc/laptop-net/profiles/offline$

Теперь создайте в этом директории файл и поместите в него следующие строки:

down
unknown

Затем там же создайте директорий files.d. Независимо от того, будете ли вы менять системные файлы для других профилей, будет хорошо, если вы сохраните исходные версии этих файлов в профиле, предназначенном для работы вне сети. Таким образом, всякий раз, когда вы находитесь в режиме работы без сети, все файлы будут восстановлены к их нормальному состоянию и вы не рискуете чего-нибудь потерять:

greenfly@ubuntu:/etc/laptop-net/profiles/offline$ sudo mkdir files.d

создайте файл с названием after-select и сделайте его исполняемым:

/etc/laptop-net/profiles/offline$ sudo touch after-select
/etc/laptop-net/profiles/offline$ sudo chmod a+x after-select

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

#!/bin/sh

echo "offline" > /tmp/laptop-net-state

Конфигурирование сетевого профиля для подключения к произвольной сети

Следующим шагом является создание "универсального" сетевого профиля, используемого по умолчанию. Этот профиль будет выполнять любые сетевые операции, которые нужно выполнить, когда у вас есть подключение к сети, но вы не знаете, к какой сети вы подключены. Прежде всего, создайте директорий профиля и назовите его zzz-default. Причиной того, что имя директория начинается с zzz в том, что пакет laptop-net просматривает профили последовательно. Поскольку этот профиль будет соответствовать любому IP-адресу, вам нужно будет сделать так, чтобы все ваши другие профили выбирались раньше, чем этот профиль:

greenfly@ubuntu:/etc/laptop-net/profiles/$ sudo mkdir zzz-default
greenfly@ubuntu:/etc/laptop-net/profiles/$ cd zzz-default
greenfly@ubuntu:/etc/laptop-net/profiles/zzz-default$

Теперь создайте аналогичный директорий files.d и файл patterns. Если в случае, когда вы подключаетесь к неизвестной сети, нужны какие-либо конфигурационные настройки, вы можете скопировать их в директорий files.d:

greenfly@ubuntu:/etc/laptop-net/profiles/zzz-default$ sudo mkdir files.d
greenfly@ubuntu:/etc/laptop-net/profiles/zzz-default$ sudo touch patterns

Запомните в файле patterns следующую строку:

*.*.*.*

Эта строка соответствует любому возможному IP адресу.

Последний шаг состоит в создании скрипта after-select, который будет запущен после того, как выбран этот профиль. Сохраните в нем для диагностики следующие строки:

#!/bin/sh

echo "zzz-default" > /tmp/laptop-net-state

Не забудьте запустить:

$ sudo chmod a+x after-select

для того, чтобы скрипт стал исполняемым.

Подсказка

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

Проверяем вашу конфигурацию

После того, как вы зададите новую конфигурацию, перезапустите пакет laptop-net:

$ sudo /etc/init.d/laptop-net restart

Теперь выберите System→Administration→Networking (Система → Администрирование → Сеть) и деактивируйте ваше Ethernet соединение (или беспроводное соединение, если вы используете его). И проверьте /tmp/laptop-net-stateм:

$ cat /tmp/laptop-net-state
offline

Затем активируйте подключение к сети и еще раз проверьте:

$ cat /tmp/laptop-net-state
zzz-default

В файле syslog вы также можете посмотреть, что делает пакет laptop-net. Пакет laptop-net будет оставлять в нем записи в случаях, когда меняется сетевая настройка, поэтому вы можете, воспользовавшись grep и указав laptop-net, просмотреть записи только пакета laptop-net:

$ grep laptop-net /var/log/syslog
...
Mar  4 16:12:56 ubuntu laptop-net: Selecting network profile "zzz-default" 
Mar  4 15:19:42 ubuntu laptop-net: Deselecting network profile "zzz-default" 
Mar  4 15:19:42 ubuntu laptop-net: Selecting network profile "offline" 
Mar  4 15:24:06 ubuntu laptop-net: Deselecting network profile "offline" 
Mar  4 15:24:07 ubuntu laptop-net: Selecting network profile "zzz-default"

Создаем персональные профили laptop-net

После того, как вы убедитесь, что пакет laptop-net функционирует, пришло время создать конкретные профили сетей, к которым вы часто подключаетесь. Предположим, у вас есть две сети, одна - дома и одна — на работе. Для простоты настройки вы можете просто скопировать профиль zzz-default и использовать его в качестве шаблона для создания новой конфигурации:

Конфигурируем файл patterns

Первое, что вам необходимо сделать, это изменить файл patterns в каждом из этих новых профилей. Предположим, что в домашней сети вам назначается IP адрес из сети 192.168.0.1, причем независимо от того, пользуетесь ли вы Ethernet подключением или беспроводной картой, а на вашей работе сеть всегда назначает вам адрес 10.1.1.50 для карты Ethernet и адрес 10.1.1.100 для беспроводной карты. Тогда вы можете отредактировать файл patterns в вашем домашнем профиле и запомнить в нем была только одну строчку:

192.168.0.*

Этот шаблон будет соответствовать любому IP адресу от 192.168.0.1 до 192.168.0.255. Затем вы редактируете файл patterns в вашем рабочем профиле и сделайте, чтобы в нем были следующие две строки:

10.1.1.50
10.1.1.100

Если можно, постарайтесь задавать шаблоны настолько строго, насколько это возможно. Так шаблон 192.168.0 .* будет соответствовать большому числу домашних сетей, поэтому если в с его помощью вы также сможете подключаться к сети в доме друга, вы можете завершить настройку вашего домашнего профиля. В идеале старайтесь настраивать сеть так, чтобы вам назначались один или два статических IP адреса.

Конфигурирование скрипта, выполняемого после выбора профиля

После того, как файл шаблонов будет создан, отредактируйте в домашнем и в рабочем профиле скрипты after-select. Измените строку диагностики:

echo "zzz-default" > /tmp/laptop-net-state

на строку:

echo "home" > /tmp/laptop-net-state

и на строку:

echo "work" > /tmp/laptop-net-state

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

Например, если вы хотите, чтобы принтер, используемый по умолчанию, был вашим домашним принтером, когда вы находитесь дома, и вашим рабочим принтером, когда вы на работе, сконфигурируйте настройки вашего принтера так, чтобы они годились для дома, а затем скопируйте файл /etc/cups/printers.conf в файл /etc/laptop-net/profiles/home/files.d/etc/cups/printers.conf (вам нужно будет создать директории etc и etc/cups в директории files.d). Затем сконфигурируйте настройки принтера так, чтобы они соответствовали вашему рабочему принтеру, и скопируйте файл /etc/cups/printers.conf в файл /etc/laptop-net/profiles/work/files.d/etc/cups/printers.conf. Наконец, в скриптах after-select для домашнего и рабочего профиля добавьте следующую строку:

/etc/init.d/cupsys restart

с тем, чтобы при выборе профиля настройки обновлялись.

Повторите этот процесс для любых других параметров, которые требуется изменять. Скопируйте соответствующие настройки в соответствующие директории внутри директория files.d, и если требуется перезапуск сервиса, добавьте соответствующую команду в конец скрипта after-select.

Дополнительную информацию о возможностях конфигурирования пакета laptop-net смотрите в документации, которая установлена в директории /usr/share/doc/laptop-net-doc/.


Назад Оглавление Вперед